опубликован 18-11-2001 04:00 MSK
Что необходимо изменить в коде, чтобы была возможность через коммпорт посылать числа на устройство, т.е. не одно число, а несколько?void CMainWnd::OnComm()
{
DCB *dcb;
COMMTIMEOUTS ct;
HANDLE port;
DWORD bc;
char *buf_out="1";
dcb=(DCB*)HeapAlloc(GetProcessHeap
(),HEAP_ZERO_MEMORY,sizeof(DCB));
dcb->DCBlength=sizeof(DCB);
BuildCommDCB("baud=9600 parity=N data=8 stop=1",dcb);
dcb->fNull=TRUE;
ct.ReadIntervalTimeout=10;
ct.ReadTotalTimeoutMultiplier=ct.ReadTotalTimeoutConstant=0;
ct.WriteTotalTimeoutMultiplier=ct.WriteTotalTimeoutConstant=0;
port=CreateFile("COM2",GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL);
if(port==INVALID_HANDLE_VALUE) {
AfxMessageBox("Не возможно открыть последовательный порт");
ExitProcess(1);
}
SetCommState(port,dcb);
SetCommTimeouts(port,&ct);
PurgeComm(port,PURGE_TXCLEAR|PURGE_RXCLEAR);
SetupComm(port,256,256);
buf_in=(char*)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,strlen(buf_out)+1);
WriteFile(port,buf_out,strlen(buf_out),&bc,NULL);
CloseHandle(port);
}
И почему в данном коде не работает функция BuildCommDCB? И что необходимо для нормальной обработки и функциональности коммпорта? Спасибо