task_communication(1618).c 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. #include "task_communication.h"
  2. // 定义测试函数
  3. void test_isPointInPolygon() {
  4. // 定义多边形的经纬度坐标集合
  5. double polygonLat[] = {34.34934, 34.25916, 34.36221, 34.21619};
  6. double polygonLng[] = {108.84569, 108.80257, 109.03829, 109.05611};
  7. // 测试点在多边形内部的情况
  8. double point1Lat = 34.33312;
  9. double point1Lng = 108.8531;
  10. /* 尝试获取互斥量,等待无限长时间 */
  11. if(osMutexAcquire(s_messageDate_locationHandle, osWaitForever) == osOK)
  12. {
  13. /* 安全地访问s_rs485RecDate结构体 */
  14. point1Lat = s_messageDate.latitude / 100000;
  15. point1Lng = s_messageDate.longitude / 100000;
  16. /* 访问完成,释放互斥量 */
  17. osMutexRelease(s_messageDate_locationHandle);
  18. }
  19. bool result1 = isPointInPolygon(point1Lat, point1Lng, polygonLat, polygonLng);
  20. printf("Test case 1: Point (%f, %f) is%s inside the polygon.\n", point1Lat, point1Lng, result1 ? "" : " not");
  21. }
  22. /* USER CODE BEGIN Header_Task_communication */
  23. /**
  24. * @brief Function implementing the communication thread.
  25. * @param argument: Not used
  26. * @retval None
  27. */
  28. /* USER CODE END Header_Task_communication */
  29. void task_communication_content(void)
  30. {
  31. // unsigned long times = 0;
  32. LED0_TOGGLE(); // 灯翻转
  33. EC800_FTP_OTA_Upgrade(); // OTA升级
  34. // 固件升级时不做其他操作,保证固件更新的完成
  35. if(s_ec800Date.hardwareUpdate != 0){
  36. osDelay(200);
  37. }else{
  38. test_isPointInPolygon(); // 电子围栏
  39. rs485_poll_sendReceive(); // 与车进行通信
  40. osDelay(1000);
  41. }
  42. // times = getRunTimeCounterValue();
  43. // printf("test_isPointInPolygon:%ld\r\n", times);
  44. }