VC++でrs232c通信
ハイパーターミナルで試したところ、以下のプログラムにも書いてありますが
C,OL,1と入力すると
OKという文字が返ってくるというものなのですが、
printf("%s,オンラインに失敗しました\n",l);の所で
lがnoneのままでした。
説明書にはC,OL,1[CR][LF]と入力すると
OK<CR><LF>またはER,n<CR><LF>と返ってくると書いてありました。
色々調べはしたのですが、わかりません。
根本から間違っているような気もします。
何処が間違っているかご指摘をお願いします。
*************************************
HANDLE COMHandle;
DWORD dwRoad,dwWrite,dwError,dwCount;
COMSTAT ComStat;
char *l="none";
COMHandle=CreateFile("COM3",GENERIC_READ | GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);//ハンドルの取得
if ( COMHandle == INVALID_HANDLE_VALUE ) {
printf("COMport Open Error!\n");
getch();
exit(1);
}
DCB dcb;
GetCommState(COMHandle,&dcb);//シリアルポートの状態を取得
dcb.BaudRate=2400;//ボーレート,伝達速度,bps
dcb.ByteSize = 8; // データサイズ,bit
dcb.Parity = NOPARITY; // パリティ:エラー検出
dcb.StopBits = ONESTOPBIT; // ストップビット
SetCommState(COMHandle,&dcb); // シリアルポートの状態を設定
ncf1="C,OL,1\r\n";//入力コマンド
WriteFile(COMHandle,ncf1,strlen(ncf1),&dwWrite,NULL);
ClearCommError(COMHandle,&dwError,&ComStat);
dwCount=ComStat.cbInQue;
ReadFile(COMHandle,l,dwCount,&dwRoad,NULL);
if(l!="OK\r\n"){
printf("%s,オンラインに失敗しました\n",l);
getch();
exit(1);
}