RS232cと通信が可能な、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_
お礼
早速の回答ありがとうございました。 動的バイト配列の方法は、とても参考になりました。 月曜日に計測器が手に入るので早速試してみようと思います。 本当にありがとうございました。