单片机采用串口中断接收字符串,串口助手发送特殊字符'#'作为字符串结束标志,当单片机串口中断函数中收到'#'时表示接收完成。这种想法,能够轻松编程实现。但是当串口助手想给单片机传'#'时,原程序出现bug,所以尝试串口助手发送字符串以连续的两个#作结束标志,这种想法,通过判断串口中断函数中缓存数组的索引,也能够轻松编程实现。但是,这种情况对不是连续出现的两个#出现了bug。所以,我觉得在字符串结束加特殊字符而通信中又要出现该字符时这种方法不可取。c语言中讲到字符串默认都是以'\0'结束,是自动加的,串口助手发送字符串时是没有加'\0',我想通过自己编写上位机串口助手软件,发送字符串时自动加上'\0',然后单片机串口中断函数通过判断 SBUF == '\0'来作结束。请问这种方式行得通吗? 或者有别的更好的方式。请各位指教一下,谢谢!
|