C言語かVBでUSB、RS-232C、パラレルポートのいずれかのポートを制御する方法はあるのでしょうか?
いろいろと本で探してみたのですが見つかりません。
アバウトな質問で申し訳ないのですが、できるかどうかだけでもいいですし、具体的なプログラムのサンプルが載っている本、HPございましたら教えてください!
よろしくお願いします!!

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

A 回答 (2件)

VBでRS232Cポートを制御する方法を説明した本は、以下のものがいいです。



技術評論社「自動計測システムのためのVB6入門」金藤 仁著
ISBN4-7741-0940-1 \3,200(税別)

この本にはRS-232C、GP-IBのサンプルPGMがいくつか載っており、
CD-ROMもついています。
またとてもわかりやすい本です。

雑誌でなく、本で出ているもので、私が見つけたのはこれだけでした。
お役にたてば幸いです。
    • good
    • 0
この回答へのお礼

どうもありがとうございます。
探してみたところ近くの図書館にあることが判明したので
早速読んでみようと思います!(でも貸し出し中でした。。。(; ;))

お礼日時:2001/08/10 12:10

WinAPIを用いて実現できます。


メーリングリストか掲示板で検索して下さい。
APIをご理解でない時は、入門をお読みください。
以下に、参考サイトを書いておきます。
VB、VBA、C、C++でもAPIは使用できます。

VC++メーリングリスト
http://mfc.acty-net.ne.jp/ml/mfc/

C++Builderの掲示板
http://www.kaajapan.jp/cbpbbs.html

WINAPI入門
http://www.os.xaxon.ne.jp/~bunyan/program/sdk/pr …

APIの基本
http://www.arcpit.co.jp/winapi/api_01/index.htm

VB-APIプログラミングの入口
http://www.bl.mmtr.or.jp/~miya/vbapi01.html

このサイトのプログラミング会議はいかが?
http://www2s.biglobe.ne.jp/~maekawa/

WinAPIを使用してRS232Cを制御
http://mentai.2ch.net/kikai/kako/972/972177605.h …
以上。
    • good
    • 0
この回答へのお礼

どうもありがとうございます。助かります!
ほんとに細かい具体的なところになると教えていただいたサイトでも
探すのが困難ですね。
APIの方これから勉強していきます。
なにせ素人なのでまたすぐに頼りにさせていただくかもしれませんが
よろしくお願いします。

お礼日時:2001/08/10 11:51

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

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

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

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

Qネットワークの監視と負荷分散

社内ネットワークがとても遅いときがあり、ネットワークの監視を依頼されました。
内容は、
1. どのPCが負荷をかけているのかの調査したいのでそのための安価なソフトが知りたい
2. ソフトやHUBなどでネットワークの負荷の分散ができるならそれを組み込みたい
ということです。

1と2についてご教授下さい。
よろしくお願いします。

Aベストアンサー

FSW-16MA、FHSW-1616NRはどちらかといえばスイッチですね。
先の件のようなパケットのその他ポートへの配送はありません。

また、両製品とも100Mに対応しているので、10人程度が使用するくらいであれば問題ない機器と思います。

スペック的に問題が無いという前提(断言はできませんが。。)であれば

【NWの問題】
(1)接続の問題(全二重ではなく半二重になっている)
(2)なぜか10Mで接続している(100Mになっていない)
スイッチの筐体のLEDをみれば、どのような接続状態かはわかります。
LEDが何色に点灯していれば何で接続している等はマニュアルに出ていま
す。

【DBサーバの問題】
誰かがアプリの特定の操作をした場合に現象が発生する事は無いでしょうか?
その場合、DBサーバのCPUが長時間あがりっぱなしになったり
すると、パフォーマンスは落ちます。

また、CPUが上がっていなくてもDBとしてロックする場合
(例えばOracleでは外部キーの定義してあるテーブルに索引を定義
していない状態で、誰かがデータを削除している間に検索すると
遅くなるなどDBのチューニングの領域)
もあります。

FSW-16MA、FHSW-1616NRはどちらかといえばスイッチですね。
先の件のようなパケットのその他ポートへの配送はありません。

また、両製品とも100Mに対応しているので、10人程度が使用するくらいであれば問題ない機器と思います。

スペック的に問題が無いという前提(断言はできませんが。。)であれば

