Программирую (пытаюсь*) *) ) JCM Taiko по протоколу ID003, много читал документацию, смотрел исходные коды, вроде все понятно, но поставить купюрник в режим приема денег (Ack mode) не получается. То есть на данной стадии меня интересуют только как отправить комманду, принимать от него - это следующий шаг. То есть пока я хочу открыть порт фунцией CreateFile(), затем настроить параметры порта функциями GetCommState()/SetCommstate() и записать в открытый порт комманду Ack из пяти байт функцией WriteFile(). Собственно у меня получился вот такой код на делфи (код процедуры нажатия кнопки,в которой идет запись в порт): Отправляемые комманды купюроприемнику содержатся в константах Command, PollCommand Code: procedure TForm1.Button1Click(Sender: TObject); var dcb:TDcb; SizeOfWhat:dword; getcmd:array[1..5] of BYTE; hport:hWnd; const Command:array[1..5] of BYTE = ($FC,$05,$50,$AA,$05); PollCommand:array[1..5] of BYTE = ($FC,$05,$11,$27,$56); begin //opening port hport:=createfile('COM1', GENERIC_READ or GENERIC_WRITE,0,nil,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0); if hport=INVALID_HANDLE_VALUE then button1.Caption:='ducking opening error' else button1.Caption:='very goos'; //geting TDcb class and changing its parametrs for my settings if not GetCommState(hport,dcb) then button1.Caption:='cant getCommState'; dcb.BaudRate:=CBR_9600; dcb.Parity:=NOPARITY; dcb.ByteSize:=8; dcb.StopBits:=ONESTOPBIT; sizeofwhat:=0; if not SetCommState(hport,dcb)then Button1.Caption:='SetCommState error'; if(not WriteFile(hport,command,sizeof(command),sizeofwhat,nil)) then button1.Caption:='err write port'; end; после нажатия на кнопку купюрник не делает вообще ничего, т.e. даже не примает денежки, но он точно рабочий, так как тестовый софт работает и все тесты через переключение джамперов он проходит. Что я делаю не так? P.S. мне кажется, что так как передача данных асинхронная, то любую комманду надо отправлять каждые 100-200 мс (из спецификации) или я туплю и можно просто один раз комманду отправить и все? Я пробовал WriteFile() ставить в таймер (аля асинхронность), но результат тот же, что и при этом коде. Есть у кого-нибудь подобный опыт?
может там чемто должна завершаться последовательность бинарных данных? может \r\n или нулями? у меня тоже кстати была работа с купюрниками - но там все программатором решалось тебе надо датащит по этому девайсу почитать, там должны быть и протоколы передачи итд