Can't threads be executed in the remapping script?

More
4 years 10 months ago #229284 by chen1234
I created a thread in the remapping code, but it cannot execute the loop in the thread.
I remapped a code to receive an external io signal. I need to read this signal in a loop for judgment, so I created a thread and let this loop execute in the thread. But when I tested this code, I found that it could not execute the function in this thread. I don't know why. My thread was created successfully. Hope someone can give me advice.
Code:
#!/usr/bin/env python3 import struct import sys  import os from interpreter import * import hal import linuxcnc import _thread def Z_jogs(self,a):         print('a = ',a)         b=a         print('b=',b)         while True :             x = hal.get_value('lcec.0.5.RXPDO-5') #read EtherCAT io               print('x_in5 =',x)             if x == 1:                 print("in5 = ",x)                 self.execute("G0 Z %d"%b)    #Control Z axis movement                 b += a             elif x == 0:                 print("in5 = ",x)             if hal.get_value('lcec.0.5.TXPDO-2') == 1:                    break  # read EtherCAT io  def m203(self,**words):     yield INTERP_EXECUTE_FINISH     if self.task:         self.Z_jogs = Z_jogs()         a = (words['s'])         print("a=",a)         try:            _thread.start_new_thread(Z_jogs,(a,))            print('qw')         except:            print('erro')

Please Log in to join the conversation.

More
4 years 10 months ago #229288 by andypugh
I haven't tried this, but I really wouldn't expect it to work.

Why do you want to start a thread? Can you explain what you are trying to do?

Please Log in to join the conversation.

More
4 years 10 months ago #229535 by chen1234
Thank you for your reply,
my job is like this: I need to control the Z-axis movement by receiving the feed signal of the scanning head.
It works as follows: When the device is in the hole-making state during operation, it will send a high-level signal to my EtherCAT board. When I receive this signal, I need to control the Z-axis movement for a specified distance. This high-level signal It is not continuous, so I need a thread to let it execute the read signal in a loop. But the problem I currently encounter is that the thread is successfully created and the function is not executed. Is the remapping code not supporting threads? Or is there another way?

Please Log in to join the conversation.

More
4 years 10 months ago #229536 by cmorley

Please Log in to join the conversation.

More
4 years 10 months ago #229652 by andypugh
You can probably do this with a custom HAL component and the external offsets feature.
linuxcnc.org/docs/2.8/html/motion/external-offsets.html

Please Log in to join the conversation.

Time to create page: 3.374 seconds
Powered by Kunena Forum