• ベストアンサー

VBでシリアル制御

VB4でシリアル制御したいのですが、どの様にして良いのかわかりません。 しかも、MSCommというのが必要だと言うところまではわかったのですが、 VB4のスタンダードではこれが入っていません。 これが無いとシリアル制御は無理なのでしょうか? それとも、別の方法が有るのでしょうか? すみませんがよろしくお願いします。

  • so00
  • お礼率80% (25/31)

質問者が選んだベストアンサー

  • ベストアンサー
  • gould09
  • ベストアンサー率33% (196/589)
回答No.1

MScomm は、VB4の Professional版以上に付属するカスタムコントロールです。 MScommが有る場合には、ToolBoxに電話のアイコンが表示されます。 今時点で、MScommがない場合には以下に参考URLにて紹介しているFreeのOCXを使ってみてはいかかでしょうか。

参考URL:
http://www.vector.co.jp/soft/win95/prog/se061892.html?g,http://www.vector.co.jp/soft/win95/prog/se057451.html?g
so00
質問者

お礼

ありがとうございました。 さっそく、ダウンロードして試してみます。 また、何かありましたらよろしくお願いいたします。

その他の回答 (1)

  • shiojiri
  • ベストアンサー率43% (84/192)
回答No.2

WindowsのAPI関数で制御出来ます。 ファイルをオープンするCreateFile関数で”COM1”や”COM2”をopenします。 WriteFile/ReadFile関数で送受信。 制御線のoff/onはEsccapeCommFunctionで可能です。 詳しい操作方法は「VisualBasicでエンジョイプログラミング」CQ出版に載っています。 付属の3.5”FDにソースも入っています。

so00
質問者

お礼

ありがとうございます。 さっそく試してみます。 また、何かありましたらよろしくお願いいたします。

