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

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2857
Откуда: Тюмень
Контактная информация:

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

Сообщение Сергей Саныч »

Возникла необходимость передать в программу обработки текущую (системную) дату. Скажем, в виде целого числа.
Есть ли возможность получить ее, не прибегая к средствам Python и т.п.?
Чудес не бывает. Бывают фокусы.
Аватара пользователя
MX_Master
Мастер
Сообщения: 7467
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3089
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

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

Сообщение MX_Master »

можно попробовать через собственные M коды и HAL..
но, вообще-то, нужно больше подробностей
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

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

Сообщение nkp »

Сергей Саныч писал(а):не прибегая
прибегая - без проблем
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

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

Сообщение Serg »

Сергей Саныч писал(а):Возникла необходимость передать в программу обработки текущую (системную) дату.
В какой момент? Что есть "программа обработки"? УП, LinuxCNC, что-то ещё?
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
D.L.
Мастер
Сообщения: 471
Зарегистрирован: 25 авг 2018, 10:11
Репутация: 152
Настоящее имя: Дмитрий
Откуда: Киров
Контактная информация:

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

Сообщение 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
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

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

Сообщение nkp »

D.L. писал(а):На питоне очень просто:
а если изжога от пресмыкающихся? :hehehe:
Сергей Саныч писал(а):не прибегая к средствам Python
давай что то другое :)
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

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

Сообщение nkp »

Выделение_220.png (2677 просмотров) <a class='original' href='./download/file.php?id=182510&sid=fde79e84c00d9423eee485aa0cf35008&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
D.L.
Мастер
Сообщения: 471
Зарегистрирован: 25 авг 2018, 10:11
Репутация: 152
Настоящее имя: Дмитрий
Откуда: Киров
Контактная информация:

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

Сообщение D.L. »

Отличное решение. :good:
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2857
Откуда: Тюмень
Контактная информация:

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

Сообщение Сергей Саныч »

UAVpilot писал(а): Что есть "программа обработки"? УП, LinuxCNC, что-то ещё?
G-код. В названии темы обозначено.
D.L. писал(а):В УП, вероятно дату изготовления выжигать-гравировать.
Абсолютно верно. Гравировать. Дату и еще серийный номер.
Чудес не бывает. Бывают фокусы.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

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

Сообщение Serg »

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

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

#!/bin/sh
date +'(Production date: %d.%m.%Y)' | cat - $1
Кстати, с вариантом motion.analog-in-* надо быть поаккуратнее с новыми версиями, а то как-нибудь исправят небольшой баг и работать перестанет по ночам и утрам... :)
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
xenon-alien
Почётный участник
Почётный участник
Сообщения: 4508
Зарегистрирован: 01 янв 2013, 13:13
Репутация: 920
Настоящее имя: Daniel
Откуда: Закарпатская обл. Украина
Контактная информация:

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

Сообщение xenon-alien »

Прошу простить за офтоп, но от куда у вас всех знания по этим "секретным иероглифам" и их назначении/расшифровке/место пользования?
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

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

Сообщение Serg »

xenon-alien писал(а):Прошу простить за офтоп, но от куда у вас всех знания по этим "секретным иероглифам" и их назначении/расшифровке/место пользования?
Ты не поверишь - из документации. :)
"man date"
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
xenon-alien
Почётный участник
Почётный участник
Сообщения: 4508
Зарегистрирован: 01 янв 2013, 13:13
Репутация: 920
Настоящее имя: Daniel
Откуда: Закарпатская обл. Украина
Контактная информация:

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

Сообщение xenon-alien »

UAVpilot писал(а):
xenon-alien писал(а):Прошу простить за офтоп, но от куда у вас всех знания по этим "секретным иероглифам" и их назначении/расшифровке/место пользования?
Ты не поверишь - из документации. :)
"man date"
Та что в PDF, или онлайн? (а то у меня всё медленно идет)
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

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

Сообщение Serg »

просто в консоли напиши
man date
:)

Раньше изучение unix/linux начинали с команды "man", а сейчас сразу пытаются куда-нибудь мышой ткнуть - вот она, обратная сторона популярности... :wik:
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
xenon-alien
Почётный участник
Почётный участник
Сообщения: 4508
Зарегистрирован: 01 янв 2013, 13:13
Репутация: 920
Настоящее имя: Daniel
Откуда: Закарпатская обл. Украина
Контактная информация:

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

Сообщение xenon-alien »

UAVpilot писал(а):
просто в консоли напиши
man date
:)

Раньше изучение unix/linux начинали с команды "man", а сейчас сразу пытаются куда-нибудь мышой ткнуть - вот она, обратная сторона популярности... :wik:
Просто я начинал свою молодость владения ПК с MS-DOS, но и то только азы: как шастать по папкам, создавать удалять... Приметно гдето 10-20 строк команд, даже блокнот сохранился.
А вот unix/linux никогда не встречалась, вот и ифигиваю от знающих людей.
Есть где-то список на все команды "man"?
Так понимаю, что нужно ещё один комп для этого выделить, который будет "под рукой", а то все по полкам, или долго и нудно запускать. (эмуляторы не нравятся)
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

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

Сообщение 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 несколько виртуальных десктопов есть "из коробки".
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
ex71
Мастер
Сообщения: 704
Зарегистрирован: 18 май 2019, 13:23
Репутация: 96
Настоящее имя: Андрей
Контактная информация:

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

Сообщение 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:
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

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

Сообщение Serg »

команда init нынче deprecated. :)
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2857
Откуда: Тюмень
Контактная информация:

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

Сообщение Сергей Саныч »

UAVpilot писал(а):Кстати, с вариантом motion.analog-in-* надо быть поаккуратнее с новыми версиями, а то как-нибудь исправят небольшой баг и работать перестанет по ночам и утрам... :)
А можно поподробнее? Что там за баг такой, что сейчас по ночам работает, а после исправления может забастовать?
Чудес не бывает. Бывают фокусы.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

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

Сообщение Serg »

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

Вернуться в «LinuxCNC»