你的回答,如果从 功能层次 来说是对的
但如果从 考虑如何实现就不对。
我也不绕弯子了,我已经知道你的问题在哪里了。
最根本的问题,你没有分离好层次。
在这个功能里,包含了以下几个功能:
1.串口接收,明确地说是,串口接收到一个字节;
2.判断接收到一个完整的回复,它隐含的问题是,如何判断 已经收到完整的字符串,并且还隐含了你要有缓存(大概也就是你的数组);
3.判断字符串内容是否特定内容;
串口接收我估计你没问题;
剩下的问题就是,你如何处理 串口接收数据 和 你所谓的 判断 已经 握手成功。
你说原地等待,这就是你的思路,但显然这种思路并不好;为什么?很简单
假如由于某种通信上的干扰或者错误——总有可能,你不能收到你预期想收到的数据。
而你的思路是一种顺序的阻塞思路——也就是说如果实际情况和你设想的顺序一旦出现了一个不符,你的程序就会堵死或者出现你无法预料的状态。
如何解决这个事情。
最基本的办法,你要把 等待串口数据 和 判断是否握手回复(数据处理)分开。
怎么分开?
最简单的方法。
用一个全局数组存储接收到的数据,作为缓冲。
写一个函数把接收到的数据一个一个往里头填。
然后另写一个程序去判断这个数组。
这个时候,你想在哪调用这两个函数都没问题。
这样,就避免了你的“原地等待”。
而只要你不原地等待,不管你的数据是迟到了,是异常了,都不会影响你的程序正常执行。
这是一个大体思路,实现起来很简单,但并不是完整思路,完整的过后再说,我要确定你确实如我设想的堵塞,而非这种更一般化的思路——实在因为这只是一种很常规的方法,也许我太低估你的问题了。