Python 获取pyserial错误“;类型错误:'&燃气轮机';在';字节';和';int';
我正在尝试从设备读取串行输出,并得到上述错误 在以下行中添加int(),并得到相同的错误: rtn=self.ser.read(int(self.numbytes)) 我从我的打印声明中得到“等待中的字节数:74”,有什么想法吗 以下是实际错误: 回溯(最近一次呼叫最后一次): 文件“senscom\SensComRes.py”,第95行,以doSerial格式 文件“site packages\serial\serialwin32.py”,第268行,已读Python 获取pyserial错误“;类型错误:'&燃气轮机';在';字节';和';int';,python,pyserial,python-3.7,Python,Pyserial,Python 3.7,我正在尝试从设备读取串行输出,并得到上述错误 在以下行中添加int(),并得到相同的错误: rtn=self.ser.read(int(self.numbytes)) 我从我的打印声明中得到“等待中的字节数:74”,有什么想法吗 以下是实际错误: 回溯(最近一次呼叫最后一次): 文件“senscom\SensComRes.py”,第95行,以doSerial格式 文件“site packages\serial\serialwin32.py”,第268行,已读 TypeError:“bytes”和
TypeError:“bytes”和“int”的实例之间不支持“>”您确定错误不在这一行
self.Response\u textEdit.setText(self.ser.read(rtn))
?您提供的是serial.read
,其大小参数为rtn
。变量rtn
是上一个serial.read
的输出,它将是一个字节对象,并将引发您得到的错误。您能提供完整的堆栈跟踪吗?已弃用。请在设置后立即打印self.numbytes
。添加打印(repr(self.numbytes))
并检查它是否符合您的期望。(如果您仍然需要帮助,请与我们共享。)同时尝试self.ser.in_waiting
(无括号)而不是in waiting
,假设您正在运行pyserial 3.0或更高版本。您也可以使用if self.numbytes
而不是将其与0进行比较,或者只使用rtn的长度。但是,用完整的堆栈跟踪来回答这个问题会更容易。您暗示错误在rtn=代码>行,但该行上没有
运算符,因此它很可能位于pyserial中的某个位置,但如果没有堆栈跟踪,我们无法判断。也许我应该使用readline来代替?
def doSerial(self, cmd=''):
self.ser = serial.Serial(self.port,self.baud)
time.sleep(1)
if self.ser.isOpen():
if self.sel == 5:#RSOIS
self.StatusButton.setStyleSheet(_fromUtf8("background-color: rgb(0, 255, 0);"))
self.statusLabel.setText('connected')
time.sleep(2)
while True:
self.numbytes = self.ser.inWaiting()#size of input buffer
print ('bytes in waiting: '+str(self.numbytes))
rtn = self.ser.read(int(self.numbytes))
if self.numbytes > 0:
self.Response_textEdit.setText(self.ser.read(rtn))
else:
self.Response_textEdit.setText('No serial ouput/n')
break
else:
print ('serial not open')