Страница 1 из 2

Как прочитать из программы на G-коде системные дату и время?

Добавлено: 09 июн 2020, 14:43
Сергей Саныч
Возникла необходимость передать в программу обработки текущую (системную) дату. Скажем, в виде целого числа.
Есть ли возможность получить ее, не прибегая к средствам Python и т.п.?

Re: Как прочитать из программы на G-коде системные дату и вр

Добавлено: 09 июн 2020, 15:33
MX_Master
можно попробовать через собственные M коды и HAL..
но, вообще-то, нужно больше подробностей

Re: Как прочитать из программы на G-коде системные дату и вр

Добавлено: 09 июн 2020, 17:33
nkp
Сергей Саныч писал(а):не прибегая
прибегая - без проблем

Re: Как прочитать из программы на G-коде системные дату и вр

Добавлено: 09 июн 2020, 17:49
Serg
Сергей Саныч писал(а):Возникла необходимость передать в программу обработки текущую (системную) дату.
В какой момент? Что есть "программа обработки"? УП, LinuxCNC, что-то ещё?

Re: Как прочитать из программы на G-коде системные дату и вр

Добавлено: 09 июн 2020, 18:16
D.L.
UAVpilot писал(а):В какой момент? Что есть "программа обработки"? УП, LinuxCNC, что-то ещё?
В УП, вероятно дату изготовления выжигать-гравировать.

На питоне очень просто:

Код: Выделить всё

import datetime

def _time(self, *args):
    t = float(datetime.datetime.now().strftime("%H%M%S"))
    return t

def _date(self, *args):
    d = float(datetime.datetime.now().strftime("%d%m%Y"))
    return d

def _timedate(self, *args):
    td = float(datetime.datetime.now().strftime("%H%M%S.%d%m%Y"))
    return td

Re: Как прочитать из программы на G-коде системные дату и вр

Добавлено: 09 июн 2020, 18:25
nkp
D.L. писал(а):На питоне очень просто:
а если изжога от пресмыкающихся? :hehehe:
Сергей Саныч писал(а):не прибегая к средствам Python
давай что то другое :)

Re: Как прочитать из программы на G-коде системные дату и вр

Добавлено: 09 июн 2020, 18:40
nkp
Выделение_220.png (2678 просмотров) <a class='original' href='./download/file.php?id=182510&sid=7f00767911703f84189643043509afb9&mode=view' target=_blank>Загрузить оригинал (47.98 КБ)</a>
M111

Код: Выделить всё

#!/bin/bash
halcmd setp  motion.analog-in-00   `date  +%Y%m%d`
halcmd setp  motion.analog-in-01   `date  +%H%M%S`
exit 0

Re: Как прочитать из программы на G-коде системные дату и вр

Добавлено: 09 июн 2020, 18:46
D.L.
Отличное решение. :good:

Re: Как прочитать из программы на G-коде системные дату и вр

Добавлено: 09 июн 2020, 22:05
Сергей Саныч
UAVpilot писал(а): Что есть "программа обработки"? УП, LinuxCNC, что-то ещё?
G-код. В названии темы обозначено.
D.L. писал(а):В УП, вероятно дату изготовления выжигать-гравировать.
Абсолютно верно. Гравировать. Дату и еще серийный номер.

Re: Как прочитать из программы на G-коде системные дату и вр

Добавлено: 10 июн 2020, 00:28
Serg
Сергей Саныч писал(а):G-код. В названии темы обозначено.
но не обозначено в какой момент получить и как использовать.
Можно воспользоваться фильтром:

Код: Выделить всё

#!/bin/sh
date +'(Production date: %d.%m.%Y)' | cat - $1
Кстати, с вариантом motion.analog-in-* надо быть поаккуратнее с новыми версиями, а то как-нибудь исправят небольшой баг и работать перестанет по ночам и утрам... :)

Re: Как прочитать из программы на G-коде системные дату и вр

Добавлено: 10 июн 2020, 00:48
xenon-alien
Прошу простить за офтоп, но от куда у вас всех знания по этим "секретным иероглифам" и их назначении/расшифровке/место пользования?

Re: Как прочитать из программы на G-коде системные дату и вр

Добавлено: 10 июн 2020, 01:19
Serg
xenon-alien писал(а):Прошу простить за офтоп, но от куда у вас всех знания по этим "секретным иероглифам" и их назначении/расшифровке/место пользования?
Ты не поверишь - из документации. :)
"man date"

Re: Как прочитать из программы на G-коде системные дату и вр

Добавлено: 10 июн 2020, 01:26
xenon-alien
UAVpilot писал(а):
xenon-alien писал(а):Прошу простить за офтоп, но от куда у вас всех знания по этим "секретным иероглифам" и их назначении/расшифровке/место пользования?
Ты не поверишь - из документации. :)
"man date"
Та что в PDF, или онлайн? (а то у меня всё медленно идет)

Re: Как прочитать из программы на G-коде системные дату и вр

Добавлено: 10 июн 2020, 01:32
Serg
просто в консоли напиши
man date
:)

Раньше изучение unix/linux начинали с команды "man", а сейчас сразу пытаются куда-нибудь мышой ткнуть - вот она, обратная сторона популярности... :wik:

Re: Как прочитать из программы на G-коде системные дату и вр

Добавлено: 10 июн 2020, 01:54
xenon-alien
UAVpilot писал(а):
просто в консоли напиши
man date
:)

