Разговоры на технические темы

Тема в разделе "Флудилка", создана пользователем Igor68, 1 апр 2021.

  1. Igor68

    Igor68 Гуру

    Вы правильно поняли, именно так! Сейчас испытаю - только там нем миллисекунд. Там секунды с 01.10.1970.
    В JS я как раз и не знаю.
     
    Andrey12 нравится это.
  2. DetSimen

    DetSimen Гуру

    если там секунды, то до 2136 года хватит uint32_t. Обрезай до 4 байт смело, будет стандартный time_t Unix Time. Потом библиотекой time.h преобразовывай куда хошь
     
    Andrey12 нравится это.
  3. Igor68

    Igor68 Гуру

    Andrey12 нравится это.
  4. Igor68

    Igor68 Гуру

    Спасибо, это для вывода в вэб морду, а мой сотрудник будет на паскале (в котором я олух) будет доставать и класть в базу регистраций. Моя работа: прочитать из объектов Modbus RTU через UC7101Lx; передать по ETHRNET на Debian, где всё моё хозяйство в том числе и MySQL и разложить в таблицу. А напарник имея доступ к моему MySQL брать данные и уже в своей базе по Windows делать регистрацию: графики, задания, управление... через мою базу MySQL.
     
    Andrey12 нравится это.
  5. Igor68

    Igor68 Гуру

    К сожалению не работает:(
    Вообще-то работает, но не время из MySQL, а локальное время локального компьютера.
    Код (Javascript):
    var tm    = Date(pks_dbs.timestamp);
             document.getElementById("pks_DateTime").innerHTML = tm;
    в принципе я получаю время по JSON в виде числа (условно int64 из MySQL) от сервера. И моё удивление: останавливаю на сервере программу, а часики на загруженной странице продолжают тикать:confused:
    Я конечно понимаю, что JS на загруженной странице обращается к серверу где простой PHP:
    PHP:
    <?php
        $cmd = "cat ../ramdisk/pks_ar_e2.json";
          $contents = shell_exec($cmd);
        echo $contents;
    ?>
    который всего-то выводит содержимое pks_ar_e2.json и его никто не изменяет, потому как всё остановлено и он не изменяется.
    То стало быть функция Date не работает так, как надо. Вот статическое содержимое файла JSON:
    Код (Text):
    {
    "timestamp" : "1649949258",
    "u1pow" : "237.5",
    "cntpow1" : "182527",
    "u2pow" : "0.0",
    "cntpow2" : "0",
    "TmpSCS" : "0",
    "TimeWork" : "55",
    "TimeWorkShield" : "54",
    "Iout" : "50.9",
    "Uout" : "15.7",
    "Usp" : "0.00",
    "Upp" : "0.00",
    "ModeCTL_SCS" : "0",
    "ModeCTL_SCSset" : "0",
    "setIout" : "72.5",
    "setUsp" : "-1.00",
    "setUpp" : "0.00",
    "setUout" : "0.0",
    "TS1_pks_coil_door" : "255",
    "TS2_pks_coil_remotecontrol" : "0",
    "TS3_pks_coil_fault" : "255",
    "TS4_pks_coil_breakage" : "0",
    "TS5_pks_coil_reserveenable" : "255",
    "TU1_pks_coil_remote_on" : "0",
    "TS6_pks_coil_reservepower" : "0",
    "TS7_pks_coil_nopower" : "0",
    "setPErr" : "0.00",
    "connected" : "255"
    }
     
    А надо переваривать строчку "timestamp" : "1649949258" и только... не обращая внимания на локальное время.
    Вот такая вот беда.

    а часики на ВЭБ морде тикают и совпадают с моим компом:
    Thu Apr 14 2022 18:35:32 GMT+0300 (Москва, стандартное время)

    Я в JS туп как пятка - это не Си.
     
    Andrey12 нравится это.
  6. Igor68

    Igor68 Гуру

    Если бы Вы указали функцию для преобразования в JS, было бы круто!
     
  7. Igor68

    Igor68 Гуру

    Я так понимаю, что JS браузера не умеет такого? И надо беспокоиться об этом на стороне сервера на стадии формирования JSON?
     
  8. Andrey12

    Andrey12 Гик

    смотри что пишут по Date в JS
    то есть вызывать надо я думаю так

    Код (Javascript):
    var tm    = new Date(pks_dbs.timestamp);
    потому как без new он вернет текущую дату время строкой, что он и делает.

    А вот pks_dbs.timestamp должно быть числом, строку не поймет.

    Щас потестить негде, до компа доберусь можно будет посмотреть
     
    Igor68 нравится это.
  9. Igor68

    Igor68 Гуру

    Сейчас попробую... я на удалёнке дома, а сервер на работе.
     
  10. Igor68

    Igor68 Гуру

    Пока что пишет Invalid Date по ходу надо провести разборку типа:
    Код (Javascript):
    function timeConverter(UNIX_timestamp){
      var a = new Date(UNIX_timestamp);
      var months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];
      var year = a.getFullYear();
      var month = months[a.getMonth()];
      var date = a.getDate();
      var hour = a.getHours();
      var min = a.getMinutes();
      var sec = a.getSeconds();
      var time = date + ' ' + month + ' ' + year + ' ' + hour + ':' + min + ':' + sec ;
      return time;
    }
    ...то же где-то стырил...
    сейчас пропилю и залью.
     
  11. Igor68

    Igor68 Гуру

    Вот: NaN undefined NaN NaN:NaN:NaN
    по ходу функция не понимает, что это число? Воспринимает как строку что ли?
    Это не Си и тут нет типов данных, и указанную выше функцию вызываю:
    Код (Javascript):
    var tm    = new Date(pks_dbs.timestamp);
             document.getElementById("pks_DateTime").innerHTML = timeConverter(tm);
    блин, надо привести к числу наверное... ведь var он в принципе никто?

    ЗЫ: надо где-то надыбать небольшую шпаргалку к JS
     
  12. Igor68

    Igor68 Гуру

    Пока что, я в ступоре... ох уж этот JS:confused:
     
  13. Igor68

    Igor68 Гуру

    Ну вот при танцах с бубном результат: 14 Apr 2022 21:22:29
    функция преобразования:
    Код (Javascript):
    function timeConverter(UNIX_timestamp){
      var a = new Date(UNIX_timestamp);
      var months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];
      var year = a.getFullYear();
      var month = months[a.getMonth()];
      var date = a.getDate();
      var hour = a.getHours();
      var min = a.getMinutes();
      var sec = a.getSeconds();
      var time = date + ' ' + month + ' ' + year + ' ' + hour + ':' + min + ':' + sec ;
      return time;
    }
     
    та, что была выше.
    Вот её применение:
    Код (Javascript):
    document.getElementById("pks_DateTime").innerHTML = timeConverter(parseInt(pks_dbs.timestamp, 10) * 1000);
    Спасибо БРАТАН!!!:)
     
  14. SergeiL

    SergeiL Оракул Модератор

    Сегодня пришел с работы, достал ноут, подоткнул в USB HUB тестовую Мегу2560, думаю сейчас поправлю код, скомпилирую, залью.
    Сегодня в голове все созрело, как написать, пришел, написал, поправил ошибки типа "точки с запятой", неопределенные переменные, скомпилировалось... залил...
    Мигает, но не так как ожидалось. Причем совсем не так...
    Туплю в код, в коде все вроде норм, добавляю выводы в сериал, открываю монитор порта.
    Все выводится, причем все так как нужно, а мигает не так.
    Успел поправить код, НО не может оно так мигать...
    И тут начинаю понимать, что заливаю в другой порт, он же выводит в сериал, и Мега другая, которая лежит под столом и тестируется на Modbus и Ethernet уже как недели две. :mad::mad::mad:

    Там все работает, и код работает, но мигает то другая Мега, в которую ничего не заливается... :mad::mad::mad:
    В общем всем внимательности ;)
    Причем трезв как стекло, поехал потом в гараж менять колеса на машине жены.
     
  15. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Может последствие от ... "заливаний" в молодости. Не ??? Мой дядька по этой причине временами на трезвую голову "блуждал в трех соснах". А мастер был первейший.
     
  16. Airbus

    Airbus Радиохулиган Модератор

    Или возраст. Я вот с каждым годом туплю все больше и больше
     
    SergeiL нравится это.
  17. SergeiL

    SergeiL Оракул Модератор

    Да нет, раз вывод в монитор идет, и верификация проходит, значит - все в порядке, код залился правильно.
    Просто с USB хабом, воткнул один провод в комп, и все сразу заработало, забыл, что та Мега осталась подключенной.
    Да и порт здесь один, на работе другой, если просто в ноут воткнуть плату - третий.
    upload_2022-4-23_10-24-54.png
     
  18. SergeiL

    SergeiL Оракул Модератор

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

    А про возраст, мне мой начальник раньше, с самоиронией говорил, "Вот не зря на пенсию отправляют!".
    Он военный пенсионер был, чуть за 60.
     
  19. Airbus

    Airbus Радиохулиган Модератор

    Слушай а вот как незаметно можно подключить и не заметить ардуину к ноутбуку? У тебя же ноут? Там обычно два-три порта максимум четыре как у меня на Dell. У меня и к стационарному ящику видно что подключено хотя там 10 портов 6 из них заняты принтерами сканерами и прочими wifi с флешками
     
  20. SergeiL

    SergeiL Оракул Модератор

    :) Умеючи - легко :)
    У меня 7 портовый USB хаб c питанием. Помимо 7 портов USB 3.0 еще два зарядных USB порта на 2,4А.
    Фото из интернета:
    [​IMG]

    У меня такой же, и дома, и на работе. Очень удобный, главное что он с питанием и мощным БП.
    Ноут тоже Dell, рабочий, я с ним везде.

    Пришел на работу, воткнул 3 разъема: USB, HDMI и питание. Все подключено, мышь, жесткий диск, наушники гарнитуры, зарядники, монитор. Работаем.
    И так же дома, но дома еще и программатор AVR-ISP воткнут, переходник USB-RS485, Мега с Ethernet шилдом и RS485 в пластиковом корпусе.
    Провод от хаба к ноуту метровый, ухожу в древний ноут перетыкаю, так всегда можно к платам по RDP подключиться, если нужно что то проверить, или поменять.

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

    Главное код-то заливается, в порт все выводится, только мега странно себя ведет и мигает не так как нужно :).