質問者
VB6のエラー8020について

質問
-
Windows10でVB6をデバイスと通信させると、「実行時エラー:8020 通信デバイスの読み取り時にエラーが発生しました。 」のエラーが出ます。
Windows8.1やWindows7の時にはこのエラーは出なかったのですが・・・
ネット等でも調べてみたのですが、いまいち原因が分かりません。
COMポートのドライバーに関してですが、デバイスの開発元に問い合わせを行いWin10に対応しているとの回答をいただきました。
またRS232Cの通信ソフトを使いWin10とデバイスの通信の動作の確認は取りました。
解決方法があればお教えいただきたいです。
よろしくお願い致します。
すべての返信
-
フォーラム オペレーターの星 睦美です。初心者さんです さん、投稿ありがとうございます。
先にTechNet フォーラムに投稿いただいた VB6のエラー8020について を読みました。
開発したプログラムをデバッグした結果はいかがでしょうか。回答者が状況を理解しやすくなり参考になるアドバイスができますので、よろしければ実行した結果の詳しい内容をお知らせいただければと思います。参考までに以下のページもご覧ください。
・フォーラムのご利用方法(質問の投稿)について :
※フォーラムで役立つ回答がありましたら投稿者からの[回答としてマーク] をお願いします。フォーラム オペレーター 星 睦美 - MSDN Community Support
-
ご返答いただきありがとうございます。
フォーラムの利用方法を参考に纏めてみました。
[環境]
・使用している Visual Studio のバージョン・エディション:Visual Studio 6 SP6
・使用している言語の種類等:日本語
・実行環境の OSのバージョン・エディション:Windows 10 64Bit
・プロジェクトの種類:Windows フォームアプリケーションになります。
ソースコードですが
Function MsCommDSTInput(p As MSComm) As String
Dim c As String * 1
Dim s$
Dim TimeCunt!
s = ""
TimeCunt = Timer
Do
Do
If err_Stop > 0 Then Exit Function
If Timer > TimeCunt + 5 Then MsCommDSTInput = "": Exit Function
Loop Until p.InBufferCount > 0
c = p.Input
この時のc = が「通信デバイスの読み取りエラーです。」で止まってしまい困っております。
-
使用しているOSがWindows10の「64bit」というのが気になります。
と、いいますのは VB6標準のMSCommは、16bit→32bitになったあたりに、やっと提供されはじめたDLLであり、64bit環境で用いるには機器のドライバ側が「32bit(x86)から呼び出されることを想定した64bitデバイスドライバ」でないと、正常に交信できないケースがよくあるからです。
(私も 複数のケースで その原因により Input に 8020 が返ってきた経験があります)
もし可能なら、32bit OS + 32bitデバイスドライバを入れた環境で再現するか、ためしてみるのもよいかもしれないと思います。