【NWの問題】
(1)接続の問題(全二重ではなく半二重になっている)
(2)なぜか10Mで接続している(100Mになっていない)
スイッチの筐体のLEDをみれば、どのような接続状態かはわかりま...続きを読む

QRS232cと通信が可能な、CまたはC++のプログラム

初めて投稿します。

現在卒業研究で、RS232cで接続された2次元センサ(カメラで対象物をトラッキングし、2次元座標データをPCに送る計測器)のデータをPC(OSはXP)で読み込もうとしています。
以下のサイトを見つけ、
http://7ujm.net/C++/Rs232c.h.html
ソースファイルとヘッダーファイルからなるプログラムをつくり(プログラムの変更点は最後に明記しました)
、VC++とBORLANDC++で試してみたのですが
VC++ではプロジェクトのビルド時に
「fatal error C1010: プリコンパイル済みのヘッダーの検索中に予期しないEOFを検出しました。」
とエラーが出てしまいます。
_tmain()関数の引数を無記入にしてみてもエラーの内容は変わりません
でした。

また、BORLANDC++ではコンパイル時に
「エラー E2268 RS232.cpp 11: 未定義の関数'printf'を呼び出した(関数 tmai())」
「エラー E2268 RS232.cpp 13: 未定義の関数'gethar'を呼び出した(関数 tmai())」
となってしまい、ヘッダーファイルのみをコンパイルしても
「エラー E2141 RS232c.h 10:宣言の構文エラー」
というエラーが生じてしまいます。

念のためこちらも
http://okwave.jp/qa733184.html
参考に、BORLANDの設定(bcc32.cfg ファイルの確認など、最初の設定)も確認しましたが、独習Cなどの教本に載っているプログラムでは問題なく動作します。

なお計測機器のボーレートは115200bps、ターミネータはcr(キャリッジリターン)のみで(lf(ラインフィード)が入ってもかまわない)、送信コマンドはASCII文字となっています。

ハイパーターミナル、MATLABのM-fileでの通信は確認済みです。

もしこのような環境でRS232c通信が利用可能なC(またはC++)プログラムをご存知の方がいらっしゃれば、教えていただけないでしょうか?
よろしくお願いします。


「ソースファイル」
#include "RS232c.h" //このヘッダーを取り込みます。

int _tmain()
{
RS232c rs;
rs.Connect();
rs.Send("POS#?,,1 CR/LF");//文字列を送信 Send(送信文字列)
char w[100];
rs.Read(w,100); //文字列の受信 Read(char配列,読み込む文字数)
printf(w);
getchar();
return 0;
}

「ヘッダーファイル」
#ifndef _RS_232C_H_
#define _RS_232C_H_

#if _MSC_VER > 1000
#pragma once
#endif

