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 環境です。
機器の方の配線ミスでした。
修正後、上記方法で無事データを受け取る事が出来ました。
ツイート | ![]() |