我正在尝试让微控制器通过串行端口与 Windows PC 进行通信。
在我看来,Windows 正在缓冲 COM1 上的输入,因此如果我停止两个程序的运行,则仅重新启动 Windows 程序,它仍会从微控制器程序的上一次运行中接收一些输出。
在我打开 COM1 之后,我可以在开始读取之前如何刷新它的接收缓冲区吗?是否有函数调用来做到这一点?
我正在尝试让微控制器通过串行端口与 Windows PC 进行通信。
在我看来,Windows 正在缓冲 COM1 上的输入,因此如果我停止两个程序的运行,则仅重新启动 Windows 程序,它仍会从微控制器程序的上一次运行中接收一些输出。
在我打开 COM1 之后,我可以在开始读取之前如何刷新它的接收缓冲区吗?是否有函数调用来做到这一点?
我相信您正在寻找的功能是PurgeComm,当您打开端口时,您将从 CreateFile() 获得的 HANDLE 传递给它。我不确定,但我相信每次打开它都会自动刷新串口。
但是,更好的方法是使用 ReadFile(或 ReadFileEx),直到遇到有意义的事情。为此目的,串行协议总是设计有一个或多个同步字节。除非您正在编写终端程序或类似程序,否则无论如何您都必须这样做,因为 Windows PC 将永远不会与微控制器同步。