お世話になります。
現在VB6で PC−機器間をUSB通信しようとしています。
機器に付属されているUSBドライバをインストールして通信を開始すると、
途中でPCがフリーズしてしまいマイクロソフトのエラー情報に[デバイスドライバによるエラー]と表示されます。これは、単純にデバイスドライバが悪いのでしょうか?
vbソフトの使い方が悪いのでしょうか?経験ある方いらっしゃいますか?
MSComm1.Settings = "9600,n,8,1"
MSComm1.PortOpen = True
MSComm1.InputLen = 0
MSComm1.DTREnable = True
MSComm1.InBufferCount = 0
MSComm1.OutBufferCount = 0
すみません途中で送信してしまいました。
続き・・・・
vbの設定は上記の様にしました。
通信は、問題なく行われる時もあります。
参考
通信機器は、 オムロンの通信変換器 K3SC
RS-232Cでの通信は問題なく出来ます。
回答よろしくお願いします。
ちょっと状況が理解できません。
まず、USB通信とシリアル通信が全く別物という事はご存知でしょうか?
>USB通信
といっておきながら、掲載されているコードはシリアル通信のものですよね?
間にオムロンの通信変換器を挟んでいるのでしょうか?
↓こんな感じ?
(PC)232C⇔232C(オムロン)USB⇔USB(機器)
↓これは無茶苦茶ですよ。
(PC)232C⇔USB(機器)
私は、そのオムロンの通信変換器の事はよくわかりませんが、
無茶をしているなーという気がします。
オムロンの機器が、どんな機能か知りませんが、
オムロンの機器に、USB機器のドライバをインスできなければ、
無理なんじゃないかと思います。
というのは、USB通信では、機器固有のベンダID,デバイスIDに対して信号を送るためです。
232C通信の段階では、当然そんな情報は含まれていません。
232Cで通信しようとしているのが一番の問題と思いますが。。。
もし、機器のベンダがドライバの関数を公開していれば、
その関数を使用して機器と通信すればいいし、
公開していなければ、
DDKを使用してドライバを自作するか、
柏野政弘氏の汎用USBドライバを使用するしかないと思いますが。。。
オムロン機器に付属しているドライバソフトを使用しています。
ドライバソフトは、MSCommから出力される信号をUSB仕様電文にしてくれるものでは無いのでしょうか?
追加
変換器
(PC)USB⇔USB(オムロン)RS-485⇔RS-485(機器)
K3SCのUSBデバイスドライバーは確か空いているCOMポートに
仮想のCOMポートを割り付けて、プログラムは全くUSBを意識しないで
232Cのプログラムが走ると言うものですよね。
COMポート設定のコードだけでは何が悪いか全く判りませんが、
>オムロン機器に付属しているドライバソフトを使用しています。
ということなので、先ずはオムロンのサイトから最新のデバドラを
ダウンロードしてみてはいかがでしょうか。
>通信は、問題なく行われる時もあります。
という事なので、ケーブルが長いとか、ボーレートをおとして見るとか。
232Cで最初に接続させて成功したら、USB仮想に切り替えるとか。
USB->232C変換は他のメーカーの物を使用してみるとか。
あまり参考になりませんか。(^^;
そうそう、近頃のパソコンシリアルないんだよね。本当にこまちゃうよね!
シリアル通信しかできないソフトって苦労?
ピロアキさん意味とれなかったのかなぁ!
ちょっとピンずれ?
だから、私はI/Oデータの変換器(USBとRS232C)で232Cから422へ変換する。(VBは難しいのでは?)
オムロン自体が仮想COMポートの機能を持つUSB機器なわけですね。
>RS-232Cでの通信は問題なく出来ます。
↓これはできるけど
(PC)USB⇔USB(オムロン)RS-232C⇔RS-232C(機器)
↓これはできないという事でしょうか?
(PC)USB⇔USB(オムロン)RS-485⇔RS-485(機器)
でしたら、Vbの問題ではないでしょうね。
オムロンに聞かれるのが一番と思います。
#PortOpenの後にDTREnableってどうかな?
#PortOpen = Trueは一番最後に入れた方がいいと思います。
オムロンの変換器は、USBとRS-232Cの2入力どちらか選択でき、その信号をRS485の出力に変換してくれるものです。
本題は・・・・
VB6(MSCOM)で作成した通信ソフトをUSBポートで通信すると1〜2分は動作するのですが途中でパソコンがフリーズするのです。RS-232Cポートを使用した場合は全く問題ないのです。MSのエラーレポートではデバイスドライバのエラーと判断されてしまいます。しかし、私のソフト事態に問題があるのではと思いここに掲示させてもらいました。
とくはんHondoh さんの言う通り近頃のパソコンはシリアルがなくて対応を迫られています。
232C(PC)->オムロン変換機(232C)->458接続機器
これが出来て
232Cソフト->232C仮想ポート(USB)->オムロン変換機(USB)->458接続機器
これが出来ないと言っているのでは。
話だけ聞いているとデバドラのメモリー管理に何か問題がありそうな、
他にもUSB->232C変換機は結構有るのでそれを使って、
その後にオムロンを232C接続したらどうですか
PCとオムロンの232C接続はうまく行っているとのことなので。
オムロンは232Cと485の変換機となりますが。
有難うございました。
オムロンに問い合わせたら、デバドラが送られてきました。
そちらでは、正常に動作しました。
みなさん有り難うございます。