6-WIFI&蓝牙(ESP32)转CAN或RS485总线&串口TTL模块-CSDK--设备作为TCP客户端,实现上位机TCP服务器和RS485之间的数据传输
<p><iframe name="ifd" src="https://mnifdv.cn/resource/cnblogs/ESP32_CAN" frameborder="0" scrolling="auto" width="100%" height="1500"></iframe></p>
说明
这节测试的是让设备连接路由器,然后设备以TCP客户端的形式连接TCP服务器,
连接上服务器以后, TCP服务器发送给设备的数据会通过设备的RS485发送出去
设备从RS485接收的数据会发送到TCP服务器.
测试
1,打开这节的工程
这节是让设备连接路由器, 根据自己的需求配置模组连接的路由器 和 RS485波特率, 和 TCP服务器地址
2,连接上RS485设备
3,我这边使用调试助手创建个服务器
4,如果接收到数据会显示
5,发送数据
这边使用串口调试助手
程序说明
1,TCP客户端接收到TCP服务器的数据就把数据通过RS485发送出去
xRingbufferSend(RingbufHandleTxUart1, data, len, pdMS_TO_TICKS(2)); xTaskNotifyGive(TaskHandleTransmitUart1);//发送通知
2,通过RS485接收的数据发送给TCP服务器
//接收的数据发送到TCP服务器 tcpClientTransmit_t* tcpClientTransmit = (tcpClientTransmit_t*)malloc(sizeof(tcpClientTransmit_t)); if(tcpClientTransmit != NULL ) { uint8_t *p_data = (uint8_t *) malloc(len);//待发送数据的个数 memcpy(p_data, uart1_struct.ring_buf_copy, len);//取8字节CAN数据 tcpClientTransmit->p_data = p_data; tcpClientTransmit->data_len = len;//发送数据的个数 tcpClientTransmit->tcpClient = &tcpClient[0];//使用哪个客户端发送 /*把消息发送到消息队列*/ if (xQueueSend(QueueHandleTcpClientTransmit, &tcpClientTransmit, pdMS_TO_TICKS(10)) != pdPASS) { free(tcpClientTransmit); free(p_data); } }
.