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

时间:2018-01-30 12:46:12

标签: uwp win-universal-app windows-10-universal uwp-xaml

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

我想问的问题是我有多个命令,我必须通过串口(RS485)发送,我也会收到回复。 但每当我意外地调用send命令两次或某种程度上我的应用程序什么都不做(它做了什么,但我不知道什么......很遗憾)然后我再次按下发送按钮然后我的应用程序崩溃了。

现在我想询问是否有方法以某种方式获取串口的当前状态? 我想知道此时端口是否用于发送/接收,如果是,我想阻止我的命令被发送,直到当前操作完成。或者它应该只是给出一个错误,例如"我很忙。稍后再试!"。

我真的很感激帮助,因为我不知道如何做到这一点:/

1 个答案:

答案 0 :(得分:0)

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

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

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