エクセルVBAでRS232Cへデータを送ることは出来ますか?
出来るならその方法を教えてください。

はっきりいってVBAまったくの初心者です。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

フリーウェア/シェアウェア/製品で、シリアル通信用のDLLやActiveXがあるようです。



http://www.vector.co.jp/soft/win95/hardware/se16 …
http://www.vector.co.jp/soft/win95/prog/se094850 …
http://www.vector.co.jp/soft/win95/prog/se094016 …
http://www.vector.co.jp/soft/win95/prog/se057451 …
http://www.vector.co.jp/soft/win95/prog/se154476 …
http://www.vector.co.jp/soft/win95/prog/se061892 …

試してみては?
(私は試してませんごめんなさい。)

あと、こちらのページは、電子回路工作関係のページなのですが、「Visual Basicによるプログラム開発」のリンクをたどるとシリアル通信をAPIを使って行う方法とMSCommを使用する方法が掲載されております。参考になるかと思います。
http://www8.freeweb.ne.jp/school/speana_1/
    • good
    • 2
この回答へのお礼

情報ありがとうございます。
皆さんの回答を元にいろいろ調べてみます。

お礼日時:2001/06/27 23:05

MicrosoftのCommコントロールを使えば簡単にできると思います。


[ツール]→[参照設定]の参照設定画面で参照ボタンを押し、「MSCOMM32.OCX」を参照します。

あとは、
-------------------------------------------------
Dim MSCom1 As MSComm
Set MSCom1 = New MSComm
' COM1 を使用します。
MSComm1.CommPort = 1
' 9600bps、パリティなし、データ長 8 ビット、およびストップ ビット長 1。
' MSComm1.Settings = "9600,N,8,1"
' Input プロパティ使用時に、バッファ全体を読み取るように設定します。
MSComm1.InputLen = 0
' ポートを開きます。
MSComm1.PortOpen = True
' コマンドを送信します。
MSComm1.Output = Text1.Text

' シリアル ポートで "OK" 応答データを読み取ります。
' シリアル ポートを閉じます。
MSComm1.PortOpen = False
-------------------------------------------------
な感じでできると思います・・・
    • good
    • 0
この回答へのお礼

osaosa42さんありがとうございます。
非常にありがたいです。
ずぶの素人なので、どう利用していいかもわかりませんが
上記を参考に一から勉強してみます。

お礼日時:2001/06/27 23:11

おはよう御座います。

回答者の方が居られないようですから、RS232cソフトをVBAで組んだことはありませんが、何かのヒントになればと思い書き込んでみました。
これから、勤めですから、この後、レスできません。

Win32APIを使用しないと出来ないでしょう。

そのための書籍を紹介します。


VBAユーザーのための
Win32APIプログラミングガイド

大村あつし著
エーアイ出版


Win32システムサービスプログラミング
マーシャル・ブレイン=著
郡司芳昭=訳
ブレンディスホール(出版)

この2冊あればあなたの構想は実現すると思います。
2冊とも例題が豊富で、分かり易い書籍です。これから、このような分野に興味がある方にはお勧めの入門書です。
ネットワークプログラミングの書籍などもあればあなたのスキルアップができるでしょう。
しかし、VBAの初心者ならば相当な努力が必要でしょう。
    • good
    • 1
この回答へのお礼

情報ありがとうございます。
皆さんの回答を元にいろいろ調べてみます。

お礼日時:2001/06/27 23:06

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QVB.netでRS232Cポートを使うには

Visual Basic.net でRS232C PORTを使いたいのですが、具体的な方法を教えてください。(WIN32 APIを経由して駆動するようなのですが。)

Aベストアンサー

MSCommが使えるなら、
ここを参考にしてください。

参考URL:http://www.picfun.com/serial08.html

QVBでRS232Cの制御について。

通信のデータ長やパリティ、ポーレート等の設定を”SETTINGS”でおこない、ポートをオープンして外部機器にデータを送る際、ここでは、データをバイナリデータで送らなければなりません。
STX,アドレス,チェックサム,ETXの順にそれぞれアスキーコードで16進数に変換して送ってますが、うまく通信できません。
教えて頂けませんか。
素人でごめんなさい。
この部分のサンプルプログラムがあれば最高なんですが・・・。

Aベストアンサー

>送信してデータが送られているようです。
>(RS232C→RS485変換にて計測機器に送信。その際LEDが瞬間的に点灯します)

送信できている証拠として、LED点灯ですか...
確かに計測機器に何らかの信号は送られているのでしょうが、
これでは正しいデータかどうかがわかりませんね。

一つずつつぶしていきましょう。
まずラインモニタ等で、本当にパソコンから正しい信号を送っているかどうかの
検証をして下さい。
ラインモニタがなければ別のパソコンでバイナリ通信ができる通信プログラム
でもいいです。その場合バイナリをASCIIコードなどで文字表示できるソフトで。
私は確か簡単なプログラムを作って検証しました。

