Здравствуйте! У меня проблема с основами управления com-портом ч-з winapi. Начальная задача передать строчку и сразу прочитать ее. Прочитал, что для этого надо замкнуть 2й и 3й пины на компорте.
Код:
HANDLE hCOM=CreateFile("COM1",GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
DCB DCB;
DCB.BaudRate=4799;
DCB.ByteSize = 8;
DCB.Parity = 0;
DCB.StopBits = 0;
SetCommState(hCOM,&DCB);
COMMTIMEOUTS timeCom;
GetCommTimeouts(
hCOM, // handle to comm device
&timeCom // time-out values
);
timeCom.ReadIntervalTimeout=100;
timeCom.ReadTotalTimeoutConstant=50;
timeCom.ReadTotalTimeoutMultiplier=0;
timeCom.WriteTotalTimeoutMultiplier=0;
timeCom.WriteTotalTimeoutConstant=0;
SetCommTimeouts(
hCOM, // handle to comm device
&timeCom // time-out values
);
if (hCOM!=INVALID_HANDLE_VALUE)
{
AfxMessageBox("COM1 is open OK!");
char buffer[30];
// buffer=m_wdata;
//AfxMessageBox(buffer);
memset(buffer,0,sizeof(buffer));
strcpy(buffer,"SAVE TO COM1");
DWORD nb;
OVERLAPPED ov;
WriteFile(hCOM,buffer,sizeof(buffer),&nb,&ov);
CloseHandle(hCOM);
}
else AfxMessageBox("Error Open COM1");
Запись, помоему, не происходит. В дебаггере переменная nb =0, так же происходит, если заменить на readFile (массив buffer остаеться тем же, nb=0).
p.s. nb — кол-во записаных/считанных байт.
p.p.s. Всем заранее спасибо!
.