Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 23.03.2011, 20:18
Mirage_29 Mirage_29 вне форума
Прохожий
 
Регистрация: 23.03.2011
Сообщения: 4
Репутация: 10
Печаль Помогите разобраться с COM портом!

Написал программку для управления железкой по ком порту!
Команда посылается в виде 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  
Старый 23.03.2011, 20:34
Аватар для Pilot_Red
Pilot_Red Pilot_Red вне форума
Продвинутый
 
Регистрация: 01.11.2006
Адрес: Карелия
Сообщения: 702
Версия Delphi: D7
Репутация: 11581
По умолчанию

может быть из за того,что у тебя переменная s типа integer, который всего 4 байта
Ответить с цитированием
  #3  
Старый 23.03.2011, 20:45
Mirage_29 Mirage_29 вне форума
Прохожий
 
Регистрация: 23.03.2011
Сообщения: 4
Репутация: 10
По умолчанию

подскажи как расширить уже мозг кипит! У нас просто никого не осталось кто бы мог с этим помочь!
Ответить с цитированием
  #4  
Старый 23.03.2011, 20:52
Аватар для Pilot_Red
Pilot_Red Pilot_Red вне форума
Продвинутый
 
Регистрация: 01.11.2006
Адрес: Карелия
Сообщения: 702
Версия Delphi: D7
Репутация: 11581
По умолчанию

дк сделай переменную... например:

С:array[1..9] of char

в неё забивай значения, и передавай.. ну это сугубой мой вариант, может как-нибудь по другому можно, но я думаю прокатит))
Ответить с цитированием
  #5  
Старый 23.03.2011, 21:03
Mirage_29 Mirage_29 вне форума
Прохожий
 
Регистрация: 23.03.2011
Сообщения: 4
Репутация: 10
По умолчанию

но по сути дела потом это все во что-то надо объединить, т.е.

S=c1+c2+....+c9
какой тип переменных для S может иметь более 8 байт.

и еще почему считывание строки просходит с права на лево?
Ответить с цитированием
  #6  
Старый 23.03.2011, 21:13
Аватар для Pilot_Red
Pilot_Red Pilot_Red вне форума
Продвинутый
 
Регистрация: 01.11.2006
Адрес: Карелия
Сообщения: 702
Версия Delphi: D7
Репутация: 11581
По умолчанию

1.зачем объединять так и отправляешь
WriteFile(CommHandle,с,KolByte,KolByte,@Ovr);


2. Extended-10 byte

на счет третьего не знаю...
Ответить с цитированием
  #7  
Старый 23.03.2011, 21:15
Mirage_29 Mirage_29 вне форума
Прохожий
 
Регистрация: 23.03.2011
Сообщения: 4
Репутация: 10
По умолчанию

Спасибо огромное! я добился того чего хотел!!!
Решение было действительно в array!
Ответить с цитированием
  #8  
Старый 23.03.2011, 21:25
Аватар для Pilot_Red
Pilot_Red Pilot_Red вне форума
Продвинутый
 
Регистрация: 01.11.2006
Адрес: Карелия
Сообщения: 702
Версия Delphi: D7
Репутация: 11581
По умолчанию

рад помочь
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 17:01.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025