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