python没有将bybyte写入串行端口

2024-06-16 10:17:23 发布

您现在位置:Python中文网/ 问答频道 /正文

正如之前在论坛上讨论过的,阅读问题正在解决,但现在却遇到了写作问题。我想写一些十六进制地址到串行端口。地址看起来像:

    000062240
    000062A4B
    000062244
    000062245
    000062D50
    00006225E
    00006A25F

我想以0.01秒的延迟逐字节写入它们。我要写的是: 我需要在写作之前完美地写作。在C之后我需要写下地址。我把内部循环放在文本文件中读取地址。但是ser.write(line[line1-1])给出的字符串不能与int错误组合。有什么解决办法吗?在

^{pr2}$

书写代码:

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 "

Tags: intxtfortimeport地址lineserial
2条回答

这就是我现在要做的:

对于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)

相关问题 更多 >