2013-12-17 36 views

回答

0

沒有直接的等價物,SerialPort沒有TransmitBufferEmpty事件。在現代硬件上這是相當無意義的事件,UART具有一個FIFO,它將緩衝輸出並在發送緩衝區爲空時繼續傳輸字節。

您可以通過使用SerialPort.BaseStream.BeginWrite()方法稍微模擬它。指定的回調在寫入完成時運行。然後,您可以再次調用BeginWrite()以寫入更多數據。與SThreshold值1不完全相同,因爲當BeginWrite完成時發送緩衝區將被填滿。請注意,回調在線程池線程上運行,因此您必須小心地進行互鎖。

+0

謝謝你的回答。我只想了解一些東西,如果發送緩衝區是空的,它會發送什麼? – user2109003

+0

當然沒有。這不是問題。 –

-1

MSComm和Serialport並不常見。如果需要從MSComm轉移到串行端口,但避免更改軟件的工作部分,則沒有多少選項。一個衆所周知的庫SuperCom提供了一個MSComm兼容的ActiveX,可以與VB網絡和C#一起使用。這意味着幾乎沒有變化。 A NET class library也包括,其行爲非常類似於MSComm屬性和方法。它完全兼容32位和64位的Windows, Windows XP,7,8,10。