使用 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()