1111111 (08.02.2013 10:15, просмотров: 110) ответил blackbird на ДЫк эта спасибо за сорцы с вебкамерой наговнокодил "распознавание образов" на булдыре .. Следущая печаль ком порт где бы стырить ?:) В общем нужен какойнить рабочий примерчик работы с ком портом . Специфика такая нужно ловить байты с него и
С комом лучше не заморачиваться и сделать тупо через апи, так проще и надежнее. И при переезде на другую версию билдера не будет проблем с компонентами.
//кокой конкретно инклуд надо не помню, методом тыка поубирай
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <system.hpp>
AnsiString Port;
bool COM_Active=false;
HANDLE COM;
bool Open_COMX(void)
{
//пробуем открыть порт
//**************************
DCB dcb;
COMMTIMEOUTS TimeOuts;
//показываем что открыли
//пробуем открыть
COM = CreateFile(Port.c_str(),GENERIC_READ | GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL);
//если открылся неудачно
if(COM == INVALID_HANDLE_VALUE)
{
GetLastError();
goto ERR;
}
if(!GetCommState(COM, &dcb))
goto ERRCLOSE;
//пробуем настроить
dcb.BaudRate = StrToIntDef(Baud,115200);
dcb.ByteSize = 8;
dcb.Parity = EVENPARITY;
dcb.StopBits = ONESTOPBIT;
dcb.fDtrControl =DTR_CONTROL_DISABLE;
dcb.fRtsControl =RTS_CONTROL_DISABLE;
dcb.fOutxCtsFlow=0;
dcb.fOutxDsrFlow=0;
if(!SetCommState(COM, &dcb))
goto ERRCLOSE;
//настраиваем текущие параметры таймаутов таким образом,
//чтобы ReadFile и WriteFile возвращали значения немедленно
TimeOuts.ReadIntervalTimeout = MAXDWORD;
TimeOuts.ReadTotalTimeoutMultiplier = 0;
TimeOuts.ReadTotalTimeoutConstant = 0;
TimeOuts.WriteTotalTimeoutMultiplier = 10;
TimeOuts.WriteTotalTimeoutConstant = 100;
if(!SetCommTimeouts(COM,&TimeOuts))
goto ERRCLOSE;
//размеры буферов
if(!SetupComm(COM,10000,10000))
goto ERRCLOSE;
COM_Active=true;
return(true);
//ошибка открытия порта!
//выход с закрытием
ERRCLOSE:
CloseHandle(COM);
ERR:
COM_Active=false;
return(false);
}
//закрытие
void Close_COMX(void)
{
if(COM_Active)
CloseHandle(COM);
}