求助 主机与从机串口收数的问题

2019-10-15 02:06发布

我有一台主机 很多台从机 都是通过485传输数据,现遇到一个问题,我这些机器都是led显示屏,通过串口收数判断地址再显示出相应的字符出来,
字符也是通过串口下发的,但问题是:比如我给主机发的数据是 1 2 3 4 ,再给从机发 2 3 4 5 ,那么主机的数据就会被刷掉,因为 USART2_RX_STA=0;
它始终要把数据清除,但如果不清除的话,那要想再改主机的数据就不行了,求教各位大神,这个要怎么处理才能解决啊?!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
13条回答
jermy_z
1楼-- · 2019-10-15 04:03
比如我给主机发的数据是 1 2 3 4 ,再给从机发 2 3 4 5 ,那么主机的数据就会被刷掉《-----没看懂逻辑
smallshuo
2楼-- · 2019-10-15 08:19
串口收到1234这几个字符,那么我收到这几个字符就让主机的led显示屏显示出来,然而串口再往从机下发2345时(从机的数据是通过主机转发下去的),上次收到1234就会被清掉了,也就是说主机也会显示2345,而不是1234了,串口接收不是有个USART2_RX_STA=0;这个就清了嘛,我也可以不清它,但不清的话再想改也不行了啊
The·3rd
3楼-- · 2019-10-15 09:36
就是只能显示一组数据,但是你想显示多组数据是吗
smallshuo
4楼-- · 2019-10-15 12:04
 精彩回答 2  元偷偷看……
TGuest
5楼-- · 2019-10-15 17:05
你可以自己定义一个通信协议帧  比如一帧数据6位   第一、二位为标示位(可定义为主机或从机号)  剩下4位为数据位  例:001234  主机收到这个数 分析前两位为00 知道是给主机的数据,就保存下来。如果收到的数据位101234  分析前两位为10  知道是给1号从机  就转发给从机,以此类推。这样也不容易混乱,否则你给主机发送个1234,主机知道这是干嘛的,是保存还是转发。
不知道能不能帮到你。
smallshuo
6楼-- · 2019-10-15 18:57
TGuest 发表于 2017-2-14 10:40
你可以自己定义一个通信协议帧  比如一帧数据6位   第一、二位为标示位(可定义为主机或从机号)  剩下4位 ...

我有协议来判断地址位,比如说00就是主机,01是从机,但问题是如何保存主机的数据这个问题,因为主机收到了这串数,例如1234,接下来判断从机01,又发给从机2345,但是串口收到2345这个数据时,不是串口中断中有USART2_RX_STA=0;这个会把上次收到的数据清除嘛,那么主机的1234就会变成2345,但如果我不清除,我屏蔽掉USART2_RX_STA=0;那么即使从机收到了2345,那我再次给主机发送其他数据的时候,例如3456,因为没有清除,所以主机的数据又变不了了。

一周热门 更多>