パリティなしの8ビットUARTで構成された3つの異なるCOMポートからシリアルデータを受信するC#アプリケーションを作成しています。他のデバイスはバイナリでエンコードされたHEXを送受信します。 AF01h = 10101010 00000001バイトごとに2文字。私は仮想COMポートとテスト目的のための単純なアプリケーションを設定し、私はデバイスをフックする前に前後にデータを送信しています。私はデータが送信と受信でデフォルトでASCIIエンコードされていることを知っていましたが、私は両方ともバイナリエンコードHEXである必要があります。エンコードクラスでそのオプションが表示されず、他の3つのデバイスとはまったく異なるエンコーディングを使用するアプリケーションがないと思います。それはヌルまたはHexシリアルポートコード
string binarystring = String.Join(String.Empty, hexstring.Select(c => Convert.ToString(Convert.ToInt32(c.ToString(), 16), 2).PadLeft(4, '0')));
sport.Write(binarystring);
txtReceive.AppendText("[" + dtn + "] " + "Sent: " + binarystring + "\n");
に送信されたときに今、私は、文字列を変換するには、このコードを使用していますこれは、今のところ、テスト送信のために働くが、私は最終的にバイト配列に直接2桁の16進数を配置するコードを変更します。
このコードではAF01h = 1010101000000001と入力できますが、アプリケーションの受信側では16バイトのASCIIエンコード文字が得られます。他のデバイスと同じページでアプリを入手する方法はありますか?
書き込み(文字列)過負荷は使用しないでください。バイナリデータを正しくエンコードするには、byte []を使用してください。 –
私はByte []に移動する前に、テキストボックスからASCII文字をエンコードする必要がありますか?また、バイトを送信しても、ASCIIエンコーディング/デコードはまだ適用されません。 –