Раньше изучение unix/linux начинали с команды "man", а сейчас сразу пытаются куда-нибудь мышой ткнуть - вот она, обратная сторона популярности... :wik:
Просто я начинал свою молодость владения ПК с MS-DOS, но и то только азы: как шастать по папкам, создавать удалять... Приметно гдето 10-20 строк команд, даже блокнот сохранился.
А вот unix/linux никогда не встречалась, вот и ифигиваю от знающих людей.
Есть где-то список на все команды "man"?
Так понимаю, что нужно ещё один комп для этого выделить, который будет "под рукой", а то все по полкам, или долго и нудно запускать. (эмуляторы не нравятся)

Re: Как прочитать из программы на G-коде системные дату и вр

Добавлено: 10 июн 2020, 02:19
Serg
xenon-alien писал(а):Есть где-то список на все команды "man"?
если в консоли набрать "man man", то можно получить справку о команде man :), а там где-то внизу есть отсылки к близким по смыслу командам, первая среди них - apropos:

Код: Выделить всё

$ apropos дата время
asctime (3)          - преобразует дату и время в раздельном представлении или ASCII
asctime_r (3)        - преобразует дату и время в раздельном представлении или ASCII
bootparam (7)        - аргументы, передаваемые ядру Linux во время загрузки
clock (3)            - вычисляет процессорное время
clock_nanosleep (2)  - остановка работы процесса на точно выдержанное время с помощью определённых часов
ctime (3)            - преобразует дату и время в раздельном представлении или ASCII
ctime_r (3)          - преобразует дату и время в раздельном представлении или ASCII
ftime (3)            - возвращает дату и время
getdate (3)          - разделяет строку дата+время на отдельные части
getdate_err (3)      - разделяет строку дата+время на отдельные части
getdate_r (3)        - разделяет строку дата+время на отдельные части
gettimeofday (2)     - получает/устанавливает время
gmtime (3)           - преобразует дату и время в раздельном представлении или ASCII
gmtime_r (3)         - преобразует дату и время в раздельном представлении или ASCII
localtime (3)        - преобразует дату и время в раздельном представлении или ASCII
localtime_r (3)      - преобразует дату и время в раздельном представлении или ASCII
mktime (3)           - преобразует дату и время в раздельном представлении или ASCII
settimeofday (2)     - получает/устанавливает время
stime (2)            - устанавливает системное время
sysconf (3)          - считывает информацию о настройках во время работы системы
time (1)             - подсчитывает время выполнения простой команды или использования ресурсов
time (2)             - получить время в секундах
udplite (7)          - облегчённый протокол пользовательских датаграмм
utime (2)            - изменить последнее время доступа и изменения к inode
utimes (2)           - изменить последнее время доступа и изменения к inode
$ 
Есть ещё графические показывалки, но ими не пользовался.
xenon-alien писал(а):Так понимаю, что нужно ещё один комп для этого выделить, который будет "под рукой", а то все по полкам, или долго и нудно запускать. (эмуляторы не нравятся)
Зачем ещё один? Просто на имеющимся окошко открываешь и там читаешь. Или на другом десктопе, если на одном тесно - в Linux несколько виртуальных десктопов есть "из коробки".

Re: Как прочитать из программы на G-коде системные дату и вр

Добавлено: 10 июн 2020, 02:28
ex71
да man это типа хелпа в форточках. Хелп есть на все команды (=программы)
Вообще линукс это набор разных независимых серверов, запущенных поверх ядра. Ядро консольное.
Графика работает независимо от ядра. И картинку ты получаешь по факту через сеть, но граф. сервер запущен на том же компе. Хотя можно полноценную графику получить на другом компе, работая как на локальной машине.. кажется аналог "тонкий клиент" от ibm, хотя я не вдавался читать про это.

Нажми ctrl+alt+F1 - попадешь в первую консоль системы, запусти там что-то тяжелое и долгое.. Консоль занята расчетами, а тебе хочется посмотреть кино? не беда, жми ctrl+alt+f2 - вводи логин и пасс, и запускай там другую прогу, например mplayer (он умеет показывать видео без графической системы) - будет работать параллельно. Всегда можно переключится между консолями, 1-4 минуя графику. У меня на кедах на 7 консоли графика, то где я сейчас пишу это текст. Ну вот таким методом хал и подхватит любые данные из системы.

HAL тоже работает независимо от LCNC. Твои конфиги лишь дают стартовую конфигурацию станка. А править связки портов (к примеру) можно на лету из другого терминала, например подключившись с телефона через ssh во вай-фай.

зы: в терминале выполни "sudo init 3".
так как там будет скучно, советую поставить lynx (apt-get или как там.. у меня rpm-based дистр) и зайти на этот форум.
для возврата init 5, а лучше init 6 :cheesy:

Re: Как прочитать из программы на G-коде системные дату и вр

Добавлено: 10 июн 2020, 02:40
Serg
команда init нынче deprecated. :)

Re: Как прочитать из программы на G-коде системные дату и вр

Добавлено: 10 июн 2020, 07:51
Сергей Саныч
UAVpilot писал(а):Кстати, с вариантом motion.analog-in-* надо быть поаккуратнее с новыми версиями, а то как-нибудь исправят небольшой баг и работать перестанет по ночам и утрам... :)
А можно поподробнее? Что там за баг такой, что сейчас по ночам работает, а после исправления может забастовать?

Re: Как прочитать из программы на G-коде системные дату и вр

Добавлено: 10 июн 2020, 13:41
Serg
Как-нибудь ночью получится что-то вроде
setp motion.analog-in-01 012345
но в реальности пин будет иметь значение 5349, ибо ведущий ноль означает, что число восьмеричное.
Сейчас преобразование строки в число делается "в рукопашную" и там отслеживаются десятичные числа и шестнадцатеричные (0x), а про восьмеричные Jeff Epler то ли забыл, то ли не знал. Но остаётся ненулевая вероятность, что когда-нибудь восьмеричные либо добавят, либо просто "ручное" преобразование заменят стандартной функцией scanf...