tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板 [ツリー表示へ]   [Home]
一括表示(VB6.0)
タイトル助けてください。ブルー画面
記事No11343
投稿日: 2008/02/06(Wed) 15:43
投稿者Pman
はじめまして。VB初心者です。

現在、MSCommでシリアルポートを使って、ファームウェアとの通信を行おうとしています。
しかし、blue toothが使っているポートを誤って使ってしまい、ブルー画面が出てしまいます。

以下、詳細です。少し長いですが、なるべく詳しく書きますので、
御一読と御回答よろしくお願いいたします。


1.まず、通信に使用できるポートを調べるため、

COM1〜COM16まで、
MSComm1.PortOpen = True
にて、ためしにポートを開いて、エラーをチェックしてます。

ここで、ポートによって、err=8002、8012、0が出るので、
err=0,8012の時には、そのポートを「使用候補」として、
配列にためておきます。

2.次のステップで、前のステップで「使用候補」にしたポートをつかって、
実際に通信テストを行います。

通信テストでは、通信相手であるファームウェアに、

MSComm1.Output = "?" & Chr(&HD)

を送ります。通常、通信がうまくいけば、ファームウェアから
”OK”が返ってくるようになっているので、

Form1.MSComm1.InputMode = comInputModeText
Buffer = Form1.MSComm1.Input

を使って無事に受け取れたポートが「真の使用ポート」であるとして、

それ以降そのポートを使って進めています。


3.しかし、ひとつ問題がありまして、

使っているパソコンが、blue toothを使っていて、

常にCOM5がblue toothに使われています。

このCOM5を使って、先ほどの
MSComm1.Output = "?" & Chr(&HD)
の作業をした瞬間、パソコンがブルー画面になってしまいます。

はじめは、err=8012と出ているにも関わらず、ポートを無理矢理使用しているから、
と思ったのですが、

他の、err=8012が出ているポートは、使用してもブルー画面になりません。

おそらく問題は、blue tooth で使っているポートを使って通信を行ってしまっている
事だと思われますが、
blue toothが使われているポートと、そうでないポートの見分けがつかないので、
(どれもerr=8012であるため)

逃げようがありません。。


どなたか、助けてください。よろしくお願いいたします。

[ツリー表示へ]
タイトルRe: 助けてください。ブルー画面
記事No11344
投稿日: 2008/02/06(Wed) 15:44
投稿者Pman
使っているバージョンを載せ忘れてしまいました。

VB6.0を使っています。

Pman

[ツリー表示へ]
タイトルRe: 助けてください。ブルー画面
記事No11346
投稿日: 2008/02/06(Wed) 18:29
投稿者のぶ
書いている事に矛盾がありませんか?

> 1.まず、通信に使用できるポートを調べるため、
> COM1〜COM16まで、
> MSComm1.PortOpen = True
> にて、ためしにポートを開いて、エラーをチェックしてます。


> 使っているパソコンが、blue toothを使っていて、
> 常にCOM5がblue toothに使われています。

「常にCOM5がblue toothに使われています」とポートが特定されているのですよね?

> このCOM5を使って、先ほどの
> MSComm1.Output = "?" & Chr(&HD)
> の作業をした瞬間、パソコンがブルー画面になってしまいます。
> blue toothが使われているポートと、そうでないポートの見分けがつかないので、

「blue toothが使われているポートと、そうでないポートの見分けがつかない」と
言う事は無いのでは?? 
「何時もblue toothが使われているポートはCOM5」なのでしょう???
COM5以外にもblue toothが使われているポートがあると言う事ですか?

> COM1〜COM16まで、
> MSComm1.PortOpen = True
> にて、ためしにポートを開いて、エラーをチェックしてます。
> このCOM5を使って、先ほどの
> MSComm1.Output = "?" & Chr(&HD)
> の作業をした瞬間、パソコンがブルー画面になってしまいます。

この事に関してCOM5を除けば良いのではありませんか?
For文で回してチェックしているのでしょうから
For i = 1 to 4 と
For i = 6 to 16 の2ケに分けたら良いのでは??


私が勘違いしているのかな....

[ツリー表示へ]
タイトルRe^2: 助けてください。ブルー画面
記事No11347
投稿日: 2008/02/07(Thu) 06:51
投稿者Pman
> 書いている事に矛盾がありませんか?

すみません!説明不足でした。


「blue toothがCOM5で使われている」というのは、デバイスマネージャで確認いたしました。


>この事に関してCOM5を除けば良いのではありませんか?

「常に」と言ってしまいましたが、実は、PCをリカバリーすると、
blue toothの使用するポートがCOM5以外へ変更されてしまうことがあるようなので、
COM5を除くことができないのです。。


上記の理由から、blue toothを使っているポートをスルーすることはできず、
かといって、blue toothを使っているポートで通信テストを行うとブルー画面になってしまう、という問題を抱えていて、

自分の中では、

なぜ、blue tooth を使用しているポートで通信テストを行った時だけブルー画面になるのか、(他のポートでは、通信テストを行った際に、ブルー画面にならないので、数秒待って、値が返ってこない事を“失敗”とみなして次に進むことができるのですが。。)
という謎を解明せねばと考えています。


のぶさん、私の至らぬ説明にも関わらずお答え頂きまして、本当にありがとうございます。。

[ツリー表示へ]
タイトルRe^3: 助けてください。ブルー画面
記事No11348
投稿日: 2008/02/07(Thu) 17:41
投稿者のぶ
下記のURLを見て下さい。 (先頭のhを省いて投稿)

http://homepage1.nifty.com/MADIA/vb/vb_bbs/200404/200404_04040005.html

岡田 之仁さんが「ここの掲示板の・・・」と書かれているURLの
サンプルを試して見て下さい。
これでも
「blue toothを使っているポートで通信テストを行うとブルー画面になってしまう」?

[ツリー表示へ]
タイトルありがとうございました!!
記事No11349
投稿日: 2008/02/07(Thu) 21:59
投稿者Pman
さっそく教えていただいたページのサンプルを試してみました。
すると、無事に悩みは解決いたしました。

なぜ自分の方法がダメだったのか、をもう一度考えてみようと思います。

のぶさん、本当にありがとうございました!!m(_ _)m

Pman

[ツリー表示へ]