1

我用微軟的COM控件6.0應用程序將數據發送到LED控制vb.net毫秒COMM越來越例外

  MSComm1.EOFEnable = True 
     MSComm1.SThreshold = 100 
     MSComm1.InputLen = 0 
     MSComm1.RThreshold = 1 
     MSComm1.InBufferCount = 0 
     MSComm1.OutBufferCount = 0 
     MSComm1.NullDiscard = False 
     MSComm1.CommPort =1 
     MSComm1.PortOpen = True <-Getting exception to this line 
     ...... 

我從HRESULT歌廳異常:0x800A1F45。爲什麼做這個端口是不是開放。 當我通過vb6運行它時,我不會收到錯誤...任何人都可以幫助我...

+0

爲什麼在.NET應用程序中使用舊的東西?爲什麼不使用.NET API直接處理COM端口? –

+0

@JohnSaunders你能否建議更好的.NET API與COM端口通信 –

+1

請參見[SerialPort類](http://msdn.microsoft.com/en-us/library/system.io.ports.serialport.aspx)。並且不要在.NET中使用任何VB6的東西。它已經超過十年了! –

回答

1

錯誤800A1F45通常表示端口正在被另一個應用程序使用。

您可以根據this Wikipedia article解碼HRESULT。對於0x800A1F45,你會發現:

  • 第三位是0,所以這是一個微軟錯誤
  • 設施位十六進制是0xA或十進制10,其根據MSDN list手段「控制」
  • 錯誤代碼位是十六進制0x01F45或十進制8005.根據error list for the MSComm control表示「端口已打開」
+0

非常感謝您提供建議 –