訳あってRS422A通信ポートのついた温調器を、RS232C、またはRS422Aでパソコン制御することになりました。が、私はほとんど初心者で途方にくれています。近辺の書店、ヤ○ダ電気などを周りましたが参考になる書籍が見つかりませんでした。
通信制御のイロハについて教えてくださるようなサイトはないでしょうか?どうかご教示お願いいたします。

A 回答 (4件)

補足:Visual Basic5.0以降ではMSCOMM32.OCXがついてますのでCOMはコントロールできますよ。


obj.Output = 値
でCOMポートにデータを渡すことが出来ます。
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2001/06/05 08:41

ビジュアルベーシックには、外部COMポートを制御する命令は


ありません。どうしても使う場合は、外部ソフトハウスの
ソフトウェアを利用することになりますが、使い勝手はいまいちです。

富士通のBASIC以外に、電脳組のBASIC/98-WINも
お奨めです。
これは、ウインドウズ上でN-88BASICを走らせるもので
やはりCOMポートにも対応しています。
多少、この部分の文法は違うようですが、ちゃんと分厚い文法書が
付いてきますから、それを見れば大丈夫でしょう。

書籍は、大きな書店でないとないと思います。
パソコンのレガシィi/o活用大全(CQ出版) にその概念が、
また、各社が出している、
VISIAL-Cでの外部制御本に、具体的なプログラミングがかかれています。
パソコンアダプタの制作&応用(これもCQ出版、1800円)もお奨めです。
    • good
    • 0
この回答へのお礼

たくさんのご紹介ありがとうございました。

お礼日時:2001/05/28 16:52

COMポートの制御が必要になりますので、初心者の方でしたら、BASICが楽ですよ、ちなみに富士通が出している旧98互換BASICが、ウインドウズ上で動くはずです、(1年ほど前に調べました)、これならファイルに書き込んだり読み込んだりする要領で、制御できます。

ビジュアルベーシックで挑戦しましたが、COMの制御のコマンドが見つからず、断念しました。Cは、使ったこと無いのでわかりませんです。
    • good
    • 0
この回答へのお礼

もとよりBASICで行うつもりでした。
どうもありがとうございました。

お礼日時:2001/05/28 16:45

制御するにはプログラムを組む必要がありますが、プログラム経験は御座いますか?



Visual BasicやVisual C/C++などの開発経験があれば後は温調器のインターフェイス仕様に基づいたプログラムを作れば良いです。
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2001/05/28 16:40

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

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

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

QAndroid/コンポーネントとクラスの違いは?

クラスの中で、特殊な働きをするもの(?)を、特別にコンポーネントと呼ぶのでしょうか?
つまり、コンポーネントの実体はクラス? コンポーネント<クラス?

例えば、「コンポーネントのアクティビティ」と言うときの「アクティビティ」は、「Android SDK」で提供されている「Activityクラス」と完全に同義の意味でしょうか?

■質問背景
・コンポーネントが何なのか分からなくて質問しました

Aベストアンサー

Androidの場合は、コンポーネント(application component)という用語は下記のものを指します。
・Activity
・Service
・Content provider
・Broadcast receiver
いずれも特定のクラスのサブクラスとして実装されるものです。したがって、「クラスの中で、特定の形式を満たしているものがコンポーネントである」ということは言えます。

Androidに限定しない文脈だとコンポーネント(ソフトウェアコンポーネント)はもっと多様なものを指している可能性があります。

QRS232Cの制御について詳しく書かれている書籍

RS232Cに接続された機械(Robot)をパソコンで制御するプログラムを書きたいのですが、それにあたり、シリアルポートの制御を主として記述している参考書(書籍)を探しています。
書店などでプログラミング教書を探しても、RS232に関して触れられている本はほとんど無く、あったとしても紹介程度のものです。
プログラミングソフトはVisualStudioExpressEditionsシリーズを予定しています。無料なので....
現時点で扱える言語はCとBASICだけです。
良い参考書があれば、VBやC#、C++等にもチャレンジしてみる意欲はあります。

何か、ハードウェア開発者(と言っても、今回はシリアルポート制御ですが..)でも理解できそうな比較的新しい書籍がありましたら、教えていただけると助かります。

Aベストアンサー

Visual C# 2005 ですが、解説は丁寧ですから役に立つと思います。
http://www.robotsfx.com/robot/robohow/RoboHow60/RoboHow60.html
マイクロソフトによるVBの例
http://www.microsoft.com/japan/msdn/vbasic/migration/tips/SeriaPort/

