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

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.

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

Сообщение Сергей Саныч » 09 июн 2020, 14:43

Возникла необходимость передать в программу обработки текущую (системную) дату. Скажем, в виде целого числа.
Есть ли возможность получить ее, не прибегая к средствам Python и т.п.?
Чудес не бывает. Бывают фокусы.
Аватара пользователя
Сергей Саныч
Мастер
 
Сообщения: 8841
Зарегистрирован: 30 май 2012, 14:20
Откуда: Тюмень
Репутация: 2766
Медальки:

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

Сообщение MX_Master » 09 июн 2020, 15:33

можно попробовать через собственные M коды и HAL..
но, вообще-то, нужно больше подробностей
Аватара пользователя
MX_Master
Мастер
 
Сообщения: 5852
Зарегистрирован: 27 июн 2015, 19:45
Откуда: Алма-Ата
Репутация: 2603
Медальки:
Настоящее имя: Миша

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

Сообщение nkp » 09 июн 2020, 17:33

Сергей Саныч писал(а):не прибегая

прибегая - без проблем
nkp
Мастер
 
Сообщения: 8260
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1539
Медальки:

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

Сообщение UAVpilot » 09 июн 2020, 17:49

Сергей Саныч писал(а):Возникла необходимость передать в программу обработки текущую (системную) дату.

В какой момент? Что есть "программа обработки"? УП, LinuxCNC, что-то ещё?
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
UAVpilot
Мастер
 
Сообщения: 20300
Зарегистрирован: 17 апр 2012, 14:58
Откуда: Москва
Репутация: 4856
Заслуга: c781c134843e0c1a3de9
Медальки:
Настоящее имя: Сергей

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

Сообщение D.L. » 09 июн 2020, 18:16

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
D.L.
Мастер
 
Сообщения: 238
Зарегистрирован: 25 авг 2018, 10:11
Откуда: Киров
Репутация: 58
Настоящее имя: Дмитрий

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

Сообщение nkp » 09 июн 2020, 18:25

D.L. писал(а):На питоне очень просто:

а если изжога от пресмыкающихся? :hehehe:
Сергей Саныч писал(а):не прибегая к средствам Python

давай что то другое :)
nkp
Мастер
 
Сообщения: 8260
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1539
Медальки:

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

Сообщение nkp » 09 июн 2020, 18:40

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


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
nkp
Мастер
 
Сообщения: 8260
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1539
Медальки:

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

Сообщение D.L. » 09 июн 2020, 18:46

Отличное решение. :good:
D.L.
Мастер
 
Сообщения: 238
Зарегистрирован: 25 авг 2018, 10:11
Откуда: Киров
Репутация: 58
Настоящее имя: Дмитрий

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

Сообщение Сергей Саныч » 09 июн 2020, 22:05

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

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

Сообщение UAVpilot » 10 июн 2020, 00:28

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

но не обозначено в какой момент получить и как использовать.
Можно воспользоваться фильтром:
Код: Выделить всёРазвернуть
#!/bin/sh
date +'(Production date: %d.%m.%Y)' | cat - $1


Кстати, с вариантом motion.analog-in-* надо быть поаккуратнее с новыми версиями, а то как-нибудь исправят небольшой баг и работать перестанет по ночам и утрам... :)
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
UAVpilot
Мастер
 
Сообщения: 20300
Зарегистрирован: 17 апр 2012, 14:58
Откуда: Москва
Репутация: 4856
Заслуга: c781c134843e0c1a3de9
Медальки:
Настоящее имя: Сергей

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

Сообщение xenon-alien » 10 июн 2020, 00:48

Прошу простить за офтоп, но от куда у вас всех знания по этим "секретным иероглифам" и их назначении/расшифровке/место пользования?
Аватара пользователя
xenon-alien
Почётный участник
Почётный участник
 
Сообщения: 2491
Зарегистрирован: 01 янв 2013, 13:13
Откуда: Закарпатская обл. Украина
Репутация: 587
Медальки:
Настоящее имя: Daniel

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

Сообщение UAVpilot » 10 июн 2020, 01:19

