![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Написал программку для управления железкой по ком порту!
Команда посылается в виде HEX кода ( F8 8F 02 00 00 00 00 00 02) Проблема в следующем: при посыле команды команда отправляет строку, но через Port Monitor получаю нечто вида: F8 8F 02 00 3e 4a итд, либо ошибки. При посыле данных до 4х значений т.е. F8 8F 02 00 все прекрасно. Вот код программки, Код:
unit PortUnit; interface uses windows,sysutils; var CommHandle : integer; DCB : TDCB; Ovr : TOverlapped; KolByte: DWord; procedure PortInit; procedure WriteComm; procedure KillComm; implementation uses Unit1; procedure KillComm; begin CloseHandle(CommHandle); end; procedure WriteComm; var s: Integer; begin s:= Strtoint('$020000000000028ff8'); KolByte:=9; WriteFile(CommHandle,s,KolByte,KolByte,@Ovr); end; procedure PortInit; begin CommHandle := CreateFile('COM1',GENERIC_READ or GENERIC_WRITE,0,nil,OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL or FILE_FLAG_OVERLAPPED,0); SetCommMask(CommHandle,EV_RXFLAG); GetCommState(CommHandle,DCB); DCB.BaudRate:=CBR_9600; DCB.Parity:=NOPARITY; DCB.ByteSize:=8; DCB.StopBits:=OneStopBit; DCB.EvtChar:=chr(13); SetCommState(CommHandle,DCB); end; end. Помогите плиз а то уже второй день выспаться не могу перерыл все дебри инета. Последний раз редактировалось Admin, 23.03.2011 в 20:40. |