本だとこの手の本ですかね。古いですから、VB2005じゃないです。
http://www.cqpub.co.jp/hanbai/books/36/36421.htm
アマゾンで探すと関連書籍が出てきますが、読んでみないと使える本は分かりません。
http://www.amazon.co.jp/VB%E3%81%A8%E8%A3%BD%E4%BD%9C%E3%81%A7%E5%AD%A6%E3%81%B6%E5%88%9D%E3%82%81%E3%81%A6%E3%81%AE%E3%83%91%E3%82%BD%E3%82%B3%E3%83%B3%E5%BF%9C%E7%94%A8%E5%B7%A5%E4%BD%9C%E2%80%95PC%E3%81%AE%E3%83%91%E3%83%A9%E3%83%AC%E3%83%AB-%E3%82%B7%E3%83%AA%E3%82%A2%E3%83%AB%E3%83%BB%E3%83%9D%E3%83%BC%E3%83%88%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%9FIO%E5%88%B6%E5%BE%A1%E3%81%AE%E5%AE%9F%E9%9A%9B-%E3%83%88%E3%83%A9%E6%8A%80Beginners-%E6%B8%A1%E8%BE%BA-%E6%98%8E%E7%A6%8E/dp/4789836428

必要ないかもしれませんが、RS232Cの基本知識。
http://www.nahitech.com/nahitafu/mame/mame5/rs232c.html

Visual C# 2005 ですが、解説は丁寧ですから役に立つと思います。
http://www.robotsfx.com/robot/robohow/RoboHow60/RoboHow60.html
マイクロソフトによるVBの例
http://www.microsoft.com/japan/msdn/vbasic/migration/tips/SeriaPort/

本だとこの手の本ですかね。古いですから、VB2005じゃないです。
http://www.cqpub.co.jp/hanbai/books/36/36421.htm
アマゾンで探すと関連書籍が出てきますが、読んでみないと使える本は分かりません。
http://www.amazon.co.jp/VB%E3%81%A8%E8%A3%BD%E4%BD%9C%E3...続きを読む

Qborland C++ Builder 6でSPCommコンポーネントの作成方?

BCB6ビルダーでのSPCommコンポーネントというのを作成したいのですが、ビルダーに関してはほとんど無知ですので、ご支援お願いいたします。
SPCommコンポーネントはフリーのCOMで、ダウンロードすると
SPComm.pasともうひとつくらいファイルがダウンロードできます。
このSPComm.pasというものを使って、コンポーネントを作成しないと
いけないみたいのですが、方法がわかりません。
(汎用のコンポーネント自体の作り方がわからない)
よろしくお願いいたします。

SPCommコンポーネントを使ったPGのソースだけはあるのですが、SPCommコンポーネントを登録(作成?)していないのでそのプロジェクトを開くと、フォームに張り付いているはずのSPCommが消えてしまいます。

Aベストアンサー

まず

 メニュー→ファイル→全て閉じる

で編集中のプロジェクトを全て閉じてしまいます。
つぎに

 メニュー→開く

で作成したパッケージのファイルを開きます。
そこに、SPComm.pacとSPComm.dcrが登録されているのを確認してください。
もし登録されて無かったら改めてパッケージウィンドウから追加します。

あとはパッケージウィンドウのインストールをクリック
インストールが成功すればパレットにspcomのアイコンが登録されます。
また、spcomm.hppも自動生成され、spcommをフォームにポトリペタリしたときに自動でインクルードされるようになるはずです。

>コンポーネントのインストール方法などは書いておりません。飽くまでオープンソースというところでしょうか。

というかBCBの操作ですから。BCBのヘルプを見れば良いわけです。じつは。

QあるオシロスコープをRS232-Cにより制御(サンプルプログラム)

KENWOOD CS4135 40MHzのオシロスコープをRS-232CでN88BASICにより制御したいのですが、コマンド、予約語などがさっぱりわかりません。サンプルプログラムの載っているURLなど、ご存知の方どうかお願いします。オシロの種類が違っていても結構です。
ただ、N88BASICで書いてあるのをお願いします。

Aベストアンサー

回答では有りません。
 カタログを見ると、CS4135には、RS232Cのインターフェースを取り付けられないようですが。
 CS5370Pには、IF-20Rと言うオプションが用意されているようですが?。
http://www.kenwoodtmi.co.jp/product/index.html

参考URL:http://www.kenwoodtmi.co.jp/product/index.html

Q.NETのコンポーネントについて

