是否可以读取串口的状态?目前是否正在使用?

Is it possible to read the state of the serial port? If it is currently in use or not?

我目前正在为 Raspberry Pi 编写一个 Win Iot 应用程序,但我目前遇到了一些问题...

我想在这里问的问题是我有多个命令必须通过串行端口 (RS485) 发送出去,我也会在 return 中得到响应。 但是每当我不小心调用发送命令两次或不知何故我的应用程序什么都不做(它正在做某事但我不知道是什么......可悲的是)并且我再次按下发送按钮然后我的应用程序崩溃了。

现在想请问有没有什么方法可以获取串口的当前状态? 我想知道该端口目前是否用于 sending/recieving,如果是,我想阻止发送我的命令,直到当前操作完成。或者它应该只给出 "I'm busy. Try again later!".

之类的错误

非常感谢您的帮助,因为我不知道该怎么做:/

https://msdn.microsoft.com/en-us/library/system.io.ports.serialport.open(v=vs.110).aspx

一个串口只能打开一次。如果它已经打开了你,并且你尝试再次打开它,你应该得到一个你应该处理的 UnauthorizedAccessException 异常。您可以将其解释为另一个仍在进行中的命令操作。

如果您只有一个 com 端口实例,并且在命令之间共享该实例,您应该挂起某种锁定机制以保护 comport。例如。将 semaphoreslim 初始化为 1,当你想使用 comport 时,请等待信号量。完成后,释放信号量。这样,只有一个命令会同时使用流。