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

2019-10-15 02:06发布

我有一台主机 很多台从机 都是通过485传输数据,现遇到一个问题,我这些机器都是led显示屏,通过串口收数判断地址再显示出相应的字符出来,
字符也是通过串口下发的,但问题是:比如我给主机发的数据是 1 2 3 4 ,再给从机发 2 3 4 5 ,那么主机的数据就会被刷掉,因为 USART2_RX_STA=0;
它始终要把数据清除,但如果不清除的话,那要想再改主机的数据就不行了,求教各位大神,这个要怎么处理才能解决啊?!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
13条回答
TGuest
1楼-- · 2019-10-15 21:43
这些操作都不会掉电吧。你在主机上把收到的数据判断保存到自己另外定义的缓冲区中,注意要先判断如果前两位是00再保存,这样你发送给从机的信息主机判断前两位不是00就转发了,也不会改变主机的值。
smallshuo
2楼-- · 2019-10-15 23:16
TGuest 发表于 2017-2-14 11:30
这些操作都不会掉电吧。你在主机上把收到的数据判断保存到自己另外定义的缓冲区中,注意要先判断如果前两位 ...

我才疏学浅,请教怎么才可以保存下来?我试着这样Save_Buffer[0]=USART2_RX_BUF[0];
USART2_RX_BUF是串口收到的数组,Save_Buffer是自己定义的数组,把它传递到Save_Buffer后,但是USART2_RX_BUF改变了后Save_Buffer还是会跟着变啊
TGuest
3楼-- · 2019-10-16 01:09
 精彩回答 2  元偷偷看……
TGuest
4楼-- · 2019-10-16 01:43
TGuest 发表于 2017-2-14 15:37
你可以定义一个递增static变量 i(这个变量不要在中断服务函数中定义),然后每次进入接受中断Save_Buffe ...

写错了,是Save_Buffer=USART_ReceiveData(USART2)
TGuest
5楼-- · 2019-10-16 01:47
TGuest 发表于 2017-2-14 15:38
写错了,是Save_Buffer=USART_ReceiveData(USART2)

Save_Buffer【i】=USART_ReceiveData(USART2)
smallshuo
6楼-- · 2019-10-16 04:26
TGuest 发表于 2017-2-14 15:39
Save_Buffer【i】=USART_ReceiveData(USART2)

好的,谢谢,问题我已经搞定了,我是用的一个条件来判断什么时候保存到自定义的数组里面,这样的话接收到新的数据需要达到判断的要求才能存入。非常感谢!

一周热门 更多>