OCXで作成されたコンポーネントをVisual C++.NETで書き直して、.NETのコンポーネントにしようと思うのですが、Visual C++のアンマネージコードで書いたコンポーネントは、C++マネージ拡張でマネージコンポーネントとなるのでしょうか?
いまいちこの辺がわからなく、いろいろなページで勉強させてもらっているのですが、簡単に説明してくれているページありませんでしょうか?

Aベストアンサー

>Visual C++のアンマネージコードで書いたコンポーネントは、
>C++マネージ拡張でマネージコンポーネントとなるのでしょうか?

 ちょっと理解に苦しむのですが、アンマネージで書いたコードはアンマネージです。
 C++.NETに、gcというキーワードがあります。クラス宣言でこれを付けると、マネージドコードになります。マネージドコードにするなら、徹底的にマネージドコードにせねばならず、中途半端は許されません。

 C++.NET != C++なので、同じつもりで使い始めると痛い目を見ます。アンマネージで押し切るか、C#に書き直すことを薦めます。その中でマネージドC++の書き方がわかってきたら使う、みたいな。

QVBAでRS232C通信

V.studioのほうには、MSCOMMとかいうコンポーネント(コントロールかな?)があるらしいですが、VBAには同様のものがあるのでしょうか?
何を参照すると使えるようになるとか、或いは絶対無理とか、詳しい方、教えてください。よろしくお願いします。

Aベストアンサー

\System32 フォルダに必要なocxが入っていれば、利用可能です。

サンプルは下記を参考にしてください。

参考URL:http://home9.highway.ne.jp/mew/vbex/vbex_01.htm,http://www.vector.co.jp/soft/win95/hardware/se314506.html?g

QSwingは軽量コンポーネントについて

 今日は、JAVA Swing勉強中の初心者です。
 本を読むとAWTは重量コンポーネント、Swingは軽量コンポーネント(一部重量コンポーネントもある)と
書かれていますが、これは一体何を意味するものでしょうか。
 読んでても良く分からないのですが、重量コンポーネントはOSに近い所で動作する、軽量コンポーネントはその逆、、、
 この内容について、プログラムを組む人間は何に気をつけなければならないのでしょうか。
 どうも重量コンポーネントだから動作が重たいとか、遅いとか、メモリの消費が多いとかという解説も
見当たらないし、また、どちらが動作的に速いのか、遅いのか、OSへの負担が大きいのかも書いていません。
(読んでる本が悪すぎるのかも知れないですが。。。。)
 だから、AWTを使うときはどのように気をつけなければとか、Swingを書くときにどうしなければならないとかの記述
も、色々と調べてもどの本にも書いていませんが、だから一体何がどうなのでしょうか。
 
 そもそも、重量コンポーネント、軽量コンポーネントとは何を表すもので、だから何がどうなるのでしょうか。
 動作的なものについての記述なのでしょうか。

 宜しくお願いします。

 今日は、JAVA Swing勉強中の初心者です。
 本を読むとAWTは重量コンポーネント、Swingは軽量コンポーネント(一部重量コンポーネントもある)と
書かれていますが、これは一体何を意味するものでしょうか。
 読んでても良く分からないのですが、重量コンポーネントはOSに近い所で動作する、軽量コンポーネントはその逆、、、
 この内容について、プログラムを組む人間は何に気をつけなければならないのでしょうか。
 どうも重量コンポーネントだから動作が重たいとか、遅いとか、メモリの消費が多いと...続きを読む

Aベストアンサー

重量・軽量というのは「コスト」の話だろうと思う。コストというのは、メモリの消費とかCPUの使用量とかいろいろあるが、この場合は「ネイティブ環境のリソース」(ヒープメモリ)と考えるのがいい。

AWTは、実際の描画部分をOSのAPIに依存しているため、作成すると自動的にOSのリソースを消費する。つまり、AWTのGUIを使うほどに、OSのヒープを圧迫することになる。Swingの場合、土台となるウインドウ部分だけはOSのリソースを消費するが、その中のコンポーネントはすべてJava仮想マシン内のメモリしか使っていないわけで、OSへの影響はだいぶ小さい。

また、OSが管理する部分は、Java仮想マシンでは制御できない部分となる。つまりそれだけAWTは「Javaで制御できない部分」が大きいということになる。

だからどうしろ?ということより、「そういう性質のものであることを知って使う」という意味での、基礎知識と考えたほうがいいと思う。AWTは、Swingより高速だがOSへの依存度が高く、このため表示のカスタマイズもできない。それを知らず、AWTのコンポーネントクラスを継承して自分でコンポーネントを作ろうとして、「どうやっても表示がカスタマイズできない」と悩むのは時間の無駄だろう。どうあがいても「ネイティブコードで実行される描画」はJavaからタッチできないんだから。

