2017-05-10 39 views
2

私はUSBポート経由でC#を使用してMCP2221マイクロチップにコマンドを送信しようとしています。前記コマンドは64バイト長であり、最初のバイトが0xB0であることを除いて、ほとんどが0x00からなる。バイト配列を作成し、そのバイトを設定し、serialport.writeコマンドを使用して書き込みます。 ellysis usb explorerで送信されたバイトを調べた後、16バイト長のACK信号の形式でコマンドを送信し、同じ長さの複数の空のNAK信号を数百ブロック送信していることがわかりました。 単一の64バイトパッケージの形式でコマンドを正しく実行するにはどうすればよいですか?シリアルポートは9600のボーレート、パリティなし、および1つのストップビットのデフォルト設定を使用しています。これはマイクロチップが正常に動作するはずです。 私はどのような支援形態にも非常に感謝しています。C#でシリアルポート経由で64バイトのパケットを送信


+0

コードを共有してください。 –

+0

私の答えの友人を承認するのを忘れない;-) –

答えて

0

私は前にこの問題を持っており、それは前にあなたがやりたいのThread.sleep(200) を実行してイベント内の最初のコマンドでので、完全にファイルをreciveイベント実行becase起こります。 2面でそれが良いです

0

シリアルポートがフロー制御(デフォルト)を使用するように設定されているようです。あなたのコントローラーはおそらくフロー制御をサポートしていないか、またはそれをサポートするように構成されていません。フロー制御が必要ない場合は、単に無効にすることができます。

port.Handshake = Handshake.None; 
+0

あなたの答えをありがとう、それはかなり妥当と思われます。私は11日から強い熱で病気になり、私の家を出ることができず、ハードウェアを手に入れてテストすることはできません。私はできるだけ早くあなたに結果を返します。ご協力いただきありがとうございます。 –

+0

ハンドシェイクがデフォルトで無効になっていることがわかります。これは私を大きく混乱させます –

関連する問題