COMポートを用いてのデータを送受信

解決


Valkyrie  URL  2002-10-16 13:14:48  No: 50467  IP: [192.*.*.*]

COMポート接続の機器からのデータ送受信をしたいと思ってます。
出力フォーマット(全10byte)
出力形態                       シリアル(RS232C)
同期方式                       調歩同期式
ボーレート                     19200bps
スタートビット、ストップビット 1bit
データ                         8bit
パリティ                       奇数パリティ
入力フォーマット(全1byte)
COMMAND                        1byte
01H  リセット
02H  データ出力要求
03H  周波数設定   となっています。

これをCreateFile()で通信リソースを開き、GetCommState()で取得したDCB
構造体にフォーマットを格納し設定します。
その後、WriteFile(),ReadFile()を使用してデータを送受信しているのですが、WriteFile()はうまくいっているようなのですが、ReadFile()はタイムアウトを設定しないと制御が戻ってもきません。

DCBの設定
dcb.BaudRate = 19200;
dcb.ByteSize = 8;
dcb.Parity   = ODDPARITY;
dcb.StopBits = ONESTOPBIT;

データ出力要求
BYTE buff = 0x02;
WriteFile(Handle,&buff,1,&NumWrite,NULL);

出力要求がうまくいかないと、データを吐き出さない仕様だとは思うので、
送信自体がおかしいのだと思っているのですが、お手上げの状態です。
おかしい場所、そもそもやり方が違うなどでも結構です。
何か解決の手掛りになるような方法をお教え下さい。

VC++ 6.0 WINDOWS XP 環境です。

編集 削除
Valkyrie  2002-10-16 19:08:00  No: 50468  IP: [192.*.*.*]

機器の方の配線ミスでした。

修正後、上記方法で無事データを受け取る事が出来ました。

編集 削除