タイトル : Re^10: シリアル通信で異常に時間がかかってしまう 投稿日 : 2010/01/28(Thu) 23:27 投稿者 : るる
ぽるとさんのプログラムは受信データ長ですべてのデータが入ってきたと判断し、まとめて受信データをごっそり取り出す方法ですよね? そこをデータ長で判断せず、確実に1文字とか数文字毎に取り出しその文字の中に最後の文字であるか?を判定してやる方がいいのかな?と思ったのです。 以下参照。 >ACK、NAK、STXやETX 等でしょうか。 >装置側のシーケンサの資料はあるようですので、 >そちらを確認して見ようとおもいます。 三菱シーケンサは使用した事ありませんが、おそらく最終文字がASCIIコードで言うLF(0x0A)とかCR(0xOD)とかでないですか?いずれにせよ資料を確認する必要がありそうですね。 ちなみにACK,NAKは通信成功、通信失敗を意味する場合が多いです。 STXは通信の始め、ETXは通信の終わりのアクセントとして使われます。 あと、 lstrSendData = <コマンド文字列> lintDataLength = <コマンドに応じて設定されてます> ここ。確実にコマンドに対する受信データ長がセットされてますかな? 送信コマンドと受信データ長が本来のと一致しない場合が出てる可能性もあるかも。 |