![]() |
|
|
Регистрация | << Правила форума >> | 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. |
#2
|
||||
|
||||
![]() может быть из за того,что у тебя переменная s типа integer, который всего 4 байта
|
#3
|
|||
|
|||
![]() подскажи как расширить уже мозг кипит! У нас просто никого не осталось кто бы мог с этим помочь!
|
#4
|
||||
|
||||
![]() дк сделай переменную... например:
С:array[1..9] of char в неё забивай значения, и передавай.. ну это сугубой мой вариант, может как-нибудь по другому можно, но я думаю прокатит)) |
#5
|
|||
|
|||
![]() но по сути дела потом это все во что-то надо объединить, т.е.
S=c1+c2+....+c9 какой тип переменных для S может иметь более 8 байт. и еще почему считывание строки просходит с права на лево? |
#6
|
||||
|
||||
![]() 1.зачем объединять так и отправляешь
WriteFile(CommHandle,с,KolByte,KolByte,@Ovr); 2. Extended-10 byte на счет третьего не знаю... |
#7
|
|||
|
|||
![]() Спасибо огромное! я добился того чего хотел!!!
Решение было действительно в array! |
#8
|
||||
|
||||
![]() рад помочь
![]() |