質問
VC++をはじめて2ヶ月程度のものです。
現在、計測装置からのデータをシリアル通信でパソコンに取り込もうとしています。
ホームページなどを参考にコードを書きましたが、
以下のようではだめでしょうか?
環境はWinXP、VC++6.0でダイアログベース。
実行結果はボタンを押すとエディットボックスに以下のように表示がでてきます。
フフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフ・
よろしくお願いいたします。
ボタンに割り当てたコード
void CTest_commDlg::OnButton1()
{
HANDLE hComm; //通信ハンドル
DCB myDCB;
//----------ポートオープン
hComm = CreateFile("COM2", GENERIC_READ | GENERIC_WRITE,
0, NULL, OPEN_EXISTING, 0, NULL );
//----------DCB構造体を使って通信設定をする
BuildCommDCB("9600,n,8,1",&myDCB);
//----------DCB構造体セット
SetCommState(hComm, &myDCB);
//----------タイムアウト設定
COMMTIMEOUTS CommTimeout;
GetCommTimeouts(hComm,&CommTimeout);
CommTimeout.ReadIntervalTimeout = 500;
CommTimeout.ReadTotalTimeoutMultiplier = 0;
CommTimeout.ReadTotalTimeoutConstant = 500;
CommTimeout.WriteTotalTimeoutMultiplier = 0;
CommTimeout.WriteTotalTimeoutConstant = 500;
SetCommTimeouts(hComm,&CommTimeout);
//----------受信
char RecBuff[64];
DWORD ReadLen;
ReadFile(hComm,RecBuff,64,&ReadLen,NULL);
//----------エディットボックスに表示
m_ed1.SetWindowText(RecBuff);
}
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
この回答への補足
タイムアウト設定を下記のように変更したら数値を読み込めました。ありがとうございます。
//----------タイムアウト設定
COMMTIMEOUTS CommTimeout;
GetCommTimeouts(hComm,&CommTimeout);
CommTimeout.ReadIntervalTimeout = 3000;
CommTimeout.ReadTotalTimeoutMultiplier = 3000;
CommTimeout.ReadTotalTimeoutConstant = 3000;
CommTimeout.WriteTotalTimeoutMultiplier = 3000;
CommTimeout.WriteTotalTimeoutConstant = 3000;
SetCommTimeouts(hComm,&CommTimeout);
No.2
- 回答日時:
表示された文字列を見る限り、RecBuffの中身は宣言時のままのように見えます。
ReadFile()の戻り値やReadLenの値はどうなってますか?
念のために参考:ReadFile()のリファレンス
http://www.microsoft.com/japan/msdn/library/ja/j …
この回答への補足
どうも受信の実行結果は安定しません。
実行結果が下記のようになることもあります。
K-XFFFvフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフ・
これをデバッグで見てみると
ReadFileの戻り値:1
ReadLenの値は7です。
RecBuff[0] → 75 'k'
RecBuff[1] → 45 '-'
RecBuff[2] → 88 'J'
RecBuff[3] → 70 'F'
RecBuff[4] → 70 'F'
RecBuff[5] → 70 'F'
RecBuff[4] → 118 'v'
RecBuff[5] → -52 'フ' 以下、同じ
返答ありがとうございます。
ReadFile()の戻り値は1で、ReadLenの値は0となっています。何も読み取れていないということでしょうか?
実はDWORDという型の意味も良くわかっていません。
よろしくお願いします。
No.1
- 回答日時:
VC++は使ったことがなく的確な事は言えませんので
私の経験を書きます。
私も某電気メーカーの製造工場に勤めていて、業務上必要に迫られてSerial通信のアプリを作った事があります。
但し、私の場合は、BorlandC++Builder 5.0でWindows系のクライアントで動作するアプリでしたが。APIでSerial通信を記述する程のスキルも無かったのでVectorにてBCB用のDLLを拾ってきて作成しました。VC++用のコンポーネントも有ったと思いますので参考URL見て下さい。
あと、出来れば計測器とPCの間に咬ませてTX・RXのデータを確認出来る通信モニタも探すとFreeでも有ると思うのでデバッグに有効だと思います。
私の場合、シェアウェア(\9000位だったかな)の 『Serial device monitor』を購入して使ってます。
(専用ケーブルが必要ないので便利です)
あまり参考にならなかったらごめんなさい。
参考URL:http://search.vector.co.jp/search?query=232&path …
返答、ありがとうございます。
こういうものもあるのだなと参考になります。
ただ、今回はC++のスキルアップもかねてなんとか自力でとは思っています。(あまりに時間がかかりそうだったら何かダウンロードなりしてみます。そのときはまたお願いします。)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(恋愛相談) 男女が話していて、2人とも手を震わせている時は両片思いですか?(*´艸`)フフ 2 2022/05/20 18:22
- その他(恋愛相談) 男女が話していて、2人とも手を震わせている時は両片思いですか?(*´艸`)フフ そうだったらいいなあ 3 2022/05/20 19:27
- その他(恋愛相談) 男女が話していて、2人とも手を震わせている時は両片思いですか?(*´艸`)フフ 最近そんな感じなので 1 2022/05/20 21:23
- 児童福祉施設 昔、養護施設の娯楽室で上を向いて気持ちよく寝ていたら、3人の保母さんから遊び半分で馬乗りになって来ら 2 2023/06/09 13:19
- 警察官・消防士 妄想しますけど、仮に美人の婦人警官に腰の上に座られて拳銃を口に充てられて腰を振られながら、気持ちイー 3 2023/06/12 09:27
- 浮気・不倫(恋愛相談) 相談です! 私は部活で同性の先輩がいます。(卓球) その先輩は恋愛的に好きなのか、憧れなのかが分から 2 2022/04/18 23:00
- 賃貸マンション・賃貸アパート ご近所トラブルについて 私は夫からのdvが原因で、シェルターに一時保護して頂いて、その後夫と関わらな 2 2022/05/31 20:52
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- Visual Basic(VBA) 動かなくなってしまった古いVBAを動くようにしたい 8 2022/09/20 13:57
- プリンタ・スキャナー キャノンmp490プリンター【エラー番号5400】で【プリンタートラブルが発生しました。電源を入れ直 2 2023/07/24 17:45
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C# シリアル通信でデータ受信...
-
winsockでソケット通信の開発を...
-
「スイッチングハブのバッファ...
-
SerialPortのDataReceivedイベ...
-
VB2005でWin32APIを用いてRS-23...
-
バイナリデータ受信時のデータ順
-
RS232C通信のC言語プログラム:...
-
recv関数の受信結果について
-
誤り制御方式の誤り検出再送要...
-
socket: recvはいつ,どれだけ...
-
UDP処理のエラーについて
-
Macターミナルで実行中のプログ...
-
VBAの配列サイズとメモリに関して
-
緯度、経度の 10進法と 60進法...
-
C言語で、メモリを解放しないで...
-
なんかC言語でプログラム書いて...
-
タスクマネージャーのプロセス...
-
バックグラウンドのプロセスの...
-
TCP/IP通信時のサーバーからの受信
-
プログラミング ソースコード
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C# シリアル通信でデータ受信...
-
WriteFile()でのデータ送信がで...
-
winsockでソケット通信の開発を...
-
「スイッチングハブのバッファ...
-
socket: recvはいつ,どれだけ...
-
シリアル通信の出力バッファと...
-
Connection reset by peer
-
RS232C通信(PC⇔PLC)
-
RS-232Cでバイナリデータを受信...
-
WaitForMultipleObjects関数の...
-
Linuxでのシリアル通信について...
-
rs232cでの受信データ(mscomm)...
-
UDP処理のエラーについて
-
SocketのSend関数でのCLOSEの検...
-
ソケット通信内 read関数について
-
recv関数の受信結果について
-
シリアルポート通信
-
MSCommでoutputできない
-
SerialPortのDataReceivedイベ...
-
VB2005でWin32APIを用いてRS-23...
おすすめ情報