Win32 API를 사용하여 stdin/stdout을 직렬 포트 (명령 행 터미널 에뮬레이터)에 매핑하는 작은 유틸리티를 작성하려고합니다. 내가 일을한다고 생각하는 다음 코드를 가지고 있지만 직렬 포트에서 제대로 알림을 수신 할 나타나지 않습니다Win32에서 통신 포트와 stdin을 듣기
HANDLE hStdin = GetStdHandle(STD_INPUT_HANDLE);
HANDLE hCom = CreateFile(com_name, GENERIC_READ | GENERIC_WRITE, NULL, NULL, OPEN_EXISTING, 0, NULL);
/* check for errors opening the serial port, configure, set timeouts, etc */
HANDLE hWaitHandles[2];
hWaitHandles[0] = hStdin;
hWaitHandles[1] = hCom;
DWORD dwWaitResult = 0;
for (;;) {
dwWaitResult = WaitForMultipleObjects(2, hWaitHandles, FALSE, INFINITE);
if(dwWaitResult == WAIT_OBJECT_0)
{
DWORD bytesWritten;
int c = _getch();
WriteFile(hCom, &c, 1, &bytesWritten, NULL);
FlushConsoleInputBuffer(hStdin);
} else if (dwWaitResult == WAIT_OBJECT_0+1) {
char byte;
ReadFile(hCom, &byte, 1, &bytesRead, NULL);
if (bytesRead)
printf("%c",byte);
}
}
모든 아이디어는 내가 잘못 여기서 뭘하는지?
hrmm. 나는 그것을 피하려고 노력했다. (겉보기에?) 간단한 작업에 약간의 잔인한 행동처럼 보입니다. – Mikeage