WWW.ИСХОДНИКИ.РУ cpp.sources.ru
java.sources.ru web.sources.ru soft.sources.ru
jdbc.sources.ru asp.sources.ru api.sources.ru

  Форум на исходниках
  C / C++ / Visual C++
  Как посылать числа через COMM порт?

СПРОСИТЬ  ОТВЕТИТЬ
профайл | регистрация | faq

Автор Тема:   Как посылать числа через COMM порт?
MrSergei опубликован 18-11-2001 04:00 MSK   Click Here to See the Profile for MrSergei   Click Here to Email MrSergei  
Что необходимо изменить в коде, чтобы была возможность через коммпорт посылать числа на устройство, т.е. не одно число, а несколько?

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? И что необходимо для нормальной обработки и функциональности коммпорта? Спасибо

Kurt опубликован 23-11-2001 11:13 MSK     Click Here to See the Profile for Kurt  Click Here to Email Kurt     
dcb лучшее сначала взять GetCommState, исправить как надо, затем поставить SetCommState.
А чтоб нормально работать с компортом - выносить прием данных в отдельный поток с ожиданием RX_EVENT. В MSDN есть пример TTY, там все есть.

СПРОСИТЬ  ОТВЕТИТЬ
Перейти:


E-mail | WWW.ИСХОДНИКИ.RU

Powered by: Ultimate Bulletin Board, Freeware Version 5.10a
Purchase our Licensed Version- which adds many more features!
© Infopop Corporation (formerly Madrona Park, Inc.), 1998 - 2000.