またソフト的に気になる点を書きます。
1)バイナリ通信では、Byte変数を使う
2)透過コードの扱い
バイナリ通信ではテキスト通信の時のようにSTX(Start of Text)のような
特定の1バイトのコードに意味を持たせることができないので、
透過コードといって、有効データの通信の始まり、終わりを数バイトの
コードで表します。
これは機器によって異なるので、機器の仕様書を見てください。

私が扱った機器では、10Hと02Hが連続するとSTX、10Hと03Hが連続するとETX、
その間のコードが有効データでした。
有効データの中にはデータバイト長やチェックサムが入るので、例えば
偶然にノイズで10H+02Hと10H+03Hが入っても、有効かノイズかの判断が
できます。

以上のことを確かめて見てください。

>送信してデータが送られているようです。
>(RS232C→RS485変換にて計測機器に送信。その際LEDが瞬間的に点灯します)

送信できている証拠として、LED点灯ですか...
確かに計測機器に何らかの信号は送られているのでしょうが、
これでは正しいデータかどうかがわかりませんね。

一つずつつぶしていきましょう。
まずラインモニタ等で、本当にパソコンから正しい信号を送っているかどうかの
検証をして下さい。
ラインモニタがなければ別のパソコンでバイナリ通信ができる通信プログラム
でもい...続きを読む

Qrs232cでのRfidリーダライタの制御方法

研究用にタカヤ製品http://www.takaya.co.jp/enterprise/rf/rfid/module.htmのRFID評価キットTR3-D002Aを購入しました。

Visual Basicでリーダライタを制御するプログラムを作りたいと思っているのですが、プログラミングなどはした事もなく何から初めてよいのか途方にくれています。

通信コマンドは公開されているので、とりあえず、直接通信コマンドをRS232C経由でリーダライタに送って、リーダライタの読み取りモードを変更してみようと思っているですが、そのようにrs232cに繋いだ機器に直接通信コマンドを送るようなソフトはあるでしょうか?

テキストデータを送受信するソフトはあるのですが、なにもレスポンスがありません。通信コマンドは STX アドレス コマンド データ長 ETX SUM CR などとなっているので、それらを送って機器からレスポンスを得たいのですが、、、、
おそらく質問の仕方もかなりずれていると思うのですが、お手柔らかに答えて頂けると幸いです。
また、参考になるサイトなどがあれば教えてください。
osはwindows2000です。よろしくお願いします。

研究用にタカヤ製品http://www.takaya.co.jp/enterprise/rf/rfid/module.htmのRFID評価キットTR3-D002Aを購入しました。

Visual Basicでリーダライタを制御するプログラムを作りたいと思っているのですが、プログラミングなどはした事もなく何から初めてよいのか途方にくれています。

通信コマンドは公開されているので、とりあえず、直接通信コマンドをRS232C経由でリーダライタに送って、リーダライタの読み取りモードを変更してみようと思っているですが、そのようにrs232cに繋...続きを読む

Aベストアンサー

RS232Cの通信ソフトとしては、TeraTermが有名です。
(個人的にはAcknowrichと言うソフトが好きですが)
機械の事やコマンドについては良くわからないのですが、レスポンスが何も無い場合、通信スピードなどのプロトコルが間違っている可能性があります。
このあたりは大丈夫ですか?

おもしろそうな機械ですね。こういう商品ってメーカーから直接買うのでしょうか?

参考URL:http://hp.vector.co.jp/authors/VA002416/,http://www.vector.co.jp/soft/win95/prog/se089304.html

Qシリアル(RS232C)通信でファイル送信をするには

現在、VB6.0を使用してシリアル通信の処理をしておりますが、
任意のファイルを相手側に送信をしたいと思いますがどの様に
処理をしたらいいいのか判らないので教えて下さい。

Aベストアンサー

>どの様に処理をしたらいいいのか判らないので
1.送信側でファイルを選択、
 →受信側にファイル名を通知(サイズもいる?)
2.送信側でファイルを読み込み、受信側に送信。
 →受信側でファイルに書き出し
  必要であれば、「n番目の送信」「送信サイズ」「チェックサム」等も付加する。
3.ファイルの終端まで2.を繰り返し。

基本的なやり方はどの通信方法でも一緒。

QVBでRS232Cの受信

VisualBasicでRS232Cの受信を考えている初心者です。
通常の、文字列の受信ではなく、届いている電圧のHigh, Lowを
受け取ることを考えていますが、できなく困っています。。。。

現在Serialport.Readメソッドをつかっているのですが、
『103』『97』…のような2~3文字の数字になっております。(多分Asciiコード)

どういう表現を使ったら届いている電圧を『100010…』のように受け取ることができるのでしょうか?
是非、教えてください。お願いします!

Aベストアンサー

H/Lの信号 → Asciiコード
と、信号が来ているなら、

Asciiコード1文字 → 8ケタの2進数
に変換してみてはどうでしょうか


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報