「両者がどう違うか」を知っていればそんな無駄なことで悩まずにすむが、知らなければ一人でもがくことになってしまう。だから「知識として知っておくべき」と考えればいいと思う。

重量・軽量というのは「コスト」の話だろうと思う。コストというのは、メモリの消費とかCPUの使用量とかいろいろあるが、この場合は「ネイティブ環境のリソース」(ヒープメモリ)と考えるのがいい。

AWTは、実際の描画部分をOSのAPIに依存しているため、作成すると自動的にOSのリソースを消費する。つまり、AWTのGUIを使うほどに、OSのヒープを圧迫することになる。Swingの場合、土台となるウインドウ部分だけはOSのリソースを消費するが、その中のコンポーネントはすべてJava仮想マシン内のメモリしか使って...続きを読む

QC#にてCTI。RS232Cの受信と送信について。

C#でCTI機能の実現を目指しております。
プログラムは以下サイトからDLして改造しています。
http://tmp.junkbox.info/e14.html
しかし、エラーが頻発し原因不明です。

構成、仕様としては、
アロハPC1という機械から電話番号データを受信しPCに受け渡し。
・データを受け取る(ここは問題なし)
データ形式は
STX(02H)、着信日時(月日曜時分9桁)、電話番号(20桁)、ETX(03H)
として送られてきます。
例) 1214112050457771111
・正常データの場合はACK(06H)を返信(これをしない場合1秒後に同データが再送される)
・データ整形
・データ表示
というような形にしたいのです。

上記サイトのプログラムをアロハPC1に合わせて通信できるようにした状態ですと、例のような生データが問題なく表示されます。
これを以下のようにしてみましたが、エラーが出てしまいます。
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
// 受信文字列の取得
string receivedData = "";
string moji = "";
string moji2 = "";
try
{
receivedData = this.serialPort1.ReadExisting();
receivedData = receivedData.Replace(this.serialPort1.NewLine, "\r\n");

string[] week = { "(日)", "(月)", "(火)", "(水)", "(木)", "(金)", "(土)" };

string stx = receivedData.Substring(0, 1);
string etx = receivedData.Substring(30, 1);

// ACKを返す。
byte[] ack_data = new byte[1];
ack_data[0] = 06;
serialPort1.Write(ack_data,0,1);

string data_m = receivedData.Substring(1, 2);
string data_d = receivedData.Substring(3, 2);
string w = receivedData.Substring(5, 1);
int w2 = int.Parse(w);
string data_w = week[w2];
string data_h = receivedData.Substring(6, 2);
string data_i = receivedData.Substring(8, 2);

moji2 = receivedData.Substring(10, 20);
// スペースを痴漢
moji2 = moji2.Replace(" ", "");

moji = data_m + "月" + data_d + "日" + data_w + data_h + "時" + data_i + "分 ";
if (moji2 == "P")
{
moji = moji + "着信番号非通知\n";
}
else if (moji2 == "O")
{
moji = moji + "着信番号提供地域外\n";
}
else if (moji2 == "C")
{
moji = moji + "公衆電話\n";
}
else
{
moji = moji + moji2 + "\n";
}

}
catch (Exception ex)
{
moji = ex.Message;
}

// richTextBox側のスレッドに AddRecievedDataメソッドのポインタを渡して、
// 受信文字列を追加させる
AddRecievedDataDelegate add = new AddRecievedDataDelegate(AddRecievedData);
this.richTextBox1.Invoke(add, moji);
}
結果:
1221112260457771111
12月21日(月)12時26分 0457771111
1221112
startIndex に文字列の長さより大きい値を指定することはできません。
パラメータ名: startIndex260457771111
startIndex に文字列の長さより大きい値を指定することはできません。
パラメータ名: startIndex

Substringを削除すると「startIndex に文字列の長さより大きい値を指定することはできません。」というようなエラーは出てきません。
receivedData = this.serialPort1.ReadExisting();
を文字列を直接代入した場合はエラーは発生しません。

これをどのようにすれば正常に動くのでしょうか。

また、ACKが正常に送信できてないみたいなのも解れば助かります。
よろしくお願いします。

C#でCTI機能の実現を目指しております。
プログラムは以下サイトからDLして改造しています。
http://tmp.junkbox.info/e14.html
しかし、エラーが頻発し原因不明です。

