-1

私のアプリでは、マイクロコントローラーにデータを送信しています。私はデータを送信し、マイクロコントローラーはプログラムを実行し、文字 ("K") を送信します。アプリケーションはこの文字を待機する必要があります。この文字を受信した後、データを再度送信する必要があります。

このキャラクターを受け取るのに問題がありました。関数 BytesToRead は文字を読み取る権利がありますか? 私のプログラムは、この関数の待機に達すると常に落ちます

static void wait()
    {
        SerialPort COMport = new SerialPort();
        int znak;

        COMport.PortName = "COM6"; // 
        COMport.BaudRate = 1200;
        COMport.DataBits = 8;
        COMport.Parity = Parity.None;
        COMport.StopBits = StopBits.One;

        COMport.Open();

        do
        {
            znak = COMport.BytesToRead;
        } while (znak != 75);   // ASCII K = 75

        COMport.Close();
        return;
    }
4

2 に答える 2

0

なぜ使用しないのwhile(COMport.ReadChar() != 'K') { /* Do Stuff */ }ですか?

于 2016-05-06T18:27:13.303 に答える
0

COMport の BytesToRead プロパティは、COMport によって受信された文字数を返すため、正確に 75 文字が読み取られるまでループが続行されます。SerialPortクラスのドキュメントを見てください。COMport との間で文字を読み書きする方法の良い例を示します。

于 2016-05-06T16:32:21.983 に答える