関連するQ&A

  • VB.NETでのシリアル通信

    .NET初心者です。 VB.NETでシリアル通信をしようとしています。 参照設定のところに Microsoft MSCOMM CONTROLというのがあったので 選択しました。 すると、MSLib.MSCommというのがでてきたので Vb6の Dim test As mscomm のように宣言して使えるかと思い Dim test As MSLib.MSComm test.PortOpen と書いてみたところ、 オブジェクト参照・・・インスタンス化されていません。と、エラーがでました。 ブレイクしてみたところ、test = Nothingでした。 testが無いのでインスタンス化されていないという エラーがでるのだなということは分かったのですが なぜこのエラーがでるのか、 どうしたらこのエラーを回避し、 .NETでシリアル通信ができるのか教えてください。 よろしくお願いします。

  • シリアル通信について

    質問です。 仕事でシリアルプリンタをMSCommで制御しています。 開発環境はVB6(SP5),XPです。 MSCommにて印字データを一度に沢山送ると情報落ち(?)した印字内容になってしまいます。多分プリンタ内のバッファ(みたいなもの)が一杯になるかして、プリンタの処理能力が限界なのかと勝手に思ったりもしています。 ちなみに10秒間隔くらいで送れば大丈夫です。 一方、シリアル通信の実験としてTera Termを使用しています。Tera Termだと一度に沢山のデータを送っても問題ないです。Tera Termはそこらへんを制御しているのでしょうか? また、MSCommにもそのようなことができるのでしょうか? よくわからない質問かもしれませんが、どんな些細なことでも結構ですのでご教授願います。

  • VBによるシリアルポート制御

    VB6でシリアルポートからデータを取り込むプログラムを作っています。 データは、バイナリモードで、合計26バイトあります。 これが、20ms間隔で送られてくるデータは、うまく取れたのですが、データを送る間隔を5msにしたところ、うまく受信できないようで、データが表示されなくなってしまいました。 ちなみに20ms間隔の時のシリアルポートのスピード設定が19200bpsで、5ms間隔の時には、115200bpsに変更しています。 VBで115200bpsのポート制御は難しいのでしょうか? それとも、小生のプログラムに問題があるのでしょうか?

  • VB6でシリアルポートの制御

    VB6のコントロールまたは、VB6で使用可能なAPIを使って、シリアルポートの内、DTRとRTS信号線を常にHigh(ON)の状態にすることは可能でしょうか? RS-232CからRS-422へ変換して機器を制御するのですが、変換器がこの信号線を電源として動作するので、常にHigh(ON)の状態にしたいのです。 よろしくお願いします。

  • VB6でのシリアル通信について質問です。

    VB6でのシリアル通信について質問です。 現在、VB6で開発したラベル印刷のシステムを引き受けたのですが、以下のような状況に陥り困っております。 ・プリンタからPCへの接続はシリアル通信のみ。 ・現在使用しようとしているPCにはシリアル通信のポートがなく、USB接続のみしかできない。 ・RS232CからUSBへの変換コネクタを使ってPCとプリンタを接続しようとしているが、印刷実行時に実行時エラー 8015が発生する。 ・VBからプリンタへの通信はMSCommを使用している。 ・プログラム自体は客先にソースのみが残っていたもので、仕様書等はまったくない。 ネットで調べたところ、MicrosoftのサイトではUSBポートからMSCommを使って通信をする事はできないというような事が記載されておりました。 ただ、他のサイトを色々と調べたところ、普通に通信できるとの意見も記載されておりました。 実際のところ、VB6でRS232C-USB変換コネクタを使用してプリンタへのシリアル通信は可能なのでしょうか。 可能な場合、今回発生したエラーの原因になりそうなものとはなんなのでしょうか。 また、通信が不可能な場合、代替策としてどのような方法を取るのが一番ベストなのでしょうか。 どなたか何卒ご教授よろしくお願い致します。

  • VBを使用して携帯電話を制御したい!!

    はじめまして パソコンから携帯電話へATコマンドを送信して、携帯電話を制御する方法を教えていただきたく質問させていただきます。 今回パソコン-携帯電話間をUSBケーブルにて接続し、ATコマンドのやりとりを行いたいのです。 そこでVBのMSCommコンポーネントを使用してパソコン-携帯電話間のコマンドのやり取りをしようと 考え、インターネットで詳細を調べていました。 すると、MSCommコンポーネントはRS232Cに対応するようで、USBポートには対応できないことがわかりました。 それが確かなのかは、詳しいことが記載されておらず不明なままです。 本当にMSCommコンポーネントは、USBポートに対応していないのでしょうか? もしそうであれば、何か他にいい方法はないでしょうか? よろしくお願いします。

  • VB6.0のGPSシリアル通信について

    はじめまして。 VB6.0で、GPSシリアル通信を行っています。 シリアル設定は、MSComm1.Settings = "4800,n,8,1" にしています。 1秒毎にGPSデータは受信でき、すべて受信できています。 ただし、このGPSデータは、1秒間に下記のように6行分受信されます。 $GPRMC,131850,A,3603.5404,N,14008.5746, $GPGGA,131850,3603.5404,N,14008.5746, $GPGSA,A,3,27,09,02,05,21,29,10,15,,,, $GPGSV,3,1,11,27,27,193,33,09,13,199, $GPGSV,3,2,11,21,18,317,23,29,14,259,22, $GPGSV,3,3,11,07,01,033,00,18,00,295,00,28 そこで、上記6行分のデータのうち、初めの2行分だけを取り出したいと思っていますが、どうもうまくいきません。 どのようにすれば、初めの2行分だけを取り出すことができるでしょうか? 下記がソースです。 Private Sub MSComm1_OnComm() Dim Buffer1 As Variant Select Case MSComm1.CommEvent Case comEvReceive Buffer1 = MSComm2.Input If (InStr(Buffer1, "GPRMC")) Then Debug.Print Buffer1; Else (InStr(Buffer1, "GPGGA")) Then Debug.Print Buffer1; End If End Sub どなたか教えてください。 よろしくお願いします。

  • COM16以上を設定を使用してシリアル通信したい

    現在、VB6.0を使用してシリアル通信の制御をしたいのですが、MSCOMMを使用するとCOMポートの番号が16以上のポートを設定しようとするとエラーになってしまいます。(私の設定がおかしいのかもしれませんが・・・。) 通信ポートを16以上のポートも使用できるようにするにはどの様にしたらいいのでしょうか?

  • VB6でシリアル通信サンプルソースの入手先は

    お世話になっております、 VB6でシリアル通信(UART)を行うための、 サンプルソースをダウンロードできるサイトをご存知の方いましたら、 教えていただけないでしょうか。 有料やアプリは見つけたのですが、 無料のソースが見つけられませんでした、 希望としてはMSCommを使用している物をご紹介していただけないでしょうか

  • シリアル通信(タブレット、シーケンサー)

    現在、WindowsXP + VB6 + MSComm <ー> FXn2-16MR(RS232Cユニット)を シリアル通信で制御しています。これをWindows8.1(タブレット) + VB2013で全面的に 書き換えを行っています。テスト用のパソコンとは何の問題間無く通信は通りますが、 対シーケンサーだと送信はしているようだが、受信が全くできない状態です。 制御パラメータは、SerialPort1.Handshake=None, DtrEnable=True, RtsEnable=True 送信時のプロトコルは、<ENQ> + データ(ASCコード) 受信時のプロトコルは、<STX> + データ(ASCコード)+ <ETX> VB6は、この設定で動作しています。 VB2013では、制御パラメータは同じし送受信では普通に SerialPort1.Write、SerialPort1.ReadLineを使っています。 宜しくお願いします。

専門家に質問してみよう