|
分類:[C#]
お世話になっていますれれれです。
早速質問なのですが、いまマイコン(PIC)とPCでシリアル通信しようとしています。
マイコンからは66byteの文字データが1byteづつ送られてきます。
PC用のプログラムは
private void button_eeprom_read_Click(object sender, EventArgs e)
{
string eepromdata;
request = new byte[1];
eeprom_data = new byte[66];
request[0] = 114;
serialPort1.Write(request, 0, 1); //マイコンへのデータ要求フラグ、マイコンがこれを受信するとPCにデータ送信
serialPort1.Read(eeprom_data, 0, 66);
}
なのですがデータ自体はちゃんと送られてきます
しかしそのデータがおかしくて
プログラムを起動して受信すると1回目が送られてくるデータの1バイト分しかeeprom_data[0]に入りません。残りは全部0です
2回目ボタン押すと、残りの65バイト分がeeprom_data[0]〜eeprom[64]に入ります。最後の1バイト分は0です。
つまり1回目が66バイト格納するはずが1バイトしか格納されず、結果としてバッファがずれてしまい1つ遅れているのです。
マイコンのほうの送るデータを変えて受信しようとしても1回遅れて変更されたデータが送られてきます。
マイコンのほうは制御文字についてはNULL(\0)以外送っていません。
こんなことは初めてです。
どうすればいいでしょうか?
|