[python] ioctl() v céčku funguje, v Pythonu selže
Jan Martinek
honza na dp.fce.vutbr.cz
Středa Březen 22 14:32:36 CET 2006
Jan Martinek wrote:
> Ahoj,
>
> když v Pythonu napíšu tohle,
>
> import tty, os, fcntl
> fd = os.open('/dev/ttyS0', os.O_RDWR | os.O_SYNC)
> fcntl.ioctl(fd, tty.TIOCMBIC, tty.TIOCM_DTR)
>
> tak to vyvolá výjimku
> IOError: [Errno 14] Bad address
>
Aha, už vím. Musí se to předtím spakovat:
fcntl.ioctl(fd, tty.TIOCMBIC, struct.pack('I', tty.TIOCM_DTR))
(v Céčku se předává pointer). Spletl jsem si to s tímhle:
fcntl.ioctl(fd, tty.TIOCMIWAIT, tty.TIOCM_CTS)
což se naopak nepakuje, protože se v Céčku udávají přímo flagy, nikoli
pointer na ně.
Další informace o konferenci Python