• 締切済み

VB2005でシリアル通信(RS-232C)

全くの初心者です。 オリジナルの計測装置とそれ用のソフトを作成することになりました。 ソフト作成の前にハードとの通信仕様を考えているのですが、 下記の点がよくわからず、どなたかご教示いただけないでしょうか。 ・RTSをフロー制御でなく、通信の一部(ハードへの命令信号)して使用したい。(データ送受信と全く独立してRTSをオン・オフしたい) ・調べたところ、EscapeCommFunctionが関連ありそう ・VB2005 express editionでEscapeCommFunctionのAPI(?)が使えるでしょうか。また、他に方法があるでしょうか ・また、Excel(2000)のVBAで同様のことが可能でしょうか。 よろしくお願いいたします。

  • mcsq
  • お礼率83% (5/6)

みんなの回答

回答No.1

VB2005でRS232C通信を行う場合、.NET Framework 2.0 の System.IO.Ports.SerialPort クラスを使います。 RTS信号は、RtsEnableプロパティで操作できるようです。

参考URL:
http://www.microsoft.com/japan/msdn/vbasic/migration/tips/SeriaPort/
mcsq
質問者

お礼

Hayashi_Trek様 ご回答ありがとうございました! 参考にさせていただきます。 自分でももう少し調べてみます。 ありがとうございました。

関連するQ&A

  • RS-232通信について

    計測器から出た測定値を測定器の232ポートとPCの232ポートを利用してMS-VisualBasicで現在作成しております。 232通信をVBに入ってるActivXのMSCOMMONで行っておりますが、RTSラインの監視が良く解りません。ActivXのプロパティーのRTSのイネーブルをTrueにすればVBが勝手に監視してくれるのでしょうか?

  • VB6のRS232C通信で75bpsは可能ですか?

    WinXP VB6 にて開発をしています。 RS232Cで通信する必要があり、相手側のボーレートが75bpsとのことです。 しかし標準COMポートでは、最低は110bpsしかサポートされておりません。 デバイスマネージャのCOMポートを確認したところ、75bpsにて設定が出来ますので、 WinXP自体は対応されていると思います。 この状況でどうすれば通信が可能でしょうか? たとえば。 このソフトをインストールしたらVBでCOM通信ツールが使える? DLLを作ればいい?? API関数がある?? もしくはこの質問サイトにはプログラミングの猛者がいる。そっちで聞いてみれば? というようなサイト、ご存知でしたら教えて下さい。

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

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

  • VBで通信のDTR,RTSを制御できるでしょうか?

    VBの通信プログラムを USB→RS232C変換→RS485変換したいのです。 某メーカのRS485変換器は送信/受信の制御はDTR,RTSによります。 VBのプログラムを動作させるとDTR,RTSは常時ONです。 これを 1.DTR(RTS)をONする 2.送信する 3.DTR(RTS)をOFFする というように(送信中のみDTR(RTS)をONする)することは 可能でしょうか? もし不可とした場合、ほかの言語ならば可能でしょうか?

  • LINUX上でシリアル通信(C++)

    PCとマイコンをシリアル通信を介して送受信したいのですが どのサイトを見てもVC++やWindows上のAPIを使ったものばかりです。 開発環境はLINUXのgcc4.5を想定していますが、使える関数が異なりますよね? どのような流れで作成すればいいのでしょうか。 単にシリアル変換のUSBで文字列を送受信するだけでいいです。

  • シリアル通信:フロー制御

    シリアル通信:フロー制御 シリアル通信のフロー制御について教えて下さい。 とある解説ページにて Xon/Xoff はバイナリデータの送受信には 使用できない。 と書いてあったのですが、これは伝送フォーマット[A] は NGになり、 [B] で通信しなさいという意味になるのでしょうか? それとも[C]の場合がNGになるということでしょうか? <伝送フォーマット> [A] STX | テキスト | ETX | CR | LF [B] テキスト| CR | LF [C] STX | バイナリ | ETX | CR | LF よろしくお願いします。

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

    現在、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を使っています。 宜しくお願いします。

  • RS232C非同期通信初期化でエラー

    通信相手の装置が500ms周期で永久的に送信していた場合、当方のパソコン を再起動して通信ソフト(WIN32API)を起動すると"CREATEFILE"でエラーが発生して接続できません。戻り値は0xFFF...FF(-1)です。 通信相手を停止した状態でパソコンを再起動して通信ソフトを起動すると 正常に接続できます。どの様に対処すれば良いのかどなたか教えて下さい。 OS:WindowsXP 通信手順は無手順、100BYTEデータ

  • VB2005でWin32APIを用いてRS-232CのRTS信号を、デ

    VB2005でWin32APIを用いてRS-232CのRTS信号を、データ送信中だけHIGHにさせるプログラムを作成中です。 色々調べて、Win32APIを使うことで、それらしい動作をさせるプログラムを作れることが分かり、色々調べてコーディングしたのですが、上手く動きません…。処理の流れは以下のようになっています。 (1) CreateFile()関数でCOMを開く。   (CreateFile()の「フラグ」には"FILE_FLAG_OVERLAPPED"を指定) (2) CreateEvent()関数にてイベントオブジェクトを作成。 (3) EscapeCommFunction()でRTS信号をHIGHに設定。 (4) WriteFile()関数でRS-232Cへデータを送信する。 ※ここまでは、オシロスコープにて正しく動作していることを確認しています。 (5) データ送信完了を待つために、SetCommEvent()関数で"EV_TXEMPTY"イベントマスクをセット。 (6) WaitCommEvent()で送信完了を待つ。   ⇒WaitCommEvent()関数が、データ送信完了を待たずに抜けてきてしまう(Falseがリターンされる)…。 (7) そこで、WaitForSingleObject()を使ってイベントハンドラが"シグナル状態"になるのを待つ。   ⇒タイムアウトに"INFINITE"を指定すると、無限待ち状態に陥ってしまう。   ⇒また、タイムアウトに"1000"を指定すると、約1秒後に"WAIT_TIMEOUT"が返ってきてしまう。 WriteFile()関数、そしてWaitCommEvent()関数の引数には、OVERLAPPED構造体へのポインタを渡しているのですが、思うように動いてくれません。 ※Win32APIの関数宣言の記述方法(データ型など)が誤って、このようになっていたりするのでしょうか… どなたかヒントでもお教えいただけると、大変助かります。 以上、よろしくお願いいたします。

  • PCからシリアル通信で外部ハードの制御

    PCからシリアル通信(USB、COM、RS-232C等)で、外部のハードを制御するプログラムを勉強したいと思ってます。 そこで、2つ質問したいことがあります。 1:初心者向けの外部のハードを手ごろに買える業者やサイト 2:PCで外部接続機器を制御することの仕組みを初心者向けにわかりやすく説明してるサイト それらを探していますが、なかなか自分に合うサイトが見つかりません。 学校とかで教育用に使われているものが合ってるかもしれませんが、 いいサイトご存知の方がいればよろしくお願いします。 今のところ単純に、PC上のツール(C言語かVBで作成したい)から、なにかボタンを押したら外部ハードのLEDが点灯するとか、簡単なものを作りたいと思ってます。

専門家に質問してみよう