シリアル通信で10Byte受信するまで待ち続けたいのですが、0ByteでReadFileが抜けてしまいます。
ReadFileの最後のパラメタが、NULLならば第3パラメタの値まで待ち続けると思っていたのですが、なにか設定が足りないのでしょうか?
タイムアウト値は0にしています。(色々変えて見ましたが同じでした)
HANDLE hComm; /* シリアルポートのハンドル */
DCB dcb;
char* pszBuf="1234567890"; /* 書込・読込領域 */
hComm = CreateFile("COM1",
GENERIC_READ | GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL);
GetCommState(hComm, &dcb); /* DCB を取得 */
dcb.BaudRate = 9600;
dcb.ByteSize = 8;
dcb.Parity = NOPARITY;
dcb.StopBits = ONESTOPBIT;
dcb.ReadIntervalTimeout = 100;
dcb.ReadTotalTimeoutMultiplier = 0;
dcb.ReadTotalTimeoutConstant = 0;
dcb.WriteTotalTimeoutMultiplier = 10;
dcb.WriteTotalTimeoutConstant = 500;
SetCommState(hComm, &dcb); /* DCB を設定 */
DWORD dwRead; /* ポートから読み出したバイト数 */
ReadFile(hComm, pszBuf, 10, &dwRead, NULL);
No.1ベストアンサー
- 回答日時:
ReadFileが正常終了しているかどうかは確かめたでしょうか。
正常終了していない場合、GetLastErrorでエラーの原因を取得して調べることができます。また、提示されたプログラムコードは誤っておりコンパイルできません。せめてコンパイルくらいはできるコードを提示しましょう。
この回答への補足
早々のご回答ありがとうございます。
ReadFileは正常終了していますが、
ポートから読み出したバイト数は「0」です。
コンパイルエラーは、タイムアウト設定の処理を
コピーし忘れていました。
HANDLE hComm; /* シリアルポートのハンドル */
DCB dcb;
char* pszBuf="1234567890"; /* 書込・読込領域 */
hComm = CreateFile("COM1",
GENERIC_READ | GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL);
GetCommState(hComm, &dcb); /* DCB を取得 */
dcb.BaudRate = 9600;
dcb.ByteSize = 8;
dcb.Parity = NOPARITY;
dcb.StopBits = ONESTOPBIT;
SetCommState(hComm, &dcb); /* DCB を設定 */
// タイムアウト設定
COMMTIMEOUTS to;
to.ReadIntervalTimeout = 0;
to.ReadTotalTimeoutMultiplier = 0;
to.ReadTotalTimeoutConstant = 0;
SetCommTimeouts(hComm,&to);
DWORD dwRead; /* ポートから読み出したバイト数 */
DWORD dwErrors; /* エラー情報 */
COMSTAT ComStat; /* デバイスの状態 */
ClearCommError(hComm, &dwErrors, &ComStat);
ReadFile(hComm, pszBuf, 10, &dwRead, NULL);
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# c言語の問題です 2 2023/07/21 10:51
- C言語・C++・C# TCP/IP通信時のサーバーからの受信 2 2022/11/23 09:11
- C言語・C++・C# バイナリファイルをコピーするのにかかる時間を測りたいのですが実行するとFatel error:gli 2 2022/11/03 01:10
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- その他(データベース) 放送大学のデータベースの講義を、興味本位で見ていたら気になることがありました。 講師が、null を 5 2022/04/21 17:06
- C言語・C++・C# スタックフレームの消滅 6 2023/05/20 12:33
- PHP PHPでCSVを出力するさいに、ループの中で前の行の値を変更したい 3 2022/10/27 17:44
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- Perl 画像が表示でnull; this.src 1 2022/04/19 11:31
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
C# シリアル通信でデータ受信時の欠損について
C言語・C++・C#
-
シリアル通信の出力バッファと送信完了イベントについて
C言語・C++・C#
-
CreateFile関数でCOMポートが開けない
C言語・C++・C#
-
-
4
WriteFile()でのデータ送信ができなくなる
C言語・C++・C#
-
5
VB.netで、シリアル通信のタイムアウト処理について
Visual Basic(VBA)
-
6
シリアル通信プログラム(受信)について
C言語・C++・C#
-
7
charからLPTSTRへの変換方法
C言語・C++・C#
-
8
WaitCommEventのタイムアウトについて
C言語・C++・C#
-
9
CStringのFindで文字列検索を行いたいのですが
C言語・C++・C#
-
10
ReadFileについて
C言語・C++・C#
-
11
シリアル通信でのデータ受信
C言語・C++・C#
-
12
ClearCommError呼び出し時のCE_OVERRUN対処策
C言語・C++・C#
-
13
C#で通信処理。応答がない場合、すぐエラーにしたい
その他(プログラミング・Web制作)
-
14
RS232cを用いた送信プログラム
C言語・C++・C#
-
15
COMポート 名前を取得する方法
C言語・C++・C#
-
16
CStringからchar*への型変換について教えてください。
C言語・C++・C#
-
17
char*を初期化したいのですが
C言語・C++・C#
-
18
C#で構造体の配列を持った構造体を使いたいのですが
C言語・C++・C#
-
19
シリアル通信時のデータ受信方法
Visual Basic(VBA)
-
20
SerialPortのDataReceivedイベントについて
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
アプリケーションのDLLファイル...
-
<unistd.h>をVisualStudioでつ...
-
実行後にコンパイルに失敗しま...
-
math.hに含まれる関数が使えない
-
#If True Then の # って何??
-
ビープ音が鳴りません・・・
-
C言語をコンパイルするとコンピ...
-
gccを使ってのリンク時のライブ...
-
return (0)の括弧は何故付ける
-
c言語です コンパイルした時に...
-
C#で char型とstring型の比較で...
-
ヘッダーファイル『windows.h』...
-
プレコンパイルの意味を教えて...
-
バスエラーとは?
-
同じEXE・同じファイルで解析結...
-
C言語のグローバル変数の初期...
-
ubuntuで作ったアプリを他のLin...
-
#defineとconstについて
-
HEWの警告のことについて
-
実行ファイルが作成環境以外のP...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
<unistd.h>をVisualStudioでつ...
-
アプリケーションのDLLファイル...
-
C言語をコンパイルするとコンピ...
-
実行後にコンパイルに失敗しま...
-
math.hに含まれる関数が使えない
-
ビープ音が鳴りません・・・
-
c言語です コンパイルした時に...
-
<math.h>ヘッダを入力している...
-
C#で char型とstring型の比較で...
-
共有ライブラリの内容確認について
-
すべてのリビルド: 0 正常、 0 ...
-
[COBOL] ソースの復帰
-
64ビットのlinuxで32ビットメモ...
-
VS2010環境で2点ほど質問
-
gcc バージョン違いによるコン...
-
ヘッダーファイル『windows.h』...
-
C言語で作ったらWindowsでもMac...
-
自作DLLの中身を暗号化
-
MVSマシンで0C7でABENDしたので...
-
Verilog_HDLでのdefineとifdef
おすすめ情報