.axisrc

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

.axisrc

Сообщение nkp » 25 апр 2020, 13:43

так как темы по этой фиче отдельной нет - сведения распылены по всему форуму...
здесь будут примеры с этого и других форумов...

Файл .axisrc по умолчанию находится в домашней папке.
Точка в начале говорит о том,что файл скрытый(Hidden) ,отсюда - чтоб увидеть жмем (в Nautilus) Ctrl+H
В терминале чтоб "увидеть" :
ls -a
------------------------------------
Сразу следует отметить,что в некоторых случаях (например - несколько конфигов,и для каждого необходим "свой .axisrc") удобней
его держать в папке конфига.
Тогда в INI файле прописываем в секции
Код: Выделить всёРазвернуть
[DISPLAY]
USER_COMMAND_FILE = gui.py

имя файла может быть в таком случае произвольным,с "расширением" или без.
далее по тексту будет всегда использоваться имя .axisrc
Синтаксис файла разумеется python , иногда именно несоблюдение синтаксиса(отступы чаще всего) и является причиной ошибки.
Кстати - если ошибки не критичны - содержимое игнорируется(с выдачей окошка с ошибкой) ,а емс запускается.
------------------------------------------
Для чего служит?
Если предельно упрощенно - то это "продолжение" основного файла интерфейса axis.py
Код .axisrc выполняется после axis.py,и это значит ,что мы можем изменить интерфейс Axis не изменяя сам файл axis.py.
В таком случае,когда у нас обновится версия емс ,то наши изменения сохранятся .
-----------------------
Что можно "делать" в этом файле:
1. изменять функционал("поведение") программы
как пример - заставить емс (Axis) при загрузке открываться "на весь экран":
Код: Выделить всёРазвернуть
#maximize window
root_window.attributes("-zoomed",1)

(это работает не для всех дистрибутивов, другие варианты будут в теме)
2. изменять внешний вид
пример
3. создавать свои пины
таким образом "подключая" Hal к функционалу интерфейса
пример:
Код: Выделить всёРазвернуть
if hal_present == 1 :
    ucomp = hal.component("userpin")
    ucomp.newpin("reload_file",hal.HAL_BIT, hal.HAL_IN)

в hal будет создан пин (вход) с именем userpin.reload_file
4. еще одна удобная фича - функция user_live_update()
она выполняется в цикле,(кому интересно - через LivePlotter.update axis.py)
а следовательно задействуется для всех обновлений интерфейса
пример
таймер хода программы в статус_строке Axis
Код: Выделить всёРазвернуть
if hal_present == 1 :
    ucomp = hal.component("axisui.user")
    ucomp.newpin('hr',   hal.HAL_U32, hal.HAL_IN)
    ucomp.newpin('mn',  hal.HAL_U32, hal.HAL_IN)
    ucomp.newpin('sec',  hal.HAL_U32, hal.HAL_IN)
    ucomp.ready() 

W = root_window.tk.call
W('label','.info.ttime','-text','TTime:' )
W('pack', '.info.ttime', '-side', 'right')

W('pack','.info.tool','-fill','x','-expand','0'  )

def user_live_update():
    W('.info.ttime','configure','-text','%2d:%2d:%2d' % ( (ucomp['hr']),(ucomp['mn']),(ucomp['sec'])))


тут в postgui.hal разумеется нужно прописать пины таймера
Код: Выделить всёРазвернуть
loadrt time 
loadrt not
addf time.0 servo-thread
addf not.0 servo-thread
net prog-running not.0.in <= halui.program.is-idle
net cycle-timer time.0.start <= not.0.out
net cycle-seconds axisui.user.sec <= time.0.seconds
net cycle-minutes axisui.user.mn  <= time.0.minutes
net cycle-hours   axisui.user.hr  <= time.0.hours


=============================================
открытие последнего G-кода при загрузке емс
Код: Выделить всёРазвернуть
lastfile = ""
recent = ap.getpref('recentfiles', [], repr)
if len(recent):
    lastfile = recent.pop(0)

if os.path.exists(lastfile):
    initialfile = lastfile

if os.path.exists(initialfile):
    open_file_guts(initialfile, False, addrecent)

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

Вернуться в LinuxCNC

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

Зарегистрированные пользователи: arisov77, Atom42, Bing [Bot], calabr, dimedved, eekot, Enot_1, Gestap, Google [Bot], Leo_1943, mikehv, Okser, Prav, Vitalii, vitzin, Yandex [bot]

Reputation System ©'