xenon-alien писал(а):Прошу простить за офтоп, но от куда у вас всех знания по этим "секретным иероглифам" и их назначении/расшифровке/место пользования?

Ты не поверишь - из документации. :)
"man date"
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
UAVpilot
Мастер
 
Сообщения: 20300
Зарегистрирован: 17 апр 2012, 14:58
Откуда: Москва
Репутация: 4856
Заслуга: c781c134843e0c1a3de9
Медальки:
Настоящее имя: Сергей

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

Сообщение xenon-alien » 10 июн 2020, 01:26

UAVpilot писал(а):
xenon-alien писал(а):Прошу простить за офтоп, но от куда у вас всех знания по этим "секретным иероглифам" и их назначении/расшифровке/место пользования?

Ты не поверишь - из документации. :)
"man date"

Та что в PDF, или онлайн? (а то у меня всё медленно идет)
Аватара пользователя
xenon-alien
Почётный участник
Почётный участник
 
Сообщения: 2491
Зарегистрирован: 01 янв 2013, 13:13
Откуда: Закарпатская обл. Украина
Репутация: 587
Медальки:
Настоящее имя: Daniel

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

Сообщение UAVpilot » 10 июн 2020, 01:32

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

Раньше изучение unix/linux начинали с команды "man", а сейчас сразу пытаются куда-нибудь мышой ткнуть - вот она, обратная сторона популярности... :wik:
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
UAVpilot
Мастер
 
Сообщения: 20300
Зарегистрирован: 17 апр 2012, 14:58
Откуда: Москва
Репутация: 4856
Заслуга: c781c134843e0c1a3de9
Медальки:
Настоящее имя: Сергей

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

Сообщение xenon-alien » 10 июн 2020, 01:54

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

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

Просто я начинал свою молодость владения ПК с MS-DOS, но и то только азы: как шастать по папкам, создавать удалять... Приметно гдето 10-20 строк команд, даже блокнот сохранился.
А вот unix/linux никогда не встречалась, вот и ифигиваю от знающих людей.
Есть где-то список на все команды "man"?
Так понимаю, что нужно ещё один комп для этого выделить, который будет "под рукой", а то все по полкам, или долго и нудно запускать. (эмуляторы не нравятся)
Аватара пользователя
xenon-alien
Почётный участник
Почётный участник
 
Сообщения: 2491
Зарегистрирован: 01 янв 2013, 13:13
Откуда: Закарпатская обл. Украина
Репутация: 587
Медальки:
Настоящее имя: Daniel

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

Сообщение UAVpilot » 10 июн 2020, 02:19

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 несколько виртуальных десктопов есть "из коробки".
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
UAVpilot
Мастер
 
Сообщения: 20300
Зарегистрирован: 17 апр 2012, 14:58
Откуда: Москва
Репутация: 4856
Заслуга: c781c134843e0c1a3de9
Медальки:
Настоящее имя: Сергей

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

Сообщение ex71 » 10 июн 2020, 02:28

да 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:
ex71
Мастер
 
Сообщения: 202
Зарегистрирован: 18 май 2019, 13:23
Репутация: 24
Настоящее имя: Андрей

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

Сообщение UAVpilot » 10 июн 2020, 02:40

команда init нынче deprecated. :)
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
UAVpilot
Мастер
 
Сообщения: 20300
Зарегистрирован: 17 апр 2012, 14:58
Откуда: Москва
Репутация: 4856
Заслуга: c781c134843e0c1a3de9
Медальки:
Настоящее имя: Сергей

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

Сообщение Сергей Саныч » 10 июн 2020, 07:51

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

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

Сообщение UAVpilot » 10 июн 2020, 13:41

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

След.

Вернуться в LinuxCNC

Кто сейчас на конференции

Зарегистрированные пользователи: Алексей063, Андрей Г., bc-chpu, Bender, Bing [Bot], dimedved, Dimka, Enginemaster, frezeryga, going, Google [Bot], guffy, Kachik, Kiriba, NickSon, niksooon, PavelTch, Prav, sazn86, shalek, svm, tovar4i, Vbt, Yandex [bot], шпиндель

Reputation System ©'