完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
下位机数据通过一个9针485转USB的转接器上传,只接了RX,TX。下位机用示波器看,数据是2.5ms一帧帧上传的。但是串口读出来是挤在一起的一大堆。下位机数据报多了之后,上位机的指令还发不出去。怎么控制两个的通信呢? |
|
相关推荐
3个回答
|
|
按照通用的串口去控制,其他都不要改动,一次不成功,就多发几次。几次不行换方案。
485上半双工通讯,一般情况都是主设备去问从设备数据。你这从设备自动发送,主设备也需要随时发送,根本不适合485,改用422,问题解决。 |
|
|
|
在这种情况下,可以考虑使用软件方法实现半双工通信。下面是一种可能的解决方案:
1. 在上位机上使用一个循环来读取串口接收缓冲区中的数据,并将其按照帧的方式进行解析。根据数据的起始标志和帧长度进行帧的切割和解析。 2. 使用一个FIFO(First In First Out)队列来存储上位机发送的指令。在需要发送指令时,从队列中取出并发送。 3. 在上位机中,使用定时器来控制指令的发送间隔,确保上位机发送指令的速度不会超过下位机的处理速度。 4. 在下位机上,使用一个循环来读取串口接收缓冲区中的数据,并将其解析为帧数据。 5. 下位机使用一个标志位来表示是否有新的数据需要发送给上位机。如果有新的数据,则将其放入一个发送缓冲区中。 6. 在下位机中,使用一个定时器来控制数据的发送间隔。在定时器超时时,将发送缓冲区中的数据发送给上位机。 通过这种方式,可以实现上位机和下位机之间的半双工通信。上位机可以及时发送指令,并读取下位机发送的数据,而下位机也可以根据需要将数据发送给上位机。请注意,由于没有使用硬件流控制信号,数据的发送和接收速度需要进行合理的控制,以避免数据产生丢失或溢出的情况。 |
|
|
|
改成422四线,发送与接收是分开的
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1123 浏览 1 评论
853 浏览 0 评论
723 浏览 0 评论
1277 浏览 1 评论
Labview在生成安装文件的时候,提示“在本计算机上找不到已选定的某些安装程序”
1546 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-4-27 16:21 , Processed in 0.556559 second(s), Total 72, Slave 55 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号