plcから送信された文字列をpcで表示させるといった簡単なことができません。。。
////////////////////////////////////
pcからplcへbw命令を送信
↓
bw命令を受信したplcが設定した文字列("00ff0001")をオンデマンドで送信
↓
pcが受信・表示
////////////////////////////////////
以下プログラム
///////////////////////////////////
sprintf(SndBuf, "\0");
strcat(SndBuf, "\005");
strcat(SndBuf, "00FFBWAM00");
strcat(SndBuf, "71");
strcat(SndBuf, "011");
strcat(SndBuf, "\r\n");
printf("%s\n", SndBuf);
OVERLAPPED ovWriteS; memset(&ovWriteS, 0, sizeof(ovWriteS)); if (WriteFile(Rs232c2, SndBuf, strlen(SndBuf), &dwSize, &ovWriteS) == FALSE){ printf("RS232C WriteFile Error\n"); return -1; } else{ // 送信成功 printf("RS232C WriteFile Success\n"); } memset(SndBuf, 0, sizeof(SndBuf)); //データ受信 (初期) // COMポートの受信イベント作成 OVERLAPPED ovReadZ; memset(&ovReadZ, 0, sizeof(ovReadZ)); ovReadZ.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL); if (ovReadZ.hEvent == NULL){ printf("RS232C CreateEvent Error\n"); return -1; } // COMポートの受信イベントマスク if (SetCommMask(Rs232c2, EV_RXCHAR) == FALSE){ printf("RS232C SetCommMask Error\n"); return -1; } // COMポートの受信待ち DWORD EvtMask = 0; DWORD Transfer = 0; if (WaitCommEvent(Rs232c2, &EvtMask, &ovReadZ) == FALSE){ if (GetLastError() == ERROR_IO_PENDING) { GetOverlappedResult(Rs232c2, &ovReadZ, &Transfer, TRUE); } else{ printf("RS232C WaitCommEvent Error\n"); return -1; } } // COMポートの受信イベントチェック if ((EvtMask & EV_RXCHAR) == EV_RXCHAR){ // COMポートの受信データチェック COMSTAT comstZ; DWORD dwErrZ; ClearCommError(Rs232c2, &dwErrZ, &comstZ); // COMポートからデータ受信 if (ReadFile(Rs232c2, RcvBuf, comstZ.cbInQue, &dwSize, &ovReadZ) == FALSE){ printf("RS232C ReadFile Error\n"); return -1; } else{ // 受信成功 printf("通信可能です\n"); } } memset(SndBuf, 0, sizeof(SndBuf)); memset(RcvBuf, 0, sizeof(RcvBuf)); CloseHandle(ovReadZ.hEvent);
////////////////////////////////////////////////////////////////
このように最後の"通信可能です"まで出ているので何かしら受信はできているのに表示がうまくいきません。。。
どなたかご教授お願いします
ちなみに、プログラムではなく、テラタームでなら00ff0001は表示の確認は出来ています。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/10/24 08:34
2016/10/24 08:56
2016/10/26 00:46
2016/10/26 00:56
2016/10/26 01:23
2016/10/26 01:26
2016/10/26 02:23
2016/10/26 02:32
2016/10/26 02:46
2016/10/26 02:52
2016/10/26 06:07