使用 pyserial 发送存储在变量中的十六进制或 ASCII 值
Sending hexadecimal or ASCII value stored in a variable using pyserial
我试图使用 pyserial 通过串口发送一个包含十六进制值的字节。十六进制值必须在变量中(以便我可以在发送前进行一些操作)。示例代码将解释我的意图:
import serial
com=serial.Serial('COM1')
a_var=64
a_var=a_var+1
com.write(a_var) #This of course throws error
我想在另一端接收 'A' 或 0x41。我可以使用
发送十六进制
com.write(b'\x41')
但没有使用变量。将其转换为字符串或字符或对字符串进行编码都无济于事。我正在使用 python 3.5.
谢谢
起初您的变量名称选择不是最佳的。 input
是一个内置函数,您可以隐藏它。
有很多方法可以将bytes
放入变量中:
to_send = b'A'
to_send = b'\x41'
to_send = bytes([65])
您将了解如何使用 ASCII 字符、十六进制数字的转义序列和整数列表。
现在通过
发送
com.write(to_send)
bytearray 可用于发送字节(十六进制或 ascii)。它们是可变的,因此可以进行数值操作。可以使用它发送任意数量的字节。
import serial
com=serial.Serial('COM2')
elements=[65,67,69,71] #Create an array of your choice
a_var=bytearray(elements) #Create byte array of it
com.write(a_var[0:3]) #Write desired elements at serial port
a_var[0]=a_var[0]+1 #Do your mathematical manipulation
com.write(a_var[0:1]) #Write again as desired
com.close()
我试图使用 pyserial 通过串口发送一个包含十六进制值的字节。十六进制值必须在变量中(以便我可以在发送前进行一些操作)。示例代码将解释我的意图:
import serial
com=serial.Serial('COM1')
a_var=64
a_var=a_var+1
com.write(a_var) #This of course throws error
我想在另一端接收 'A' 或 0x41。我可以使用
发送十六进制 com.write(b'\x41')
但没有使用变量。将其转换为字符串或字符或对字符串进行编码都无济于事。我正在使用 python 3.5.
谢谢
起初您的变量名称选择不是最佳的。 input
是一个内置函数,您可以隐藏它。
有很多方法可以将bytes
放入变量中:
to_send = b'A'
to_send = b'\x41'
to_send = bytes([65])
您将了解如何使用 ASCII 字符、十六进制数字的转义序列和整数列表。
现在通过
发送com.write(to_send)
bytearray 可用于发送字节(十六进制或 ascii)。它们是可变的,因此可以进行数值操作。可以使用它发送任意数量的字节。
import serial
com=serial.Serial('COM2')
elements=[65,67,69,71] #Create an array of your choice
a_var=bytearray(elements) #Create byte array of it
com.write(a_var[0:3]) #Write desired elements at serial port
a_var[0]=a_var[0]+1 #Do your mathematical manipulation
com.write(a_var[0:1]) #Write again as desired
com.close()