modbus_tcp和modbus_rtu对比移植AT-socket,modbus_tcp杂记
modbus_rtu通信时没有连接过程,主机和从机各自初始化自身串口就行了,而rtu需要确定从机ID。
注:在TCP连接中,不同的网卡有不同的IP,port对应具体的程序。
/* 先读取数据 */for (i = 0; i < len; i++){if (pdPASS != xQueueReceive(recv_queue, &buf[i], 0))break;}/* 如果没有数据才等待 之所以这样做是因为如果队列有100字节数据,第一次只读10字节的话,下次再读就只能等待重新得到信号量了,因此会造成接收延迟*/if (i == 0)//说明队列里为空,一个都没读到,这时才阻塞等待{xSemaphoreTake(ptDev->sockets[socket].at_packet_sem, portMAX_DELAY);}/* 读取数据 */for (; i < len; i++){if (pdPASS != xQueueReceive(recv_queue, &buf[i], 0))break;}