본문 바로가기

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