#include <windows.h>
<中略>
bool RS232c::Connect(char* PortNmae="COM1",
int BaudRate = 115200,
int ByteSize = 8,
int Parity = NOPARITY,
int StopBits = ONESTOPBIT,
int RTS = RTS_CONTROL_DISABLE,
int DTR = DTR_CONTROL_DISABLE,
int ReadTimeOut =700,
int WriteTimeOut = 700
)
<中略>
{
RS232c::~RS232c(){
//ポートを閉じます
CloseHandle(m_hComm);
}
#endif // _RS_232C_H_

初めて投稿します。

現在卒業研究で、RS232cで接続された2次元センサ(カメラで対象物をトラッキングし、2次元座標データをPCに送る計測器)のデータをPC(OSはXP)で読み込もうとしています。
以下のサイトを見つけ、
http://7ujm.net/C++/Rs232c.h.html
ソースファイルとヘッダーファイルからなるプログラムをつくり(プログラムの変更点は最後に明記しました)
、VC++とBORLANDC++で試してみたのですが
VC++ではプロジェクトのビルド時に
「fatal error C1010: プリコンパイル済みのヘッダーの検索中に予期...続きを読む

Aベストアンサー

> の値を変更すると変わってくるので、ターミネータはうまく機能していないのかと思うのですが、

そのようですね。

また、WinRS のほうの 「Abnormal program termination」は、おそらくタイムアウトだと思います。

これから推定すると、計測器からは(crlf ではなく)cr しか帰ってきてないのではと思います。
WinRS *port = new WinRS(1, 115200, ifLine::cr, "8N1", false);
(3つめのパラメータが、ifLine::crlf → ifLine::cr に変更。これで、cr を受け取った時点で帰ってきます)

あるいは、port->talk("POS#?,,1 \0"); のレスポンスはすぐに帰ってくるのでしょうか?
port->listen() は、これを呼び出したときに受信データがないと、約6秒でタイムアウトします。
もしもレスポンスに時間がかかるのであれば、

port->talk("POS#?,,1");
while(! port->loc()); // レスポンス受信まで待つ
port->listen(buff, len);
としてみて下さい。

また、port->listen() の len は、呼び出し時には、受信できる最大バイト数を、返り時には、実際に受信したデータ数を持っています。
このため、talk() を複数行う場合は、
len = 1024;
port->talk("POS#?,,1");
のように毎回 len を設定して下さい。
これがないと、前回の受信バイト数をもって listen() を呼び出すので、前回のレスポンスより長いレスポンスが受け取れなくなります。

最後に、"POS#?,,1 \0" のような、最後の "\0" は不要です。
(あっても無害ですが)
"~" で囲まれた文字列の終端には、暗黙のうちに、"\0" が付加されますので。

> の値を変更すると変わってくるので、ターミネータはうまく機能していないのかと思うのですが、

そのようですね。

また、WinRS のほうの 「Abnormal program termination」は、おそらくタイムアウトだと思います。

これから推定すると、計測器からは(crlf ではなく)cr しか帰ってきてないのではと思います。
WinRS *port = new WinRS(1, 115200, ifLine::cr, "8N1", false);
(3つめのパラメータが、ifLine::crlf → ifLine::cr に変更。これで、cr を受け取った時点で帰ってきます)

あるいは、...続きを読む

Q太陽光発電 遠隔監視システム

現在、35kwの太陽光発電を稼働中です、太陽光発電の遠隔監視システム導入を検討中です、
どのシステム、メーカーが良いのか、解りません、教えて下さい。

Aベストアンサー

オムロン単相パワコンですね。
ひだまりeyesはいかがでしょうか。
http://hidamari-eyes.takeidenki.co.jp/

パワコンからの通信回線(RS-485)情報から発電量を取得します。パワコンと遠隔モニタリング装置とは3芯ケーブル配線が必要です。

QRS232C通信のC言語プログラム:入力モード?

ある計測機器(以後(A)と略記)と"一般的な"Linux PC(Kernel 2.4xx)とをRS232Cシリアルポートで接続し、コマンドの送信とデータの受信を一定時間間隔(1秒)で行うためのC言語プログラムを作成しようとしています。第一段階として、Windows XPのソフトウェア:ハイバーターミナルで(A)にコマンドパケット(10バイト程度)を送信し、それに対応するデータ(20バイト程度)を(A)の取り扱い説明書どおり、正しく受け取ることができました。(A)の受け付ける通信データフォーマットは”8 data bits, 1 stop bit, no parity bit"で、通信ケーブルはいわゆる3線式で、フロー制御は用いません。通信レートは9600baudです。
 (A)から返される20バイト程度(長さはまちまちです)のデータパケットは全て、最後が[;FF]の"アルファベット3文字"で終わっていて、いわゆる”行末コード”は付加されていません(取扱説明書でも確認ずみ)。このような場合に、linux上でのC言語プログラムで(A)が接続された/dev/ttyS* (*は一桁の数字)から、どのような入力モードでread()すればよいか、アドバイスをお願いいたします。事前調査の段階ですが、今考えている方法は
(1)ループの中で、ノンブロッキングモードでひと文字ずつ読んで、自分で用意したバッファに納めつつ、その最後が";FF"になったらループを脱出する
というものですが、制御用のLinux PCは他にも”作業をしていて”、(A)とのデータの授受の負荷は軽いほどよいので、より賢明な方法がないか探しています。
たとえば、
(2)カノニカルモードで、一時的に、”行末コード”にセミコロン";"を指定して、read()する
などということは可能でしょうか。これが可能なら、次の"FF"は、2文字を指定して”読み捨てる”ことも可能になります。
わかりにくい説明で恐縮ですが、他のアイデアなどを含めて、アドバイスをお願いいたします。

ある計測機器(以後(A)と略記)と"一般的な"Linux PC(Kernel 2.4xx)とをRS232Cシリアルポートで接続し、コマンドの送信とデータの受信を一定時間間隔(1秒)で行うためのC言語プログラムを作成しようとしています。第一段階として、Windows XPのソフトウェア:ハイバーターミナルで(A)にコマンドパケット(10バイト程度)を送信し、それに対応するデータ(20バイト程度)を(A)の取り扱い説明書どおり、正しく受け取ることができました。(A)の受け付ける通信データフォーマットは”8 data bits, 1 stop bit, no parity bit"...続きを読む

Aベストアンサー

ノンブロッキングモード、read毎に、1ミリ秒のスリープ処理を挟むだけで、CPUはほとんど使用されない状況になると思います。また1行受信も1文字ずつ20バイト受信も、処理効率に大差はないと思います。
例えば、1000Hzのデータで、数百のチャンネルのデータをリアルタイムに受信するなどの仕様であれば、CPUの並列化(どのCPUコアにどのチャンネル読み込みを割り当てるかなど)を検討する必要が出てきます。
が、シリアル通信で9600bpsのデータを1秒毎、ということであれば、小細工なしに、実装して評価するのが良いと思います。

Qアクティブディレクトリと分散ファイルシステムについて

アクティブディレクトリと分散ファイルシステムについて
ちがいやその機能っていうんですか?が
わからないんですけどわかりやすく教えてください

Aベストアンサー

Active Directoryはフォレスト、ドメイン、
コンピュータ、ユーザ、グループ等のオブジェクト
を管理するための仕組みで、ディレクトリサービス
と総称されます。

DFSは見た目は1つのマシンの中のようにみえるが、
実際には複数のマシンに分散されて保存するための
仕組み。見た目と実際の保存場所の管理機能。

QRS232Cシリアル通信について

現在VC6++でRS232Cの通信プログラムの機能の追加をしている(元は違う人が製造)のですが、一部わからない部分がありました。

RS232Cを使用して電文全てログファイル出力したいのですが、
//送信
aaa = WriteFile( bbb, (UCHAR *)ccc, ddd, &eee, NULL);

//受信
aaa = ReadFile( bbb, (UCHAR *)ccc, ddd, &eee, NULL);

の様に記述がしてあり、そのすぐ後ろにログファイルを出力する記述
PrintLF((CHAR *)ccc);  //PrintLF・・・引数をファイルに出力する関数

を書いています。

(1)PrintLFの引数はunsigned charではない為PrintLF((CHAR *)ccc);と記述しましたがこれでよろしいでしょうか?(文字化けなどはしない?)

(2)電文全てログファイル出力したいとなると、WriteFi・ReadFileのすぐ後にログ出力の記述(第2引数を出力)してあげればよろしいでしょうか?

(3)実際にテストが出来ない為、いいソフトはないでしょうか?

以上ですがよろしくお願いいたします。

現在VC6++でRS232Cの通信プログラムの機能の追加をしている(元は違う人が製造)のですが、一部わからない部分がありました。

RS232Cを使用して電文全てログファイル出力したいのですが、
//送信
aaa = WriteFile( bbb, (UCHAR *)ccc, ddd, &eee, NULL);

//受信
aaa = ReadFile( bbb, (UCHAR *)ccc, ddd, &eee, NULL);

の様に記述がしてあり、そのすぐ後ろにログファイルを出力する記述
PrintLF((CHAR *)ccc);  //PrintLF・・・引数をファイルに出力する関数

を書いています。

(1)PrintLFの...続きを読む

Aベストアンサー

> (1)PrintLFの引数はunsigned charではない為PrintLF((CHAR *)ccc);と記述しましたがこれでよろしいでしょうか?(文字化けなどはしない?)

PrintLFの仕様がわからないのでどうしようもありません。

> (2)電文全てログファイル出力したいとなると、WriteFi・ReadFileのすぐ後にログ出力の記述(第2引数を出力)してあげればよろしいでしょうか?

バッファを他のスレッドと共有していないのであれば、おそらくそれで問題ないと思います。

> (3)実際にテストが出来ない為、いいソフトはないでしょうか?

どんなテストがしたいのかにもよりますが、文字ベースでよければハイパーターミナルで十分でしょう。

QMeのシステムの復元で、監視されるドライブはどこ?

1.windowsMeだけのインストールのパソコン、
2.c:¥でMe、d:¥でXPのデュアルブートのパソコン、

Meのシステムの復元にはXpのような監視の対象を決めるところが見つかりませんが、どのドライブを監視しているのですか?よろしくお願いします。

Aベストアンサー

Cドライブ、起動のドライブだけです。ところが、例外があるらしく、2つのHDDを入れ、どちらからも起動できるようにブート可能にしておいて片方をマスター、他方をスレーブで使用すると、両方のMEがエラーを起こし、正常に機能できなくなることがあります。
これは、両方のアクティブなパーティーションがMEのときだけで、片方がME、他方がSEや98、95では大丈夫です。

デュアルブートで、Dや拡張領域でもXPはインストールできるし、起動可能ですが、MEや9X系はブートできるプライマリーだけが通常はインストール可能な場所ですので、そのプライマリーのアクティブなパーティーションだけが復元の対象です。また、復元がXPによって簡単に行われ、その結果書き換えられることがありますので、XPの監視からCを外した方が実害がデュアルでは少ないです。

QLinuxでシリアル通信(RS232C)プログラム

Linuxでパソコンから他の機器へ文字列を送るプログラムを書きたいと思っています。
termios.h というヘッダーがあると言うことは検索して分かったのですが、それ以上に詳しいことがよく分かりません。
Linuxでシリアル通信をするC言語のプログラミングを扱っている書籍や詳しいサイトがあれば教えて頂きたく思います。

また、C言語のヘッダーは自分が勉強した本に載っているものは分かるのですが、それ以外のものはどうやって調べられているのでしょうか?
自分が求めている機能のライブラリがあるかどうかは、Googleとかで調べておられるのでしょうか?
termios.hというようなヘッダーについては、どうやって情報を集められているのでしょう?

よろしくお願い致します。

Aベストアンサー

これとか参考になるかと。
古くからあるドキュメントですが、基本的に変わってないので。
もしかすると、もっとお手軽に使えるフレームワークがQtやJavaあたりにありそうですが。

参考URL:http://www.linux.or.jp/JF/JFdocs/Serial-Programming-HOWTO.html

Qレジストリやファイルシステムなど監視するソフト?

レジストリやファイルシステムなど監視して、変更部分をログ出力するソフトってありますか?

未知のソフトや他人のWebアプリを検証する際に役に立つと思うのですが、昔常駐ソフトでファイルの監視をしていたものがあった記憶があり、Windows2000やXPで動作するものが知りたいです。

Aベストアンサー

★フリーソフトの『レジストリ番犬ロン』があります。
・このソフトは、任意の時点と現在との差異がひと目でわかる
 レジストリ監視ソフトです。
・フリーソフト版、シェアウェア版の2つがあります。注意。
・姉妹品として、『レジストリ番犬バロン』もあるようです。
・ただし、こちらはシェアウェア版です。

リンク:
・http://www.vector.co.jp/soft/win95/util/se274538.html→『レジストリ番犬バロン』
・http://www.vector.co.jp/soft/win95/util/se271528.html→『レジストリ番犬ロン』
・以上。短いですがおわり。

参考URL:http://www.vector.co.jp/vpack/filearea/winnt/util/env/index.html

QWindowsAPIでシリアル通信プログラム(RS232C)

Windowsで、VC++やVBを使わずに普通のC言語で簡単な文字列(コマンド)を外部機器に送信するプログラムを書きたいのですが、WindowsAPIというものの存在は知っているものの全くもって触れたことがありません。
取り合えず、パソコンから外部機器に文字列を送信することが出来ればよいのですが、すぐ実装に役立つような書籍などはありませんでしょうか?
VCやVBでシリアル通信プログラムの解説をしている書籍は見つかるのですが、WindowsAPIで行っているものが見受けられません。

もし、ご存知でしたらよろしくお願い致します。

Aベストアンサー

参考URLを書いておきます。

Linuxでもシリアル通信をやりたいようですので、そんな場合、面倒くさがり屋の私はTclを使っています。(http://www.freesoftnet.co.jp/tclkits/doc/TclCmdRef/TclCmd/fconfigure_jp.htm)

参考URL:http://members.jcom.home.ne.jp/0434383301/vc10.htm


人気Q&Aランキング

おすすめ情報