|
01.10.2008, 17:23 | #1 |
Участник
|
Цитата:
Стоимость "допиливания" Аксапты на работу c компортовым сканером равна стоимости времени потраченному на эту доработку, и вполне может превысить эту $1000. |
|
02.10.2008, 09:05 | #2 |
Участник
|
Вот несколько функций для работы с com портом на С++ Builder.
Мож что пригодиться. X++: DCB dcb; HANDLE hComm; //Установка настроек com-порта bool __fastcall InstallComm(int iPort) //номер порта { BOOL fSuccess; char szCommPattern[8]; if (iPort == 0) return false; sprintf(szCommPattern, "COM%d", iPort); hComm = CreateFile(szCommPattern, GENERIC_READ | GENERIC_WRITE,0,0, OPEN_EXISTING,0,0); if (hComm == INVALID_HANDLE_VALUE) return false; fSuccess = GetCommState(hComm, &dcb); if (!fSuccess) return false; dcb.BaudRate = CBR_57600; dcb.ByteSize = 8; dcb.fParity = FALSE; dcb.Parity = NOPARITY; dcb.StopBits = TWOSTOPBITS; dcb.fOutxCtsFlow = FALSE; dcb.fOutxDsrFlow = FALSE; dcb.fDtrControl = DTR_CONTROL_DISABLE; dcb.fDsrSensitivity = FALSE; dcb.fRtsControl = RTS_CONTROL_DISABLE; fSuccess = SetCommState(hComm, &dcb); if (!fSuccess) return false; SetupComm(hComm, 1024, 1024); COMMTIMEOUTS TO; TO.ReadIntervalTimeout = 80;// 50 TO.ReadTotalTimeoutMultiplier = 1; ///1 TO.ReadTotalTimeoutConstant = 100; ///500 TO.WriteTotalTimeoutMultiplier = 200; ///10 TO.WriteTotalTimeoutConstant = 2000; ///100 SetCommTimeouts(hComm, &TO); return true; } //Запись в com-порт bool __fastcall WriteBuffer(byte* lpBufWrite,DWORD dwToWrite) { DWORD dwWritten; GetCommState(hComm,&dcb); dcb.fDtrControl=DTR_CONTROL_DISABLE; SetCommState(hComm,&dcb); GetCommState(hComm,&dcb); dcb.fDtrControl=DTR_CONTROL_ENABLE; SetCommState(hComm,&dcb); for(unsigned i=0;i<dwToWrite;i++) { if (i==dwToWrite-1) { GetCommState(hComm,&dcb); dcb.fDtrControl=DTR_CONTROL_DISABLE; SetCommState(hComm,&dcb); } WriteFile(hComm,lpBufWrite+i,1,&dwWritten,NULL); Sleep(1); } return true; } //------------------------------------------------------------------------------- //Чтение из com-порта int __fastcall ReadBuffer(byte* lpBufRead,DWORD dwToRead) { DWORD dwRead=0; Sleep(2); ReadFile(hComm,lpBufRead,dwToRead,&dwRead,NULL);//Читаем буффер PurgeComm(hComm,PURGE_RXCLEAR);//Очищаем буффер return dwRead; } //Использование DWORD dwBytesReceived; byte buf[64]; dwBytesReceived = ReadBuffer((char *)buf,13); byte OutText[22]; OutText[0]=adr; ----------------- OutText[22]= X; WriteBuffer(OutText,22);
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему. |
|
02.10.2008, 12:53 | #3 |
Участник
|
Цитата:
Сообщение от Gihar
Ну, просто как то странно, если допустим у вас используется десять старых сканеров, что в моем понимании и есть "несколько". Тогда стоимость новых будет $1000.
Стоимость "допиливания" Аксапты на работу c компортовым сканером равна стоимости времени потраченному на эту доработку, и вполне может превысить эту $1000. |
|