1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- #include "task_communication.h"
- // 定义测试函数
- void test_isPointInPolygon() {
- // 定义多边形的经纬度坐标集合
- double polygonLat[] = {34.34934, 34.25916, 34.36221, 34.21619};
- double polygonLng[] = {108.84569, 108.80257, 109.03829, 109.05611};
- // 测试点在多边形内部的情况
- double point1Lat = 34.33312;
- double point1Lng = 108.8531;
-
- /* 尝试获取互斥量,等待无限长时间 */
- if(osMutexAcquire(s_messageDate_locationHandle, osWaitForever) == osOK)
- {
- /* 安全地访问s_rs485RecDate结构体 */
- point1Lat = s_messageDate.latitude / 100000;
- point1Lng = s_messageDate.longitude / 100000;
-
- /* 访问完成,释放互斥量 */
- osMutexRelease(s_messageDate_locationHandle);
- }
-
- bool result1 = isPointInPolygon(point1Lat, point1Lng, polygonLat, polygonLng);
- printf("Test case 1: Point (%f, %f) is%s inside the polygon.\n", point1Lat, point1Lng, result1 ? "" : " not");
- }
- /* USER CODE BEGIN Header_Task_communication */
- /**
- * @brief Function implementing the communication thread.
- * @param argument: Not used
- * @retval None
- */
- /* USER CODE END Header_Task_communication */
- void task_communication_content(void)
- {
- unsigned long times = 0;
-
- LED0_TOGGLE(); // 灯翻转
- EC800_FTP_OTA_Upgrade(); // OTA升级
- // 固件升级时不做其他操作,保证固件更新的完成
- if(s_ec800Date.hardwareUpdate != 0){
- HAL_NVIC_DisableIRQ(USART3_IRQn); // 避免被中斷
- // HAL_NVIC_DisableIRQ(USART1_IRQn);
- vTaskSuspend(ec800_dataUploaHandle); // 挂起任务
-
- osDelay(200);
- }else{
- // test_isPointInPolygon(); // 电子围栏
- //
- rs485_poll_sendReceive(); // 与车进行通信
- osDelay(1000);
- }
- times = getRunTimeCounterValue();
- printf("test_isPointInPolygon:%ld\r\n", times);
-
- }
|