• 締切済み

MScommのOncommイベントが発生しない

ykkw_2001の回答

  • ykkw_2001
  • ベストアンサー率26% (267/1014)
回答No.1

ケーブル確認 >ある機器 は、特殊なケーブル接続では? クロス/ストレートを間違ってないか? 使用しているケーブルが断線していないか? >なにも特別なことはしなかったような  プロパティは、あっていますか? Accessだけで、NGとは考えにくいです。

teppy
質問者

お礼

解決しました おあっしゃるとうりInBufferCountプロパティが「0」のままでした これを「1」にしたところ無事に動作するようになりました

関連するQ&A

  • mscommの受信バッファ異常について

    VB6に関する質問です。 以前VB6で制御していた検査設備があり(10年前ほど) 急遽それを動作させることになったのですが、QRリーダ(RS232C信号をcomportで通信) で読み取りを行うと、一度目はうまくいくのですが、 2度目以降は、前回の読み取り対象のQRコードないようが表示される問題が生じて困っています。 プログラムの流れとしては 1.timerでデジタル入出力を監視 2.入力信号が来たらQRリーダに読み取り命令 3.Oncommイベントが発生 4.受信内容をラベルに表示 というものです。 mscommのオブジェクトを新しく作りなおしたり、 リーダを変更したりしましたが、効果がありません。 詳しい方、原因の推測とその対処方法を教えてください。

  • MSCommの受信について。

    VB6.0でMSCommを使っています。 受信データが例えば「00000 00000 000001111122222」 というようなレスポンスが帰ってくるのですが、これは元々 連続データ読み込み(RDSコマンド)で3個読み出したときの結果が 「00000 00000 00000」 次にある番地に書き込んだ値を読み出すコマンドでの結果が 「11111」と「22222」となっています。 これを連続して送信しているので、バッファにはこのように後ろに追加されています。 これをOncommイベントが発生した時に Buffer=MSComm1.Input としてBufferに保存していますが、その後、文字列操作関数を使って 3つを分割しようとしても上手くいきませんでした。 一応、実験としてボタンをクリックした時に str="00000 00000 000001111122222"とデータを入れ、 文字列操作関数を使ってこれを3つに分割することは可能でした。 なので、アルゴリズム的に間違っているというわけではないようですが、 それを実際にシリアル通信させ、Oncommイベント発生の時に させようとした場合、どうにも上手くうごきませんでした。 複数のコマンドを送信してその結果が返ってくるときに 各コマンドの結果を別々のテキストボックスなどに表示させたいです。 それにはバッファの値を必要な部分にわけ、抽出する必要があると思うのですが、 どのようにすれば実行可能でしょうか? 複数のレスポンスが一気に帰ってきた場合、 バッファからどのように必要データを取り出せばいいでしょうか?

  • コンポーネント’MSCOMM32.ocx’のエラー

    VB2010Expressをインストールして、 VB6.0のソフトを使おうとexeファイルをクリックしたら、 下記のエラーがでます。 どうしたらよいか、どなたかご存知ないでしょうか? おしえてください。どうぞよろしくお願いします。 【エラー表示内容】 コンポーネント’MSCOMM32.ocx’ またその依存関係の1つが適切に登録されていません。 ファイルが存在しないか不正です。 【試したこと】 1.窓の森より、VB6ランタイム(WinXP対応)をインストール 2.以下の方法でファイルを貼付け >また、実際必要なファイルは「MSCOMM32.OCX」という物なのですが、 >インターネット上からダウンロード出来ます。 >Googleで「MSCOMM32.OCX」、「DOWNLOAD」みたいな感じで >検索してファイルを落としてくださいね。 >そのファイルを「c:\windows\system32\」の中にコピーすれば完了です★

  • MSCOMM32.OCXがWinXPで使用不可

    VB6で開発を行っておりますが、Win98SE 及びWin2000ではOSがMSCOMM32.OCXを配布しておりましたが、WinXPでは、Windows\System 又はSystem32に入っておりません。 シリアルポートでのデータのやり取りを行いたいのですが、MSCOMM32.OCXは使用できないのでしょうか。 また、それにかわる部品はありませんでしょうか。 ちなみに、Win2000で配布しているMSCOMM32.OCXをWinXPのWINDOWS\SYSTEM32フォルダにコピーし、レジストリに登録しましたが、正常に動作(データのやり取り不可)しませんでした。

  • windows7でmscomm32.ocxを使用

    現在の動作環境 アプリ:VisualBasic6.0で作成     Mscomm32.ocxとMSWINSCK.OCXを参照してCOM通信をしています。 OS:WindowsXP 今後はアプリはそのままでWindows7上で動かそうとしています。 OCXをWindows7機の所定の場所に置き登録しようとするとエラーになります。 登録コマンド regsvr32.exe c:\windows\sysmte32\MSWINSCK.OCX regsvr32.exe c:\windows\sysmte32\MSCOMM32.OCX エラー内容 「c:\windows\sysmtem32\MSCOMM32.ocxは読み込まれましたが、DllRegisterServerへの呼び出しはエラーコード0x8002801cにより失敗しました。」 と出ます。 何がいけないのでしょうか? もしくは、それ以前にWindows7上では使用できないといったことなのでしょうか? ご存知の方ご教授いただければと思います。

  • MSCommオブジェクト に関して。

    MSCommオブジェクト に関して。 VBのMSCommオブジェクト に関して 質問です。 私は、岩通計測(株)のオシロスコープ DS-5102用のサンプルソフト(下記URL) デジタル・オシロスコープ DS-5100シリーズ用 RS-232 サンプルプログラムExcel VBA Ver.1.01 http://www.iti.iwatsu.co.jp/ja/download/ds5100_RS_VBA.html#down0 を使用して、パソコンにオシロスコープの波形情報を 取り込もうとしているのですが、 上手く、このソフトで、波形情報を取り込むことが 出来ません。 メーカーに問い合わせてのですが、 Excelのコントロールツールボックスを表示させ、 デザインモードにしたとき、MSCommオブジェクト(電話機の絵)は、 Excelシート上に表示されますか?。 っと聞かれ、 MSCommオブジェクト(電話機の絵)が表示されません っとお答えすると 表示されていなければ MSCommオブジェクト(電話機の絵) が削除されている可能性があります。 改めて、 こちらのPC環境 Microsoft Office Excel 2003(11.8169.8172)SP3 MSCommオブジェクトが貼りついているのを確認して 保存し直したExcelシートを添付致します。 こちらで、試してみて頂けますか。 っと言われ、試したのですが、 やはり、MSCommオブジェクト(電話機の絵) が表示されないのですが、何方か解決策を お知りの方は、いらっしゃいませんか?。 改めてMSCommオブジェクト(電話機の絵)を挿入、 インストールしなければならないなら、 そうしますし、どうか解決策を宜しく御願い致します。 ちなみに、このような状況で、上記のソフトを 起動すると下記のようなエラーが出ます。 『コンパイル エラー: ByRef引数の型が一致しません。』

  • イベントの発生と監視

    イベントの発生と監視 二つのexeを用意して、片方でCreateEvent、片方でOpenEventをすることは可能でしょうか? CreateEventで作成したハンドルの値は別exeからでも同じイベントオブジェクト名を指定すれば参照できるものなのでしょうか? できないとすればどうすれば参照できるのでしょうか。 ご教授よろしくお願いいたします。 環境VB.net

  • MSComm; 必要なファイル、設定

    VB6で、ActiveXファイルを作成しています。 デバッカーでは、問題なく動作します。 CABファイルを作成して、ファイルをダウンロードさせて動作させると データ送信は、できるのですが受信データが取得できません。 Do - Loop処理を繰り返しているようです。 必要なファイル、プロパティ設定などございますか? ご意見をお願いします。 CABの中身; TEST.OCX ASYCFILT.DLL COMCAT.DLL MSMASK32.OCX MSMSKjp.DLL MSPRPJP.DLL msstdfmt.dll MSSTKPRP.DLL MSVBVM60.DLL OLEAUT32.DLL OLEPRO32.DLL VB6JP.DLL MSComm1.CommPort = 1 MSComm1.Settings = "9600,N,8,1" MSComm1.PortOpen = True MSComm1.InBufferCount = 0 MSComm1.InputLen = 1 '-----Outputプロパティによるデータ受信 MSComm1.Output = (STX) & "CMD" & (CR) '-----Inputプロパティによるデータ受信 Dim Buffer$ Do DoEvents If MSComm1.InBufferCount Then Buffer$ = Buffer$ & MSComm1.Input Select Case Buffer$ Case Chr(13) Exit Do Case Else End Select End If Loop

  • こんにちは、VBはじめたての初心者です。MSCommコマンドを利用して

    こんにちは、VBはじめたての初心者です。MSCommコマンドを利用してマイコンと 通信するプログラムを作成中なのですが、わからないことがあるので質問させていただきます。 public aub form_load() MSComm1.CommPort = 3 'ポート番号設定 MSComm1.Settings = "115200,N,8,1" '設定 MSComm1.PortOpen = True 'ポートオープン MSComm1.Handshaking = comNone 'フロー制御無し MSComm1.RTSEnable = False 'RTS制御無し MSComm1.RThreshold = 1 '1バイト受信毎にOnCommイベント発生 Dim txBuffer As String End sub 'テキストに表示した受信文字列を変数に格納、さらに必要な文字列だけ抽出する Private Sub botan_Click() txBuffer = Text2.Text x = InStr(1, txBuffer, "e" & vbCrLf, 1) txBuffer = Mid(txBuffer, x + 3, (Len(txBuffer) - (x + 2))) Text1.Text = txBuffer 'txBufferの内容確認用 End Sub Private Sub cmdr_Click() Text2.Text = "" MSComm1.Output = "r a0 s 00 j ff" & Chr(13) 'マイコンのデータを読み込むコマンド End Sub Private Sub MSComm1_OnComm() Select Case MSComm1.CommEvent Case comEvReceive Buffer = MSComm1.Input Text2.Text = Text2.Text & Buffer ・ ・ ・ End Select End Sub おおざっぱですがこのようなプログラムをつくりました。 目的は受信された文字列(テキストに表示)を変数に格納、さらに必要な文字列だけ抽出する ことなのですが、このプログラムだとデータを読み込むコマンドを送るボタンとそのデータを 変数に格納して必要な部分を抽出するボタンを二回押さなければならず面倒なので、botan_Click() の中の命令をそのままcmdr_Click()に入れたのですが、そうするとエラーが出てしまいます。 いろいろと試したのですがどうやらtxBufferの中に受信データが入ってくれないみたいです。 原因は何か。何かいい方法がないかアドバイスいただけたら幸いです。 やりたいことは、一回のボタンクリックで変数に受信データのほしいとこだけを格納させることです。 よろしくお願いします。

  • MSComm

    1. MSComm1.CommPort = 1 COMポートで設定している値は整数値でしょうか? COM2、COM3など汎用性を持たせたいのですが、Int方への変換で、必要な文字列を切り出して文字列変数をInt型に変更したいのですが、 下例で良いですか? Dim Buffer$ Buffer$ = "COM1" Buffer$ = Mid(Buffer$, 4, 1) MSComm1.CommPort = CInt("Buffer$") 2. 通信速度 57600bpsで通信したいのですが、定義では56000bpsになります。 MSCommを使用すると、57600bpsがだせないのですか? 以上 宜しくお願いいたします。