RS232C通信関係が、うまく動きません。

返信する


答えを正確に入力してください。答えられるかどうかでスパムボットか否かを判定します。

BBCode: ON
[img]: ON
[url]: ON
スマイリー: OFF

トピックのレビュー
   

展開ビュー トピックのレビュー: RS232C通信関係が、うまく動きません。

ヒントありがとうございます

by DriedPlum » 2006年7月13日(木) 17:28

String変数宣言に間違いがあったとは。
ご指摘ありがとうございます。

GetLastError関数も調べてみます。ありがとうございます。

Re: RS232C通信関係が、うまく動きません。

by ノッチ » 2006年7月13日(木) 10:51

ステップ3はなにが原因かわからないのでとりあえずステップ4から解決しましょう。
もしかしたらこれでステップ3も解決するかもしれません。

> ステップ4 ?ReadFileも変
> ReadFile関数を実行すると、「関数の帰り値」では成功になっているが、  受信した値は全て0000・・・・(null文字)
> 何秒待っても、受信バッファー文字数が「0」のままだから、データが全然来ていない。

コード: 全て選択

> '読んでみると?
> Dim rChr As String
> Dim rLen As Long
> 
> dummy  = ReadFile(hComm, VarPtr(rChr), 110, VarPtr(rLen), ByVal 0)    
>  Print dummy ;rLen
N88はどうかわかりませんが、ABのString型は宣言しただけではバッファが確保
されていません。
ですので、
Dim rChr As String
rChr=ZeroString(110)
のようにしてしようします。

ちなみにAPIが失敗した場合は
GetLastError()
という関数を使用すればエラーコードが取得できます。
エラーコードの詳細は以下
http://homepage3.nifty.com/aokura/tips/e000000.html
等で調べられますので。

RS232C通信関係が、うまく動きません。

by DriedPlum » 2006年7月13日(木) 03:39

N88BASICの文法が使える!につられてABを勉強しはじめ、ヘルプを見ながらなんとか、下記のようなモジュールを作りました(掲載されている皆様のプログラムを切り貼りしただけですが・・)。でも、正常に動作してくれないのです。
なぜ動かないのかについて、ヒントを頂きたく、よろしくお願いします。

最終目標 GPSアンテナ出力データ(ASCII)を受け取り、内容をちょこっと加工してから地図アプリに渡したい。

GPSアンテナの仕様;1秒おきに、現在座標と速度、向いている方向を、こちらの都合にお構いなく、強制的に送信してくる。このため、バッファーオーバーフローに注意&対処する必要がある。
この装置はハイパーターミナル(9600ボー、データ8ビット、ノンパリ、ストップビット1 の設定)で正常に動くことを、ターゲットパソコン(ノート;winXp)で確認済み。

現在組んだコードのエラー状況;

ステップ1 ○
CreateFile関数はOKらしい (COM7)

ステップ2 ○
通信設定SetCommState関数もOKらしい (9600ボー、8ビット)
GetCommState関数で見ると、9600とか、設定値がきちんと帰ってくる。

ステップ3 ×
ClearCommError関数が変 
6秒待ってさえ、受信バッファーは、 「lpStat.cbInQue=0」 。何も入っていない

ステップ4 ?ReadFileも変
ReadFile関数を実行すると、「関数の帰り値」では成功になっているが、  受信した値は全て0000・・・・(null文字)
何秒待っても、受信バッファー文字数が「0」のままだから、データが全然来ていない。

ということで、解決のヒントを頂けると、とても嬉しいです。

以下、コードです。

ページトップ