Like let’s say I have a few old HP alphanumeric LED displays that have a simple bit pattern protocol. I’ve gotten them working in Arduino a long time ago. If I can find some unused pins how can I bit bang them into a custom protocol from user space using pins that may be unrelated as far as I/O ports on a modern computer? Is it even possible without a kernel module? Am I stuck with using a serial channel like SPI/I2C/UART to talk to an external controller?

  • ChubakPDP11+TakeWithGrainOfSalt@programming.dev
    link
    fedilink
    arrow-up
    12
    ·
    edit-2
    8 months ago

    You don’t need any garbage 3rd party packages. Just use ctypes.

    Read the documentation for ctypes. You can use any native object in Python the way you do in C using ctypes.

    Whatever you do, don’t trust some god-forsaken 3rd party package. I think people have forgotten to be clever and resourceful these days. A binary object is itself a package, why would you use s another package to communicate with it?

    Here’s how you can import libc into Python:

    from ctypes import CDLL
    
    libc = CDLL(None)
    

    Just pass it path to the binary object that holds the symbols for GPIO.

    Some tricks. Here’s how you can use libc to make a syscall in Python:

    libc = CDLL(None)
    
    TIME_NR = <syscall nr for time(2) on your arch>
    
    libc.syscall(TIME_NR)