Код: Выделить всё
delay = (delay+1)%10
if delay == 0 :
...запись в порт...
тогда запись будет делаться раз в 10 циклов.
Код: Выделить всё
delay = (delay+1)%10
if delay == 0 :
...запись в порт...
Или в питоне какие то особенности или я не понял или так работать не будет. Но спасибо что натолкнул на мысль, сделаю так.Nick писал(а):можешь оставить time.sleep(.001) но перед записью поставить вот такое условие:и вверху программы delay = 0Код: Выделить всё
delay = (delay+1)%10 if delay == 0 : ...запись в порт...
тогда запись будет делаться раз в 10 циклов.
Код: Выделить всё
delay = (delay+1)
if delay == 10 :
...запись в порт...
delay = 0
За питон не скажу, но в машинных командах сложение и условный переход выполняются быстрее, чем сложение, деление и условный переход.Nick писал(а):То, что ты написал делает примерно тоже, но первый вариант проще и быстрее .
Nick писал(а): billsmith писал(а):
2. Как сделать чтоб при получении строки, питоновский скрипт запускал его как g-code или запускал например подпрограмму в которой записан g-code?
Хитрая задача...
как мне кажется можно через halui-mdi-command-XX + ocall <#custom_command> + переписывание файла custom_command.ngc...
Хотя может есть варианты по-проще...?
1/10 присвоения, если точно - 1 раз в 10 циклов.Nick писал(а):тут еще и присвоение дополнительное есть.
На большом компе - да, но всё равно сложение+деление против просто сложения.Nick писал(а): а сложение и деление это же вроде всего два такта ....
зы щас проверим за питон ....
Код: Выделить всё
delay = delay-1
if delay == 0 :
...запись в порт...
delay = 10
Код: Выделить всё
delay = delay+1
if delay == 10 :
delay = 0
b = 1
0.7250 sec total
0.07 usec/pass
Testing for 10000000 times
delay += 1
if delay == 10 :
delay = 0
b = 1
0.7276 sec total
0.07 usec/pass
Testing for 10000000 times
delay = (delay+1)%10
if delay == 0 :
b = 1
1.0898 sec total
0.11 usec/pass
Testing for 10000000 times
delay += 1
delay %= 10
if delay == 0 :
b = 1
1.1930 sec total
0.12 usec/pass
Код: Выделить всё
offset,25,35
Код: Выделить всё
O<ooffset> sub
(DEBUG, Смещение X=#1 Y=#2)
G0 X0 Y0
G10 L20 P1 X[-#1] Y[-#2]
G0 X0 Y0
O<ooffset> endsub
m2
На GladeVCP я так и делаю. А вот как это сделать на питоне?Nick писал(а):Хммм... вообще есть вот такой вариант:
http://www.linuxcnc.org/docview/html/gu ... subroutine
причем в Oкод ocall можно передавать параметр... Т.е. может выйти вот так:
o<${какой-нибудь пин}> call [${еще пин}] [${еще пин}] [${еще пин}] ...
Надо пробовать...
А из питона как так сделать?Nick писал(а):О, еще вариант!
emcrsh:
mdi <string>
With set, sends <string> as an MDI command.
В терминах машинных кодов сравнение и переход типаNick писал(а):А что сравнивать с 0 и decrement/increment можно прямо в памяти делать?
хмм.... может конечно и получится... но лучше разобраться с axis-remote.billsmith писал(а):Ну а тогда может можно из питона, нажать определённую кнопку у меня на GladeVCP панели?
Код: Выделить всё
slava@slava-cnc:~$ axis-remote --help
axis-remote: cause AXIS to open, reload its opened file, or exit
Usage: axis-remote [--clear|--ping|--reload|--quit|--mdi command|filename]
axis-remote [-c|-p|-r|-q|-m command]