ab.com コミュニティ

ActiveBasicを通したコミュニケーション
現在時刻 - 2024年4月28日(日) 04:23

全ての表示時間は UTC+09:00 です




新しいトピックを投稿する  トピックへ返信する  [ 3 件の記事 ] 
作成者 メッセージ
投稿記事Posted: 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」のままだから、データが全然来ていない。

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

以下、コードです。


通報する
ページトップ
   
投稿記事Posted: 2006年7月13日(木) 10:51 
オフライン

登録日時: 2005年6月01日(水) 23:27
記事: 82
お住まい: 北海道札幌市
ステップ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
等で調べられますので。


通報する
ページトップ
投稿記事Posted: 2006年7月13日(木) 17:28 
String変数宣言に間違いがあったとは。
ご指摘ありがとうございます。

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


通報する
ページトップ
   
期間内表示:  ソート  
新しいトピックを投稿する  トピックへ返信する  [ 3 件の記事 ] 

全ての表示時間は UTC+09:00 です


オンラインデータ

このフォーラムを閲覧中のユーザー: Bing [Bot], Semrush [Bot] & ゲスト[11人]


トピック投稿:  可
返信投稿:  可
記事編集: 不可
記事削除: 不可
ファイル添付: 不可

検索:
ページ移動:  
Powered by phpBB® Forum Software © phpBB Limited
Japanese translation principally by ocean