Read from serial port
Fredrik Lundh
fredrik at pythonware.com
Thu Aug 14 05:13:17 EDT 2008
mmrasheed at gmail.com wrote:
> I need a promt/terminal when the device is connected to PC. If user
> enters a command by serial port and press "Enter" then the data is
> read by the device and work on the command. This is similar to
> readline() function. Unfortunately there is no readline() function for
> GM862 device. The following functions are available for serial port
> data receive-
>
> SER.read() - reads whole string at a time from buffer
> SER.receive(timeout) - reads if there is any input in the buffer
> andwait for the input upto timeout
> SER.receivebyte(timeout) - reads if there is any byte sent in the
> buffer and wait for the input upto timeout
Unless I'm missing something, a simple loop should be all you need:
import SER
def readline(timeout=36000):
line = ""
while 1:
ch = SER.receivebyte(timeout)
if ch < 0:
raise IOError("timeout")
if ch == 10:
break # stop collecting when we get LF
if ch == 13:
continue # ignore CR, in case we get CR+LF
line = line + chr(ch)
return line
Tweak as necessary.
(and before anyone pops up with a "better" way to do that, keep in mind
that the GM862 device uses a custom version of Python 1.5.2.)
</F>
More information about the Python-list
mailing list