Python pySerial:port仅在第一个命令下工作
我和pySerial有点问题。端口只能写入和读取数据一次。当我键入相同的命令时,端口不工作,不返回任何内容。这只是第一个命令的工作。wxTerminal也仅适用于第一个命令。为什么端口不能连续命令 编辑:我正在运行Win7 64位、python2.7.9和pySerial 2.7 代码如下:Python pySerial:port仅在第一个命令下工作,python,python-2.7,pyserial,Python,Python 2.7,Pyserial,我和pySerial有点问题。端口只能写入和读取数据一次。当我键入相同的命令时,端口不工作,不返回任何内容。这只是第一个命令的工作。wxTerminal也仅适用于第一个命令。为什么端口不能连续命令 编辑:我正在运行Win7 64位、python2.7.9和pySerial 2.7 代码如下: import time import serial import wx def init_serial(): global ser ser = ser
import time
import serial
import wx
def init_serial():
global ser
ser = serial.Serial()
ser.baudrate = 115200
ser.port = 3
ser.bytesize = 8
ser.parity = 'N'
ser.timeout = None
ser.xonxoff = False
ser.rtscts=False
ser.dsrdtr=False
ser.timeout = 1
ser.open()
if ser.isOpen():
print 'Open: ' + ser.portstr
init_serial()
while True:
cmd = raw_input('Type what you want to send:\r\n')
ser.write(cmd.encode('ascii')+'\r\n')
if cmd =='q':
ser.close()
print ser.portstr +' is closed'
exit()
else:
bytes = ser.readline()
print ('Return: ' + bytes)
结果如下:
Open: COM4
Type what you want to send, hit enter:
RR 500 **command and work**
Return: CCW_OK
Type what you want to send, hit enter:
RR 500 **command again, but it doesn't work**
Return: **return nothing**
Type what you want to send, hit enter:
谢谢你的帮助 我自己解决了这个问题。
在循环中的命令之前,需要添加ser.close()、ser.open()和time.sleep(2)
init_serial()
while True:
ser.close()
ser.open()
time.sleep(2) #at least wait for 2s
cmd = raw_input('Type what you want to send:\r\n')
ser.write(cmd.encode('ascii')+'\r\n')
if cmd =='q':
ser.close()
print ser.portstr +' is closed'
exit()
else:
bytes = ser.readline()
print ('Return: ' + bytes)
只是一个想法:尝试只使用
\r
或只使用\n
终止命令。那里使用的是本地回音还是远程回音?您键入命令“RR 500”时是在本地显示,还是远程回显然后显示?