我通过 PySerial 与串行设备建立了工作连接,但我也想通过 xmodem 协议传输文件作为我的程序的一部分。
哪一种是最平台中立的方式来做到这一点?最坏的情况,我可以close()
my serial.Serial
Python中的对象及其使用subprocess
呼吁/usr/bin/sb
,但这似乎不优雅。
我目前使用的是 Ubuntu 9.10,并使用 USB-TTY 适配器。
有任何想法吗?
PyPi 上有 xmodem 模块。它在构造函数中需要两个函数来读取和写入数据,实现它们以与您打开的串行端口一起使用。下面是其用法的简单示例:
import serial
try:
from cStringIO import StringIO
except:
from StringIO import StringIO
from xmodem import XMODEM, CRC
from time import sleep
def readUntil(char = None):
def serialPortReader():
while True:
tmp = port.read(1)
if not tmp or (char and char == tmp):
break
yield tmp
return ''.join(serialPortReader())
def getc(size, timeout=1):
return port.read(size)
def putc(data, timeout=1):
port.write(data)
sleep(0.001) # give device time to send ACK
port = serial.Serial(port='COM5',parity=serial.PARITY_NONE,bytesize=serial.EIGHTBITS,stopbits=serial.STOPBITS_ONE,timeout=0,xonxoff=0,rtscts=0,dsrdtr=0,baudrate=115200)
port.write("command that loads data via xmodem\r\n")
sleep(0.02) # give device time to handle command
readUntil(CRC)
buffer = StringIO('data to send')
XMODEM(getc, putc).send(buffer, quiet = 1)
buffer.close()
readUntil()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)