ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
11 июля
386025 Топик полностью
1111111 (08.02.2013 10:15, просмотров: 91) ответил 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); }