通信ソフトをを紹介されてしまい(してしまい?)ました。そのときには、単に、ソースの場所を開示しただけなのですが、さすがに、ソースを示しただけではちょっと問題かなと、少々解説も書いてみることにしました。このソフトは、ほとんど趣味で書かれたもので、無保証です。動作については、一切の保証をいたしかねます。間違っても、量産品に使ったりしないでください。ソースを示していますので、変更はご自由に行っていただいて結構です。ポート)をコントロールするためのC++のソースです。計測器などのコントロールを目的としており、行単位のコマンドを送信して、行単位のレスポンスを受信するという使い方を想定しています。C++のクラスになっているので、複数のポートを独立してコントロールするような用途にも対応できます。までは確認しています。動作したという話があります。既知の障害(多分)現在のところ、以下のような障害が確認されています。発生しており、もしかしたら、処理系依存の障害かもしれません。エミュレートするタイプの機器で発生しております。接続したあと最初に動作するプログラムの障害この場合、最初の受信で、最初の1バイトを取りこぼします。最初に、機器に対して、動作確認のコマンドなど一発送信した方がいいかもしれません。タイプの危機で発生しております。この障害は、1度ダミーでポートをオープンし、その後クローズしておけば、そのあとのオープンからは正常に動作するようです。必要なファイルは、winrs.h(ヘッダファイル)winrs.cpp(プログラム本体)ifline.h(インターフェイスクラスの定義ファイル)の3つです。アクセスにあわせた形で、スーパークラスを作り、それから派生させた形になっています。それぞれに対応した計測器に対して、同じようにコントロールすることを目的にしています。false);で、ポートをオープンします。引数の指定は以下のようになります。オープンされているポートを再指定したときには、例外を発生します。中で、オープンされているポート番号リストを管理しているだけなので、別のプログラムがオープンしてしまっているポートをオープンしても、例外は発生しません。この場合でも、オープンは失敗しますので、次項の方法で確認は可能です。9600ボーレートです。ifLine::crlf行ターミネータを指定します。(crlf)のいずれかを指定します。"8N1"通信条件を指定します。port;で、ポートをクローズします。インスタンスが正常に生成されたかどうか)は、以下のようにチェックできます。オープンに失敗したときの処理いずれも内部的には同じことをやっています。対して、port->talk("文字列");で、指定した文字列+行ターミネータを送信します。ターミネートされた普通のC文字列です。1バイトデータの送信1バイト単位での送信は、port->putc1(文字);で実行可能です。受信データの有無は、以下のようにチェックできます。(受信データ発生するまで待つ・セミコロンの位置に注意)なお、このパッケージの受信プログラムは、データがない場合、約6秒で、タイムアウトし、例外を発生します。データ有無を確認してください。1行データの受信1行データの受信には2つの引数が必要です。len);のように使用します。値が、受信できる最大長になります。実際に受信したデータの数がセットされます。これは、1行単位のデータ受信を行うもので、オープン時に指定したターミネータが現れるまで、データを受信します。指定した数以上のデータは捨てられます。受信データが存在しない場合、データ待ちとなりますが、約6秒でタイムアウトし、例外を送出します。port->getc1();で、1バイトのデータを受信できます。このときも、受信データが存在しなければ、データ待ちとなり、約6秒でタイムアウトします。Japan.E-mail:k1@axis.blue。