C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 36 を表示中)
■18563 / )  マイコン(PIC)とのシリアル通信
□投稿者/ れれれ (55回)-(2008/05/14(Wed) 21:30:04)

分類:[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)以外送っていません。
こんなことは初めてです。
どうすればいいでしょうか?

返信 編集キー/


管理者用

- Child Tree -