[英]python writing byte-by-byte to serial port didn't work
如之前在论坛中所讨论的,阅读问题已得到解决,但现在却出现了写问题。 我想将一些十六进制地址写入串行端口。 地址看起来像:
000062240
000062A4B
000062244
000062245
000062D50
00006225E
00006A25F
我想以0.01秒的延迟逐字节写入它们。 我要写:在写之前,我需要写N,这很完美。 CI之后需要写地址。 我将内循环放入文本文件中以读取地址。 但是ser.write(line[line1-1])
给出的字符串不能与int错误合并。 有什么办法吗?
for line1 in range(1,8):
ser.write(line[line1-1])
time.sleep(0.01)
编写代码:
with open('lut.txt', 'r') as f:
for line in f:
#print line
ser.write('N')
time.sleep(0.01)
ser.write(' ')
time.sleep(0.01)
ser.write('C')
time.sleep(0.01)
for line1 in range(1,8):
ser.write(line[line1-1])
time.sleep(0.01)
line+=1
time.sleep(0.01)
有关参考的完整代码。
import serial, time
from addresstable import *
ser = serial.Serial()
ser.port = "/dev/ttyUSB0"
ser.baudrate = 38400
ser.bytesize = serial.EIGHTBITS
ser.parity = serial.PARITY_NONE
ser.stopbits = serial.STOPBITS_ONE
ser.xonxoff = False
ser.rtscts = False
ser.dsrdtr = False
number_address = 10
number_char = 9
timeout=1
#f=open('lut.txt','r')
try:
ser.open()
except Exception, e:
print "error open serial port: " + str(e)
exit()
if ser.isOpen():
try:
ser.flushInput()
ser.flushOutput()
# reading
max_packet = 20
lines = 0
while True:
byteData = ser.read_until('\r',max_packet)
newdata=str(byteData)
print newdata.strip()
ser.write('I')
time.sleep(0.01)
# writing
with open('lut.txt', 'r') as f:
for line in f:
#print line
ser.write('N')
time.sleep(0.01)
ser.write(' ')
time.sleep(0.01)
ser.write('C')
time.sleep(0.01)
for line1 in range(1,8):
ser.write(line[line1-1])
time.sleep(0.01)
line+=1
time.sleep(0.01)
except Exception, e1:
print "error communicating...: " + str(e1)
else:
print "cannot open serial port "
这就是我现在正在做的:
对于f中的行:
ser.write('N')
time.sleep(0.01)
ser.write(' ')
time.sleep(0.01)
ser.write('C')
time.sleep(0.01)
#for line1 in range(1,8):
line="line"+"0"
print len(line)
requ = binascii.unhexlify(line)
for i in requ:
ser.write(i)
time.sleep(0.01)
line+=1
time.sleep(0.01)
用更简单的方法解决了问题。 备查。
for i in line:
newdata=i
ser.write(newdata)
time.sleep(0.01)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.