INT 21h

Lazarus: клиент NTP и часовые пояса (NTP client and time zones)

№ 5710 В разделе "Программирование" от November 27th, 2013,

На самом деле за вас уже все сделали. Дело в том, что на днях мне понадобилось доработать прошивку на настенных часах и управляющую программу чтобы она всякую хрень в память не писала, а делала что велено 🙂

Качаем нашу самую любимую библиотеку для работы со всем сетевым Synapse и распаковываем lib в директорию своей программы (ну можно и переименовать, если не хотите кучу барахла всякого в одной директории). Подключаете директорию к проекту (делается в настройках проекта) и теперь можно писать код!

function get_ntp(): TDateTime;
var
  NTPClient: TSNTPSend;
  NTPResult, Belt: TDateTime;
begin
  with form1 do
  begin
    NTPClient := TSNTPSend.Create;
    NTPClient.TargetHost := Edit2.Text;
    NTPClient.GetNTP;
    NTPResult := NTPClient.NTPTime;
    if StrToInt(Edit3.Text) >= 0 then
    begin
      Belt := EncodeTime(StrToInt(Edit3.Text), 0, 0, 0);
      NTPResult := NTPResult + Belt;
    end
    else
    begin
      Belt := EncodeTime(abs(StrToInt(Edit3.Text)), 0, 0, 0);
      NTPResult := NTPResult - Belt;
    end;
  end;
  Result:=NTPResult;
end;

Этой функции ничего кормить не надо. Однако, это неправильно 🙂 Вы можете переписать ее, чтобы передавать ей 2 параметра: сервер (у меня Edit2.Text) и временной сдвиг (часовой пояс, Edit3.Text). После этого и with form1 do убрать можно будет 😉

Ну а потом эти значения можно использовать, например, так:

procedure TForm1.Button4Click(Sender: TObject);
begin
  ShowMessage(DateTimeToStr(get_ntp()));
end;

Или так:

var mydatetime: TDateTime;
...
 mydatetime:=get_ntp();
 ShowMessage(FormatDateTime('dd', mydatetime))+'.'+
    FormatDateTime('mm', mydatetime))+'.20'+
    FormatDateTime('yy', mydatetime)));

Рабочий код можно посмотреть в репозитории, который я вынес из 2 других схожих проектов http://bitbucket.org/21h/clocksync.

ClockSync

Нет комментариев »

Leave a Reply

Your email address will not be published. Required fields are marked *

*

Комментарии

  • 21h: нене ) без меня )
  • Серегй: Не совсем грабить)) если грабить можно и без рации, есть...
  • 21h: магазин грабить собрались? ) не, тут я не помощник ;)
  • Серегй: А что бы мне поймать чужую волну, что мне для этого нужно...
  • 21h: слушать никто не запрещает. нет закона, который запрещает...
  • Серегй: Я хотел узнать могу ли я просто прийти с данной рацией baofeng...
  • 21h: У меня есть только эти 2. По другим ничего не знаю. В интернете...

© Vladimir Smagin, 2005-2017. Копирование материалов без разрешения запрещено.