登录
首页 串口通信 串口通信
回帖 发帖
正文

主题:请教各位串口通信高手一个很棘手的串口通信问题

点击:2219 回复:4

原来串口中关于波特率的设置采用的是在串口中定义一个缓冲区,然后在串口的缓冲区里设置波特率的,但是现在公司制定新的modbus规约时为波特率也制定了一个101H通信地址,我通过调用writeuintdata(自己编的一个收发数据,配置串口的动态库的函数)来改写下位机波特率时通信中断,我想这肯定是下位机的波特率改变时,我这边上位机的串口缓冲区里的波特率还没改过来的原因。上位机的波特率是在缓冲区里设置的和通信地址无关的啊,我该用什么方法把串口缓冲区和下位机通信地址对应起来,达到改变下位机波特率时,上位机波特率也跟着一起变化;上位机串口缓冲区里的波特率变化时,下位机也跟着变化?麻烦各位串口方面的高手给我一点建议,谢谢!
04-09-08 14:58
波特率和缓冲区有什么关系?基本概念不清楚。
只要保持进行通讯的两个(几个)设备之间的波特率相同,就能正常通讯。改变波特率应该去改变控制字,和缓冲区无关。
04-09-08 15:15
你是不是这样的,在每次往某个下位机里写东西之前,都要重新用初始化一遍串口(就是你的动态库函数),而初始化串口的时候用到的是缓冲区里的内容,而你讲的缓冲区并不是串口的真正的发送缓冲区。如果我的理解没有错的话,你可以将你的缓冲区加上一部分内容,就是下位机的地址,这个地址和对应的波特率关联起来,这样你在往某个地址发数据之前,初始化的就是其关联的缓冲区里的内容(就是不同的波特率、数据长度、校验位等)。
如果我理解的不对,就当我白说。
04-09-08 15:48
waynebjcn  说的还是比较对的,现在问题解决了,谢谢!
04-09-17 10:00
可以留一个您的联系方式吗?小弟近来做modbus通信,焦头烂额,不知高手能否指点一二??
yinghzhang@126.com
04-09-24 16:27

工控新闻

更多新闻资讯