вторник, 13 мая 2014 г.

Исследование протокола обмена счетчика СЕ303 Концерн Энергомера - часть вторая



Продолжим исследование протокола счетчика. Начало здесь
Следующим пунктом будет подключение к прибору и подача команд.




Писать программу я буду в delphi 7. Для общения по com порту я решил использовать сторонний компонент ComPort Library.
На установке компонента я останавливаться не буду.
Создаем новый проект delhi, на палитре компонентов выбираем вкладку CportLib и добавляем компонент ComPort


Щелкаем на компоненте ComPort и устанавливаем настройки порта (я использую com 1)


Следующий пунктом добавим кнопку, с помощью которой будем подключаться к порту:

if ComPort1.Connected then
  ComPort1.Close
else
  ComPort1.Open;
end;

Так же добавим компонент StatusBar - в нем будем отображаться состояние подключения:
Для этого в событие компонета ComPort1 AfterOpen добавим код:

StatusBar1.Panels[0].Text:= 'Порт открыт - ' + ComPort1.Port;
StatusBar1.Color:=ClGreen;

и в событие AfterClose:

StatusBar1.Panels[0].Text:= 'Порт закрыт - ' + ComPort1.Port;
StatusBar1.Color:=ClRed;

И для избежания ошибок - в событие формы Close:

ComPort1.Close;

Добавляем кнопку для общения с прибором и добавляем следующий код:

var
  GetStr : String;
begin
  if ComPort1.Connected=false then
  begin
    ShowMessage('Порт закрыт !!!');
    exit;
  end;
  ComPort1.WriteStr ('/?123!' + Char($0D) + Char($0A));
  Sleep (1000);
  ComPort1.ReadStr(GetStr , 1000);
  Caption:= GetStr;
end;

Скачать исходник+компонент CporLib - http://dfiles.ru/files/vlowcaola

Вот и в принципе готова утилитка для общения с счетчиком.
В следующей части рассчитаем контрольный байт, получим почасовые значения за месяц и выведем их.

Комментариев нет:

Отправить комментарий