如何获取值并使用C#侦听COM2端口?

时间:2019-05-09 00:03:38

标签: c# winforms serial-port key pos

我正在使用连接在COM2端口上的Dallas Key。 达拉斯密钥打开时有一个值(例如00 AA BB),而删除它时有一个值(例如00 00 00)。 我该如何连续准备COM2端口的值,以便检测到它的变化并基于它进行操作(winforms应用程序)。

我试图通过端口名获取值并读取它,但是它表示在某些情况下访问被拒绝。

private SerialPort port = new   SerialPort("COM2",9600, Parity.None, 8, StopBits.One); 

   static void Main(string[] args) 
    { 
      SerialPortProgram(); 
    } 

private static void SerialPortProgram() 
    { 
        port.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived); 
        port.Open(); 
        Console.ReadLine();
     } 

    private void port_DataReceived(object sender, SerialDataReceivedEventArgs e) 
    { 
       Console.WriteLine(port.ReadExisting()); 
    } 

我想一直监听COM2端口的值,而又不影响应用程序速度,打开时获取COM2端口的值(我的达拉斯密钥),并检测何时关闭并具体说明行动。

2 个答案:

答案 0 :(得分:1)

即使您没有描述实际抛出的行,也可以通过阅读文档找到我发现的内容

SerialPort.Open Method

  

例外 UnauthorizedAccessException拒绝访问该端口。

     

-或-

     

当前进程或系统上的另一个进程已经具有   指定的COM端口是通过SerialPort实例打开还是通过   非托管代码。

您没有打开端口的权限,或者您已经打开了该端口,您需要确定它是哪一个并适当地进行处理

注意:如果您使用USB来进行com端口通信,则端口可能会有些变幻

答案 1 :(得分:0)

下面的代码在我用控制台(项目是控制台应用程序)编写时起作用,但是当我改回到Windows应用程序并尝试写标签或更改变量值时,此代码无效:

mask