none
VB6のエラー8020について RRS feed

  • 質問

  • Windows10でVB6をデバイスと通信させると、「実行時エラー8020 通信デバイスの読み取り時にエラーが発生しました。 」のエラーが出ます。

    Windows8.1やWindows7の時にはこのエラーは出なかったのですが・・・

    ネット等でも調べてみたのですが、いまいち原因が分かりません。

    COMポートのドライバーに関してですが、デバイスの開発元に問い合わせを行いWin10に対応しているとの回答をいただきました。

    またRS232Cの通信ソフトを使いWin10とデバイスの通信の動作の確認は取りました。


    解決方法があればお教えいただきたいです。

    よろしくお願い致します。

    2015年12月16日 4:41

すべての返信

  • フォーラム オペレーターの星 睦美です。初心者さんです さん、投稿ありがとうございます。

    先にTechNet フォーラムに投稿いただいた VB6のエラー8020について を読みました。

    開発したプログラムをデバッグした結果はいかがでしょうか。回答者が状況を理解しやすくなり参考になるアドバイスができますので、よろしければ実行した結果の詳しい内容をお知らせいただければと思います。参考までに以下のページもご覧ください。

    ・フォーラムのご利用方法(質問の投稿)について

    ※フォーラムで役立つ回答がありましたら投稿者からの[回答としてマーク] をお願いします。


    フォーラム オペレーター 星 睦美 - MSDN Community Support

    2015年12月16日 8:05
  • ご返答いただきありがとうございます。

    フォーラムの利用方法を参考に纏めてみました。

    [環境]

    ・使用している 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 = が「通信デバイスの読み取りエラーです。」で止まってしまい困っております。

    2015年12月17日 6:39
  • ここで言っている「デバイス」とは何のことですか?最初は拡張COMポートを増設しているのかと思いましたが、Windows10とデバイスとの通信では問題ないとの表現に違和感を覚えました。

    もし拡張COMポートで動かないということでしたら、まずは標準COMポートで動作を確認しては如何でしょう?


    甕星

    2015年12月17日 21:22
  • 使用しているOSがWindows10の「64bit」というのが気になります。
    と、いいますのは VB6標準のMSCommは、16bit→32bitになったあたりに、やっと提供されはじめたDLLであり、64bit環境で用いるには機器のドライバ側が「32bit(x86)から呼び出されることを想定した64bitデバイスドライバ」でないと、正常に交信できないケースがよくあるからです。
    (私も 複数のケースで その原因により Input に 8020 が返ってきた経験があります)

    もし可能なら、32bit OS + 32bitデバイスドライバを入れた環境で再現するか、ためしてみるのもよいかもしれないと思います。
    2016年5月9日 6:56