#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); }