背景 我使用UART在两个设备之间进行通信(使用不同的操作系统,一个使用Linux,另一个使用Windows)。我在Windows上有一个应用程序,作为master(发送命令)和Linux中的应用程序作为代理和响应应用程序。它会做相应的操作并给予回应。
Windows应用:应用程序将发送命令并等待响应。如果Linux在某些内部(例如,10秒)内没有响应,请等待,通知用户超时错误,(并由用户发送下一个命令)。
Linux app:应用程序将等待命令。处理它(例如,最多5秒),然后将响应发送到Windows。
问题:如果由于任何错误/问题,Linux在Windows应用超时(例如15秒)后响应,Windows应用程序已经中止了命令,认为它已经过了超时,并发送下一个命令。第一个命令的响应被视为当前命令的响应,这是不正确的。
解决方案:我想将命令字节作为Linux响应中的第一个字节追加到Windows应用程序中的检查/验证(无论响应是否针对当前命令),如果无效则忽略。但是这也存在局限性,如果两个命令相同,则会再次出现不匹配。
我可以采用什么其他逻辑来解决这个问题?