4

コレクター配列が追加ではなく上書きされているため、C# アプリケーションで受信したデータが失われています。

  char[] pUartData_c;

  private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
  {
     try
     {
        pUartData_c = serialPort1.ReadExisting().ToCharArray();
        bUartDataReady_c = true;
     }
     catch ( System.Exception ex )
     {
        MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
     }
  }

この例pUartData_cでは、新しいデータを受信するたびに上書きされます。一部のシステムでは、データが十分に迅速に受信されるため、これは問題になりません。ただし、他のシステムでは、受信バッファ内のデータは完全ではありません。pUartData_c受信したデータを上書きするのではなく、に追加するにはどうすればよいですか。Microsoft Visual C# 2008 Express Edition を使用しています。ありがとう。

4

3 に答える 3

1
private SerialPort sp;
private List<byte> byte_buffer = new List<byte>();    

private void sp_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
   byte_buffer.Clear();

   while (sp.BytesToRead > 0)
   {
      byte_buffer.Add((byte)sp.ReadByte());
   }
}
于 2010-05-06T15:44:54.530 に答える
0

もしそうならpUartDataList<char>あなたは入ってくる文字をリストに追加することができます.AddRange()

于 2010-05-06T15:43:33.313 に答える
0

これがc#の配列追加の問題であることがわかる前に、この質問を2〜3回読む必要がありました。(当初、これは重大なシリアル通信エラーだと思っていました...笑)

Ok、

List<>またはクラスを使用して、ArrayList動的データを維持できます。つまり、追加削除などを追加して、シリアルからデータを受信するたびに、それをリストに追加するだけです。

于 2010-05-06T15:44:55.960 に答える