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

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

Оставьте ваш комментарий »

Форма отправки комментария

*

Разрешенные HTML-теги:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

RSS RSS Feed только для этого поста |


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