2013-04-15 3 views
2

Моя проблема в том, что когда я запускаю программу, она работает отлично, но падает после одного цикла программы. Вот код:Последовательный порт system.unauthorizedaccess

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?

ответ

1

Две программы не могут одновременно открывать последовательный порт. Попытка открыть последовательный порт вызывает это исключение:

Доступ запрещен к порту.

-или-

Текущий процесс, или другой процесс в системе, уже указанный COM-порт открыть либо экземпляром SerialPort или в неуправляемом коде.

Source. Таким образом, вы не можете открыть последовательный порт в своей программе, а также в test.exe.

+0

хорошо, если вы посмотрите на код, я закрываю порт перед тем, как открывать test.exe, так что не следует ли снова открывать порт? –

+0

Что такое 'c' и' COMPort'? Два разных последовательных порта? – dsolimano