gpt4 book ai didi

python - 使用 PySerial 发送 ASCII 命令

转载 作者:太空狗 更新时间:2023-10-29 21:52:34 24 4
gpt4 key购买 nike

我正在尝试发送以下 ASCII 命令:关闭1

使用 PySerial,以下是我的尝试:

import serial

#Using pyserial Library to establish connection
#Global Variables
ser = 0

#Initialize Serial Port
def serial_connection():
COMPORT = 3
global ser
ser = serial.Serial()
ser.baudrate = 38400
ser.port = COMPORT - 1 #counter for port name starts at 0




#check to see if port is open or closed
if (ser.isOpen() == False):
print ('The Port %d is Open '%COMPORT + ser.portstr)
#timeout in seconds
ser.timeout = 10
ser.open()

else:
print ('The Port %d is closed' %COMPORT)


#call the serial_connection() function
serial_connection()
ser.write('open1\r\n')

但结果我收到以下错误:

Traceback (most recent call last):
, line 31, in <module>
ser.write('open1\r\n')
, line 283, in write
data = to_bytes(data)
File "C:\Python34\lib\site-packages\serial\serialutil.py", line 76, in to_bytes
b.append(item) # this one handles int and str for our emulation and ints for Python 3.x
TypeError: an integer is required

不确定我将如何解决这个问题。 close1 只是我要发送的 ASCII 命令的一个示例,还有 status1 用于查看我的锁是打开还是关闭等。

提前致谢

最佳答案

这个问题的出现是因为 Python 3 在内部将其字符串存储为 unicode 而 Python 2.x 却没有。 PySerial 期望获得一个bytesbytearray 作为write 的参数。在 Python 2.x 中,字符串类型适用于此,但在 Python 3.x 中,字符串类型是 Unicode,因此与 pySerial write 的需求不兼容。

为了在 Python 3 中使用 pySerial,您需要使用 bytearray .所以你的代码看起来需要像这样:

ser.write(b'open1\r\n')

关于python - 使用 PySerial 发送 ASCII 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31187407/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com