Форум: "Система";
Текущий архив: 2004.04.04;
Скачать: [xml.tar.bz2];
ВнизПомогите разобраться с COM портом! Найти похожие ветки
← →
varfolomey (2004-01-25 21:38) [0]Дело в том что мне надо проверять чётность.
......
{Open port}
FPort := CreateFile(PChar(PortName),
GENERIC_READ or GENERIC_WRITE, 0, nil,
OPEN_EXISTING, FILE_FLAG_OVERLAPPED, 0);
if FPort = INVALID_HANDLE_VALUE then
raise EComPortError.Create("Error opening port " + PortName);
try
{Set port state}
if not GetCommState(FPort, Dcb) then
raise EComPortError.Create("Error setting port " + PortName + " state");
Dcb.BaudRate := DWORD(BaudRate);
Dcb.Parity := MARKPARITY;
Dcb.ByteSize := 8;
Dcb.StopBits := ONESTOPBIT;
if not SetCommState(FPort, Dcb) then
raise EComPortError.Create("Error setting port " + PortName + " state");
{Purge port}
if not PurgeComm(FPort, PURGE_TXCLEAR or PURGE_RXCLEAR) then
raise EComPortError.Create("Error purging port " + PortName);
{Set mask}
if not SetCommMask(FPort, (EV_RXCHAR or EV_ERR) ) then
raise EComPortError.Create("Error setting port " + PortName + " mask");
..........
while not Terminated do
begin
dwMask := EV_RXCHAR or EV_ERR;
if not WaitCommEvent(FComPort.FPort, dwMask, @FOverRead) then
begin
if GetLastError = ERROR_IO_PENDING then
WaitForSingleObject(FOverRead.hEvent, INFINITE)
else
raise EComPortError.Create("Error waiting port " + FComPort.PortName
+ " event");
end;
if not ClearCommError(FComPort.FPort, dwError, @ComStat) then
raise EComPortError.Create("Error clearing port " + FComPort.PortName);
if dwError = CE_RXPARITY then
Ferst := 1
else
Ferst := 0;
FRead := ComStat.cbInQue;
if FRead > 0 then
begin
if not ReadFile(FComPort.FPort, Data, 1, FRead, @FOverRead) then
raise EComPortError.Create("Error reading port " + FComPort.PortName);
Synchronize(DoRead);
end;
end; {while}
Дело в том что когда я принимаю данные, то программа принимает
2-4 символа из 10 и сотанавливается на WaitForSingleObject и ждёт следующей порции данных. В следующий раз программа получает те данные которые не были получины в прошлой передаче. Подскажите ПЛЗ что не правильно???
← →
tesseract © (2004-01-26 09:31) [1]забавно - что-то не видно указателя на overlapped - файл создаётся как отложенный, а ссылка нулевая
Страницы: 1 вся ветка
Форум: "Система";
Текущий архив: 2004.04.04;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.039 c