python串口代码在windows中工作但在linux中不工作

时间:2013-12-05 23:02:56

标签: python linux serial-port pyserial

我已经编写了一些在Windows中运行良好的python代码,但它不能在linux(ubuntu 12.04)中运行。 我收到这条消息:

File "mygui.py", line 50, in sendPacket
returnpacket = str(length) + str(com3.read(ord(length)-1))
TypeError: ord() expected a character, but string of length 0 found

这是我的代码:

import serial
import crc16pure
import time

def main():
#works for 115200, 250000, 500000, 1000000
com3 = serial.Serial('/dev/ttyUSB0',baudrate=1000000,dsrdtr=False)
com3.timeout = 10
time.sleep(5) #MUST wait this long before writing, otherwise the serial
#p = '{"aaaaaaaaaaaaaaaa",{"  ",{"iget",{null}}}}'
p = '{"SensorNodeUUID":"aaaaaaaaaaaaaaaa","SlaveUUID":"  ","Command":"iget","Args":null}'
#discard first byte
com3.read()
timesum = 0
lstart = time.clock()

for i in range(3):
#print("writing packet")
start = time.clock()
#print(preparepacket(p))
com3.write(preparepacket(p))

length = com3.read()


returnpacket = str(length) + str(com3.read(ord(length)-1))
print(returnpacket)
com3.close()

1 个答案:

答案 0 :(得分:0)

我已经多年没有完成序列了,而且我已经编写了bufsock ...您可以尝试使用bufsock来查看它是否有助于您的情况: http://stromberg.dnsalias.org/~dstromberg/bufsock.html

在放弃读取之前,它会处理诸如等待字节准备好之类的事情。我用过Cygwin,但从未使用原生Windows Python。但众所周知,在* ix上使用CPython 2.x,CPython 3.x,Jython和Pypy。

不要让这个名字欺骗你 - 我把它写成缓冲套接字,但它也适用于文件句柄。