我试图使用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。
由于
答案 0 :(得分:2)
首先,变量的名称选择不是最佳的。 input
是一个内置函数,您可能会将其隐藏起来。
有很多方法可以将bytes
放入变量中:
to_send = b'A'
to_send = b'\x41'
to_send = bytes([65])
您将看到如何使用ASCII字符,十六进制数字的转义序列和整数列表。
现在通过
发送com.write(to_send)
答案 1 :(得分:0)
bytearray可用于发送字节(如hex或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()