Mercurial > code > home > repos > light9
view dmx_usb_module/dmx.pyx @ 1639:8897ce2c48bf
limit timeline zoom to song
Ignore-this: 49eda54d69d4e8d1695ed3866ff4a47d
author | Drew Perttula <drewp@bigasterisk.com> |
---|---|
date | Sat, 10 Jun 2017 05:58:57 +0000 |
parents | 295e803f6a5e |
children |
line wrap: on
line source
cdef extern from "fcntl.h": int open(char *pathname, int flags) int O_WRONLY cdef extern from "unistd.h": int write(int fd, void *buf, int count) cdef extern from "string.h": char *strncpy(char *dest, char *src, int n) cdef extern from "Python.h": char* PyString_AsString(object string) cdef class Dmx: cdef int fd def __cinit__(self, port="/dev/dmx0"): self.fd = open(port, O_WRONLY) if self.fd < 0: raise OSError("open failed") def write(self, buf): cdef char *cbuf cbuf = PyString_AsString(buf) if cbuf == NULL: raise ValueError("string buffer conversion failed") res = write(self.fd, cbuf, 513) if res < 0: raise OSError("write failed")