2012-10-06 159 views
2

如何使用C#從USB通信端口發送和接收數據?C#串行通信

用於通信的要求是:

  • 115.2波特
  • 8位字符尺寸
  • 1個停止位
  • 無奇偶
+0

你有什麼試過? http://mattgemmell.com/2008/12/08/what-have-you-tried/ – xxbbcc

+0

那麼,你打開COM端口,配置它併發送和接收。 – zmbq

+0

這些設置只有在通過物理串行端口連接到硬件時纔有意義。該芯片被稱爲UART,通用異步接收器和發射器。對於USB仿真器,它沒有任何區別,總線協議不需要這種配置。 –

回答

10

一個USB通信端口出現在系統與機載端口相同。使用SerialPort類。

using (var sp = new System.IO.Ports.SerialPort("COM11", 115200, System.IO.Ports.Parity.None, 8, System.IO.Ports.StopBits.One)) 
    { 
     sp.Open(); 

     sp.WriteLine("Hello!"); 

     var readData = sp.ReadLine(); 
     Console.WriteLine(readData); 
    } 

您可以通過致電SerialPort.GetPortNames找到可用端口。如果這不符合您的需求,您也可以將該端口作爲文件訪問,但這要複雜得多,而且幾乎沒有理由這麼做。有關更多信息,請參閱CreateFile的文檔。

+0

+1簡單 –

+0

GetPortNames不枚舉正常的USB端口。 – Karlth

+0

@ user357320,GetPortNames將枚舉任何呈現爲COM端口的設備。如果USB設備沒有將其本身顯示爲COM端口,則它不會顯示。你需要'SetupDiEnumDeviceInterfaces'來獲得所有的USB設備,但是除非你正在編寫一個''winusb.sys'的自定義驅動程序,這不會很有幫助。 – Mitch