Fanuc Focas Python
# Get current program number prog_num = ctypes.c_ulong() ret = focas.cnc_rdprgnum(handle, ctypes.byref(prog_num))
if ret == 0: print(f"Current Program: Oprog_num.value")
FOCAS functions often require C structures (structs) to pass data back and forth. We must replicate these in Python. fanuc focas python
# Define the ODBSTS structure (used for reading status)
class ODBSTS(ctypes.Structure):
_fields_ = [
("dummy", ctypes.c_short * 2),
("tmmode", ctypes.c_short),
("aut", ctypes.c_short),
("run", ctypes.c_short),
("motion", ctypes.c_short),
("mstb", ctypes.c_short),
("emergency", ctypes.c_short),
]
# Define the ODBPOS structure (used for reading positions)
class ODBPOS(ctypes.Structure):
_fields_ = [
("dummy", ctypes.c_short * 2),
("abs", ctypes.c_long), # Absolute position
("mach", ctypes.c_long), # Machine position
("rel", ctypes.c_long), # Relative position
("dist", ctypes.c_long), # Distance to go
]
class ODBAXIS(ctypes.Structure): fields = [ ("datano", ctypes.c_short), ("type", ctypes.c_short), ("dec", ctypes.c_short), ("unit", ctypes.c_short), ("disp", ctypes.c_float * 24) ] # Get current program number prog_num = ctypes