void App_gaodu_kongzhi(void *p_arg) { while (TRUE) { OSFlagPend(Sem_F,(OS_FLAGS)3,OS_FLAG_WAIT_SET_ALL,0,&err);//请求信号量集 OSMutexPend(Mutex,0,&err);//获取互斥 OS_Printf("控制高度:调节高低\n" ); OSFlagPost(Sem_F,(OS_FLAGS)2,OS_FLAG_CLR,&err); //清除信号量响应标记 OSMutexPost(Mutex);//释放互斥 OSTimeDlyHMSM(0,0,1,0); } } 详细解释代码及函数意义
时间: 2024-03-29 19:40:22 浏览: 63
这段代码是一个任务函数,用于控制高度。函数的参数是一个指向 void 的指针,因为在调用函数时不需要传递任何参数。函数内部使用了一个永远为真的 while 循环,表示这个函数将一直运行下去。
在 while 循环中,首先调用了 OSFlagPend 函数来请求一个信号量集。该函数的第一个参数是信号量集的指针,第二个参数是要等待的标志位,这里是 3,表示需要等待标志位 1 和 2 同时被设置。第三个参数是等待标志位被全部设置之后的行为,这里是等待所有标志位都被设置后再继续执行。第四个参数是等待的超时时间,这里是 0,表示无限等待。最后一个参数是指向错误代码的指针,用于接收函数的返回值。
如果 OSFlagPend 函数成功返回,即表示信号量集中的标志位已经被设置,那么就会调用 OSMutexPend 函数来获取一个互斥量。如果获取互斥量成功,就会打印一条消息,表示正在控制高度进行高低调节。
接着,调用 OSFlagPost 函数来清除信号量响应标记,表示已经处理完了这个信号量集。接下来调用 OSMutexPost 函数来释放互斥量,表示这个任务已经完成了对共享资源的访问。最后调用 OSTimeDlyHMSM 函数来使任务挂起一段时间,这里是 1 秒钟。
这个任务函数的作用是在控制高度的过程中,等待接收信号量集中的标志位,获取互斥量后进行高低调节,最后释放互斥量并挂起一段时间。
相关问题
#include <Winsock2.h> #include <includes.h> #pragma comment(lib, "ws2_32.lib") ////////////////////////////////////////////////////////// OS_FLAG_GRP *Sem_F;//定义信号量集 INT8U err; //定义一个错误信息 int gaodu=100; void * msgPtr[5]; OS_EVENT *Semp; //消息队列 OS_EVENT *Sempyx; //邮箱 OS_MEM *intBuffer;//定义内存控制块指针 INT8U intPart[50][64];//划分分区及内存块 INT8U *intBlkPtr;//定义指针 void WinSocketServer( ) { WORD wVersionRequested; WSADATA wsaData; //int err1; int sockSrv; SOCKADDR_IN addrSrv; SOCKADDR_IN addrClient;// 连接上的客户端ip地址 int len; wVersionRequested = MAKEWORD( 1, 1 ); err = WSAStartup( wVersionRequested, &wsaData ); if ( err != 0 ) { return; } if ( LOBYTE( wsaData.wVersion ) != 1 || HIBYTE( wsaData.wVersion ) != 1 ) { WSACleanup( ); return; } sockSrv=socket(AF_INET,SOCK_STREAM,0); addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY); addrSrv.sin_family=AF_INET; addrSrv.sin_port=htons(6000); bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));// 绑定端口 listen(sockSrv,5); len=sizeof(SOCKADDR); while(1) { //unsigned char mm[2]; SOCKET sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len);// 接受客户端连接,获取客户端的ip地址 // sprintf(sendBuf,"Welcome %s to here!",inet_ntoa(addrClient.sin_addr));// 组合消息发送出去 intBlkPtr=OSMemGet(intBuffer,&err);//请求内存,获得内存分区指针 recv(sockConn,intBlkPtr,64,0);// 接受客户端消息 OSQPost(Semp, intBlkPtr); //有的数据可能不处理,就对掉了。 closesocket(sockConn);//断开连接 } } #define TASK_STK_SIZE 128 OS_STK AppStk_1[TASK_STK_SIZE]; OS_STK AppStk_2[TASK_STK_SIZE]; OS_STK AppStk_3[TASK_STK_SIZE]; OS_STK AppStk_4[TASK_STK_SIZE]; OS_STK AppStk_5[TASK_STK_SIZE]; OS_STK AppStk_6[TASK_STK_SIZE]; OS_STK AppStk_7[TASK_STK_SIZE]; OS_STK AppStk_8[TASK_STK_SIZE]; void App_Socket(void *p_arg) { while(1) { WinSocketServer( ); //建立socket接收数据 } //OSTimeDlyHMSM(0, 0, 1, 0); //这行是否可以删除 } // 温度,高度,自动驾驶 void App_gaodu_caiji( 详细解释代码
这段代码是一个基于 Windows Socket 的服务器程序,它建立了一个 TCP/IP 监听端口,等待客户端连接。当有客户端连接时,程序接收客户端发送过来的消息并放入一个消息队列中,然后关闭连接。同时,程序还定义了一个任务函数 App_Socket,它会不断调用 WinSocketServer 函数以接收客户端的消息。此外,程序还定义了一个变量 gaodu,初始值为 100,以及一个内存分区指针 intBlkPtr,用于请求内存空间。这段代码中还涉及到一些实时操作系统 (RTOS) 中的概念,例如信号量集、消息队列、邮箱、内存控制块等。
el-col设置gaodu
根据提供的引用内容,el-col并没有直接设置高度的属性。而是通过el-dialog-div这个div元素进行高度的设置。在给el-dialog-div元素设置样式时,使用了height属性来定义高度,并指定为60vh。vh是相对于视口高度的单位,表示相对于视口高度的60%。所以el-dialog-div的高度为视口高度的60%。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [Android编程获取通知栏高度的方法](https://download.csdn.net/download/weixin_38706747/14879427)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"]
- *2* [el-menu的collapse展开隐藏功能导致的视口宽度/高度异常问题](https://blog.csdn.net/weixin_41740463/article/details/128662714)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"]
- *3* [el-dialog固定高度](https://blog.csdn.net/q283614346/article/details/126853790)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"]
[ .reference_list ]
阅读全文