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

Как узнать имя исполняемой в axis программы из bash?

Добавлено: 03 июн 2015, 14:33
aekhv
Написал себе простенькую jabber-уведомлялку о завершении обработки. Уведомлялка шлёт мне время потраченное на обработку, но для полного счастья хотелось бы и имя программы (.ngc файла) добавить. Обыскался уже в гугле, наверное не то спрашиваю. :D Кто-нибудь знает как из bash узнать имя загруженной в axis программы? :thinking:

Re: Как узнать имя исполняемой в axis программы из bash?

Добавлено: 03 июн 2015, 15:10
Serg
Штатным образом никак, только патчить axis.

Re: Как узнать имя исполняемой в axis программы из bash?

Добавлено: 03 июн 2015, 15:32
aekhv
Кажется нашёл, можно выдрать искомое из заголовка окна:

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

xwininfo -root -tree | grep .ngc

Re: Как узнать имя исполняемой в axis программы из bash?

Добавлено: 03 июн 2015, 16:14
Serg
Так можно, но без гарантии.

Re: Как узнать имя исполняемой в axis программы из bash?

Добавлено: 03 июн 2015, 16:42
aekhv
Вот, сделал совсем красиво:

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

user@debian:~$ xwininfo -root -tree | grep LinuxCNC
        0x2e00011 "My "super-duper" PrograMM.ngc - AXIS 2.6.1 on LinuxCNC-HAL-SIM-AXIS": ("axis" "Axis")  710x597+1+22  +693+145
user@debian:~$ xwininfo -root -tree | grep LinuxCNC | sed -r 's/ - AXIS.+//' | cut -d '"' -f 2-
My "super-duper" PrograMM.ngc
user@debian:~$

Re: Как узнать имя исполняемой в axis программы из bash?

Добавлено: 03 июн 2015, 17:19
Lexxa

Re: Как узнать имя исполняемой в axis программы из bash?

Добавлено: 03 июн 2015, 18:03
aekhv
Lexxa писал(а):может в эту сторону копать стоит?
Нет, мне не нужно удалённо управлять станком. Задача весьма скромная - нужно отправить во внутрисетевой чат сообщение о том, что выполнение такого-то файла завершено за такое-то время. Сделал всё на баше, так проще. 8-)

Re: Как узнать имя исполняемой в axis программы из bash?

Добавлено: 03 июн 2015, 20:06
umerov
Вроде оно
http://linuxcnc.org/docs/devel/html/com ... rface.html

linuxcnc.stat attributes => file (returns string) - currently executing gcode file.

Re: Как узнать имя исполняемой в axis программы из bash?

Добавлено: 03 июн 2015, 20:09
nkp
umerov писал(а):Вроде оно
но
BentScrew писал(а):как из bash

Re: Как узнать имя исполняемой в axis программы из bash?

Добавлено: 03 июн 2015, 20:38
Serg
umerov писал(а):Вроде оно
Да, оно!
nkp писал(а):но как из bash
Кто-то мешает маленький скриптик на питоне написать?

Re: Как узнать имя исполняемой в axis программы из bash?

Добавлено: 04 июн 2015, 03:44
Lexxa
BentScrew писал(а):мне не нужно удалённо управлять станком
по команде get gcode в ответ должно придти имя загруженной программы

Re: Как узнать имя исполняемой в axis программы из bash?

Добавлено: 04 июн 2015, 10:31
aekhv
Всем спасибо за советы, но уже лень переделывать, остановился на своём варианте. Вот что получилось в итоге.

Код M101 вставляется в начало программы, сразу после Tx M6.

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

#!/bin/bash
echo `date +%H:%M:%S` > ~/time.ini
exit 0 
Код M102 вставляется в конце, перед M2/M30.

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

#!/bin/bash

read start_time < ~/time.ini
end_time=`date +%H:%M:%S`
duration=`date -d @$(( $(date -d "$end_time" +%s) - $(date -d "$start_time" +%s) )) -u +%H:%M:%S`
fname=`xwininfo -root -tree | grep " AXIS " | sed -r 's/ - AXIS.+//' | cut -d '"' -f 2-`

# указать свои данные - id получателя, сервер
send_xmpp_message.py id_to@server "Обработка завершена ( $fname / $duration )"

exit 0
send_xmpp_message.py

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

#!/usr/bin/env python
#-*- coding: utf-8 -*-

import xmpp,sys

# указать свои данные - id отправителя, сервер, пароль
xmpp_jid = 'id_from@server'
xmpp_pwd = 'pwd'

to = sys.argv[1]
msg = sys.argv[2]

jid = xmpp.protocol.JID(xmpp_jid)
client = xmpp.Client(jid.getDomain(),debug=[])
client.connect()
client.auth(jid.getNode(),str(xmpp_pwd),resource='xmpppy')
client.send(xmpp.protocol.Message(to,msg))
client.disconnect()
Пример размещения M101 и M102. У меня это автоматически делает постпроцессор.

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

%
G21 G17 G90 G64 P0.1
T1 M6
M101
S10000 M3
...
...
G0 X... Y... Z...
...
...
M5
M102
M30
%
Пример сообщения:

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

Обработка завершена ( NanoGiperGraviCapa99.ngc / 00:17:33 )
Конечно же, вместо сообщения в jabber можно прикрутить отправку email или sms, но меня пока и так устраивает.