Home > database >  AttributeError: UnionC object has no attribute
AttributeError: UnionC object has no attribute

Time:06-21

def writepmc(self, type_a, type_d, datano_s, datano_e, value):
    # datano_s & datano_e = start & end number
    length = 8   (datano_e - datano_s   1)

    # c union datatype

    class UnionC(ctypes.Union):
        _fields_ = [
            ('cdata[N]', ctypes.c_char),
            ('idata[N]', ctypes.c_short),
            ('ldata[N]', ctypes.c_long),
            ('fdata[N]', ctypes.c_float),
            ('dfdata[N]', ctypes.c_double),
        ]

    union = UnionC()
    union.ldata[0] = value

    class Iodbpmc(ctypes.Structure):
        _fields_ = [("type_a", ctypes.c_short),
                    ("type_d", ctypes.c_short),
                    ("datano_s", ctypes.c_short),
                    ("datano_e", ctypes.c_short),
                    ("u", union)]

    iodbpmc = Iodbpmc()

    iodbpmc.type_a = type_a
    iodbpmc.type_d = type_d
    iodbpmc.datano_s = datano_s
    iodbpmc.datano_e = datano_e

    ret = focas.pmc_wrpmcrng(libh, length, ctypes.byref(iodbpmc))
    self.wrpmc_errorcheck(ret)
    return ret

I'm working on a Universal Robot and have to use Python 2.7. I am also using the CTypes lib. I keep getting the error in the title and am not sure what I'm doing wrong.

I don't have a lot of experience with CTypes or OOP in Python. Does anyone know what's causing the error?

CodePudding user response:

I managed to solve the issue myself.

I wrote:

                class UnionC(ctypes.Union):
                    _fields_ = [
                        ('cdata', ctypes.c_char),
                        ('idata', ctypes.c_short),
                        ('ldata', ctypes.c_long),
                        ('fdata', ctypes.c_float),
                        ('dfdata', ctypes.c_double),
                    ]

And I removed :

union = UnionC()
union.ldata[0] = value

These changes solved the problem for me. I'm pretty sure the line two lines above were causing the issue.

  • Related