こんにちは、どうか僕の問題を解決してくださいませんか。いまシリアルポートを会したハードウェアの処理を行っています。しかし、ハードウェアに反応があるときと、ないときがあるのです。自分のプログラムで制御しようとすると、コマンドの応答がまったくなく、テラタームでコマンドを送信すると、応答があります。その後、再度自分のプログラムで制御すると、今度は反応があり、うまく制御できます。この状況を経験した方はいませんでしょうか。以下が初期化部分のコードです。
/////////********
以下の関数でポートを開きます。
***************:///////////
CreateFileCom(comFileName, &phCom, lBaudRate, lDataByteSize,
lParity, lStopBit)
///////*******省略
{
DCB dcb;
GetCommState((*phCom),&dcb);
dcb.BaudRate = lBaudRate;
dcb.ByteSize = (BYTE)lDataByteSize;
dcb.Parity = (BYTE)lParity;
dcb.StopBits = (BYTE)lStopBit;
SetCommState((*phCom),&dcb);
}
}
/////////////*********
以下がメイン関数の初期化部分です。
**************/////////////
FILE* fp;
LPCSTR comFileName = "COM1";
long lBaudRate = CBR_9600;
long lDataByteSize = 8;
long lParity = NOPARITY;
long lStopBit = ONESTOPBIT;
int returnValue;
char str[1024];
char end_str[2] = "\r";
int j;
fRetVal = CreateFileCom(comFileName, &phCom, lBaudRate, lDataByteSize,
lParity, lStopBit);
よろしくお願いいたします。
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
もしかして、SetCommStateがうまく働いていないのでは?
Cはいいのですが、何Cで組んでます?
ちょっと、DCB が何をカプセル化したものかわからないので、確かとはいえませんが・・。
ただ、テラターム 処理後に 動作するということは、当該命令だけでは、ACTIVE 状態 にはなりきっていないと思われますね。
つまり、COMが活性状態では無いので、いくら呼び出してもダメとか、OSへの通知が必要な場合などが、考えられませんか。
なにか、もうワンアクション必要なのではないでしょうか??
とりあえず、ハードがらみで、環境がわからないのは、キツイです
補足要求:
・使用機器(パソコンの機種。せめて、PC98かDOS/Vか)
・OS(DOSか、Winかすらわかりません)
・Cのバージョン(この場合コンパイラのバージョンというより、製品名+製品バージョンで)
お返事が遅れまして申し訳ありません。やはり、おっしゃるとおり、COMポートの初期化が問題でした。(DCBの設定を、しらみつぶしに変えたらできました。)C言語の経験が浅く、C言語といってもさまざまな種類があり、それぞれに違った拡張機能を持っているんですね。これからはそのあたりを明記して質問させていただきます。これからもよろしくお願いします。今回の場合は、MSのVC++6.0で、WINDOWS NT4.0 でプログラミングしました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# TCP/IP通信時のサーバーからの受信 2 2022/11/23 09:11
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- Visual Basic(VBA) VBAでfunctionを利用しようとしたときに「引数は省略できません」というエラーが出ます 1 2022/10/15 16:30
- Visual Basic(VBA) VBA ステータスバー DoEvents 1 2023/03/30 12:22
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- 工学 制御工学の問題について 1 2022/11/01 23:45
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
P制御、PI制御、PID制御それぞ...
-
PIDの調整のコツ
-
いじめられて嬉しい心理のは、...
-
三相200Vと、電源の周波数...
-
カスケード制御とオート制御の...
-
Hfとは何ですか?(蛍光灯の種...
-
電力量計算(インバータ)
-
フィードフォワード制御とは簡...
-
CNC自動旋盤とNC旋盤の違い
-
PID制御のパラメータの決め方
-
直流モーターを比例制御 積分制...
-
USBからリレーを制御する方法に...
-
蒸気タービン調圧、調速制御の...
-
振とう機の作り方
-
怒っていないのに癇癪を起こさ...
-
制御量と被制御量の違い
-
制御工学における動特性、静特性
-
可安定、可検出
-
エアーバルブとエアーオペレー...
-
Libreoffice calc 吹き出しのツ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
いじめられて嬉しい心理のは、...
-
三相200Vと、電源の周波数...
-
蒸気タービン調圧、調速制御の...
-
PID制御のパラメータの決め方
-
Hfとは何ですか?(蛍光灯の種...
-
PIDの調整のコツ
-
エアーバルブとエアーオペレー...
-
サーボモーターの速度指令について
-
P制御、PI制御、PID制御それぞ...
-
サーボモータのゲイン調整とは
-
エクセルVBAにて nアップ印刷...
-
モーターの回転速度を遅くする...
-
カスケード制御とオート制御の...
-
パソコン音声のミュートをVBAか...
-
自動制御について質問です。 空...
-
CNC自動旋盤とNC旋盤の違い
-
MariaDB データベースのユニー...
-
モーターについているタコジェ...
-
ポンプの消費電力の考え方
-
自動制御について質問です。 リ...
おすすめ情報