I have a device which returns a string in response to commands written to the device file. I am able to write commands to the device and read the return string in C with cod
According to the os.write documentation:
Note: This function is intended for low-level I/O and must be applied to a file descriptor as returned by
os.open()
orpipe()
. To write a “file object” returned by the built-in functionopen()
or bypopen()
orfdopen()
, orsys.stdout
orsys.stderr
, use itswrite()
method.
You shouldn't be mixing and matching here. If you use the global function open()
to open a file, then you must only use the file object's read()
and write()
methods. Conversely, if you use os.open()
to open a file, then you must only use os.read()
and os.write()
.
So, try replacing your call to open()
with os.open()
; or, keep the open()
call, and replace os.write(dev, ...)
with dev.write(...)
and replace os.read(dev, ...)
with dev.read(...)
.