Vb.net 串行端口系统。未经授权的访问
我的问题是,当我运行程序时,它工作得非常好,但在程序运行一个周期后崩溃。下面是一些代码:Vb.net 串行端口系统。未经授权的访问,vb.net,serial-port,unauthorizedaccessexcepti,Vb.net,Serial Port,Unauthorizedaccessexcepti,我的问题是,当我运行程序时,它工作得非常好,但在程序运行一个周期后崩溃。下面是一些代码: Private Sub Receiver(ByVal sender As Object, ByVal e As SerialDataReceivedEventArgs) Handles COMPort.DataReceived Dim RXByte As Byte key = 0 cut = False c.Open() Do RXCnt =
Private Sub Receiver(ByVal sender As Object, ByVal e As SerialDataReceivedEventArgs) Handles COMPort.DataReceived
Dim RXByte As Byte
key = 0
cut = False
c.Open()
Do
RXCnt = 0
Do
RXByte = COMPort.ReadByte
If (RXByte = 29) Then
c.Write(Chr(10))
cut = True
c.Close()
If c.IsOpen = False Then
ts = "BLAH"
Process.Start(System.Windows.Forms.Application.StartupPath & "\e.exe", ts)
Process.Start(System.Windows.Forms.Application.StartupPath & "\Test.exe", c.PortName)
Else
End If
End If
If (cut = True) Then
Exit Do
End If
c.Write(Chr(RXByte))
addText(Chr(RXByte))
RXArray(RXCnt) = LookUpTable(RXByte >> 4)
RXCnt = RXCnt + 1
RXArray(RXCnt) = LookUpTable(RXByte And 15)
RXCnt = RXCnt + 1
RXArray(RXCnt) = " "
RXCnt = RXCnt + 1
SpaceCount = (SpaceCount + 1) And 31
If SpaceCount = 0 Then
RXArray(RXCnt) = Chr(13) ' CR
RXCnt = RXCnt + 1
RXArray(RXCnt) = Chr(10) ' LF
RXCnt = RXCnt + 1
Else
If (SpaceCount And 3) = 0 Then
RXArray(RXCnt) = " "
RXCnt = RXCnt + 1
RXArray(RXCnt) = " "
RXCnt = RXCnt + 1
End If
End If
Loop Until (COMPort.BytesToRead = 0)
Me.Invoke(New MethodInvoker(AddressOf Display))
Loop Until (COMPort.BytesToRead = 0)
c.Close()
End Sub
我认为问题发生在代码的这一点上
Process.Start(System.Windows.Forms.Application.StartupPath & "\Test.exe", c.PortName)
系统抛出system.UnauthorizedAccessException错误。此外,测试程序还与同一串口通信。当我运行程序时,进程启动并完成,但当前进程抛出错误。这是UAC错误吗?两个程序不能同时打开串行端口。在以下情况下,尝试打开串行端口会引发该异常: 拒绝访问该端口 -或- 当前进程或系统上的另一个进程已由SerialPort实例或非托管代码打开了指定的COM端口
。因此,您不能在程序中打开串行端口,也不能在
test.exe中打开串行端口。如果您查看代码,我会在打开test.exe之前关闭端口,那么这不应该使端口再次打开吗?什么是c
和COMPort
?两个不同的串行端口?