0

シリアルポート経由で動作する LCD ディスプレイにデータを送信しようとしています。このコードは VB6 で機能しますが、C# に変換する必要がありました。悲しいことに、それは機能しません。何か案は?

VB6(例)

MSComm1.CommPort = 1
MSComm1.Settings = "9600,N,8,1"
MSComm1.PortOpen = True
MSComm1.Output = Chr(2)
MSComm1.Output = Trim(Text1.Text)

C# (例)

var serialPort1 = new SerialPort("COM1", 9600, Parity.None, 8, StopBits.One);
serialPort1.Open();
serialPort1.Write(((char)2).ToString());
serialPort1.Write(textbox1.Text);
serialPort1.Close();

問題はserialPort1.Write関数に関するものだと思いますが、わかりませんでした。助けていただけますか?

4

3 に答える 3

0

まず、このヘルパー拡張メソッドを試して、1 バイトの制御コードを簡単に記述できるようにします

public static void Write(this SerialPort sp, byte b)
{
   sp.Write(new byte[]{b}, 0, 1);
}

次に、コードを次のように変更します。

var serialPort1 = new SerialPort("COM1", 9600, Parity.None, 8, StopBits.One);
serialPort1.Encodeing = System.Text.Encoding.Default;
serialPort1.Open();
serialPort1.Write(2);
serialPort1.Write(textbox1.Text.Trim());
serialPort1.Close();

私はこれを構文チェックしていませんが、フリーハンドで書いただけなので、少し調整する必要があるかもしれません。

于 2012-12-05T12:55:59.863 に答える
0

悲しいことに、それは機能しません

Chrこの大まかなステートメントを考えると、0 から 255 の間の値、つまりバイトを返すため、データ型の違いであると想定します。

serialPort1.Write(new byte[]{2}, 0, 1);
于 2012-12-04T19:06:25.100 に答える
0

バイト配列を作る

byte[] bytSend;

バイト配列に送信するデータを入力し、次のコマンドでデータを送信します

sp.Write(bytSend, 0,bytSend.GetUpperBound(0) + 1);

私の頭の上から、あなたのための本当のテストプロジェクトはありません、ごめんなさい

于 2012-12-06T15:07:21.473 に答える