Показать сообщение отдельно
  #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.
Админ: Учимся пользоваться тегами!

Помогите плиз а то уже второй день выспаться не могу перерыл все дебри инета.
Ответить с цитированием