構成、仕様としては、
アロハPC1という機械から電話番号データを受信しPCに受け渡し。
・データを受け取る(ここは問題なし)
データ形式は
STX(02H)、着信日時(月日曜時分9桁)、電話番号(20桁)、ETX(03H)
として送られてきます。
例) 1214112050457771111
・正常データの場合はACK(06H)を返信(これをしない場...続きを読む

Aベストアンサー

>・データを受け取る(ここは問題なし)
確認も無しに断言してはいけません。

このプログラムの問題点は、受信したデータ(receivedDat)が必ずしも31文字にならないことです。
SerialPortのDataReceived()イベントは、1文字受信するたびに発生します。
従って受信したデータには、ReadExisting()した時点でSerialPortに受信されている分しか入りません。
解決方法を2種類示しますが、動作確認はしていません。

◎解決方法1
ReadExisting()する前にBytesToReadをチェックして31文字未満ならReadしない。

◎解決方法2
一度に1文字ずつReadして文字をつないでいく。
このとき、
STXを受信する前は、Readしたデータは捨てる。(受信データは空にする)
STXを受信した後は、Readしたデータを受信データに継ぎ足していく。
ETXを受信したら(継ぎ足したデータがETXなら)、受信データ長を確認してACK送信にすすむ。

QD端子ケーブル2とコンポーネントケーブル

D1端子とコンポーネント端子付のテレビを買おうかと思っているのですが、D端子ケーブルとコンポーネントケーブルでは、どちらが画像が綺麗に写るのですか?(PS2とテレビを繋げようとしてます)

一応、D4端子に繋げる際のD端子ケーブルと、コンポーネントケーブルとではどちらが良いのかも、できれば教えてください。

また、現在テレビとPS2をAVアンプ経由でコンポジットケーブルでつなげていますが、コンポーネント端子付のテレビを買っても、私が持ってるAVアンプにはコンポーネント端子がついておらず、PS2用のコンポーネントケーブルは先端近くまで一体となっている為に、つなげることができないような気がしますが、何かいい方法があるでしょうか?

よろしくお願いします!

Aベストアンサー

まず、コンポーネント端子とD端子は同じ物です。
D端子は使いやすさや、初心者の接続簡略化などを目指してコンポーネントのケーブルを一つにまとめた物です。
現在D1~D5までが規格化されています。
コンポーネント端子の転送モードがD1と同じならそれと同じ画質です。1台のテレビに両方の端子があり、D端子がD4であれば、通所はコンポーネントもそれと同等の転送モードを持っていますから、画質が違うということはありません。よって、画質はどちらでも同じです。好きな方を選んでください。


Q/何かいい方法があるでしょうか?

A/テレビに音声出力端子があれば、それを使ってTV→AVアンプでも良いかな?あとは、ケーブルを加工するか、AVアンプ接続をあきらめる、アンプ配置を変更するなどですね。

Q古い計量機器からのrs232cを使用したデータ入力について

知り合いが現在、15年以上たった計量器を利用してましてPCの入れ替えを機会に、この計量器からデータを取り込めないかと相談を受けました。計量器メーカーからは手書きのコネクタ配線図を入手しましたが
計量器側のコネクタ=フルピッチ50ピン
pin1LSB~16MSB(バイナリ出力)
17~25(なし)
26~50(GND)
コンピュータ出力
 トランジスタ・オープンコレクタ
 負論理、バイナリ
と言う内容だけでした。
この出力から現在のPCへrs-232c入力として25ピンか9ピンへ取り出すためにはどのような結線のケーブルが必要でしょうか?私は16ピンからバイナリ出力では9ピンに入力不可能な気がします。今ある情報は全て書きましたがこの情報だけでの判断は難しいでしょうか?
ちなみに、入力データ処理についてはvbで作成予定です。
よろしくお願いします。

Aベストアンサー

仕様にある通りなら、16本ともデータラインでストローブライン(読むタイミングを
指示する信号)はありません。
更新周期毎にデータを書き換えるタイミングがあり、そのときにごく短時間ですがデータを
読み損ねるタイミングがあります。
慣れた(金と手間を惜しまない)設計者なら、確実な手順を決めてデータを保証する
と思いますが、通信に時間がかかり、操作をコーディングする手間もかかり、取り合いのた
めに双方向のIOを用意しないといけない(=信号の電源確保の問題が出るかも)ので、
連続して複数回読んで、一致すれば取り込む(いわゆる2回一致読み込み)で逃げているこ
とが多いのではないでしょうか。
データ更新中か、データホールドの取り合い信号が用意されてなければ、そういう方法で
取り合うものとして設計されているのだと思います。
うちの古い製品(なぜか”計量器”だったり)もそういうのが多いです。


人気Q&Aランキング