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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.

posted on 2024-04-14 03:06  广源时代  阅读(40)  评论(0编辑  收藏  举报

导航

支付宝 QQ群