2013-10-23 38 views
7

最近、通常のUSBケーブルを使用してWindows 7デスクトップにUSB内蔵デバイス(mbed lpc1768)を接続しました。デバイス上で動作するプログラムに付属するドキュメントによれば、USB仮想シリアルポートを介してホスト(デスクトップ)と通信します。「USB仮想シリアルポート」経由でUSBデバイスと通信するにはC?

どこでC#を使用してデータを読み書きする必要があるのですか?私はSerialPort .NETクラスを使用することができますか、またはLibUsbDotNetライブラリなどを使用する必要がありますか?

答えて

10

シリアル接続が分かりやすいため、USBデバイスがUSB-HIDではなくVCPで通信することがわかりました。

デバイスがVCP(Virtual Comポート)で動作している場合は、System.IO.Ports.SerialPortタイプを使用するのと同じくらい簡単です。デバイスに関するいくつかの基本情報を知る必要があります。そのほとんどはWindows Management(Device Manager)から収集できます。そのように構築した後:

SerialPort port = new SerialPort(portNo, baudRate, parity, dataBits, stopBits); 

あなたmay or may not次に、このような(RTS)を送信するために要求とデータ端末レディ(DTR)

port.RtsEnable = true; 
port.DtrEnable = true; 

など、いくつかの追加のフラグを設定する必要性、オープンポート。聞くために

port.Open();

は、あなたがport.DataReceivedにイベントハンドラをアタッチしてから送信するにはport.Read(byte[] buffer, int offset, int count)

port.DataReceived += (sender, e) => 
{ 
    byte[] buffer = new byte[port.BytesToRead]; 
    port.Read(buffer,0,port.BytesToRead); 
    // Do something with buffer 
}; 

を使用することができ、あなたは私がPORTNO(ポート名を参照してくださいかport.Write(byte[] buffer, int offset, int count)

+0

を使用することができます)? SerialPort.GetPortNamesは0のポートを返します。 – Karlth

+0

私の場合、常に同じではない可能性があるので、私はポート番号を知らない。私は 'SearchObjectSearcher'を使ってデバイスを見つけます(名前を知っているので)、' searcher = new ManagementObjectSearcher( "SELECT * FROM WIN32_SERIALPORT") 'を実行し、searcher.Getの' ManagementBaseObject'コレクションを反復します) '。私は答えにそれを働かせます。 –

+1

Windows用のMbedシリアルポートドライバ(http://mbed.org/handbook/Windows-serial-configuration)をインストールする必要があるようです。私はそれを実行し、コンピュータはハングして数分吹き、最終的にデバイスマネージャーに「mbedシリアルポート(COM3)」のラインを作りました! :)私はそれを試してみましょう。 – Karlth

関連する問題