使用pyserial发送存储在变量中的十六进制或ASCII值

时间:2015-12-07 15:19:13

标签: python serial-port hex ascii 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。

由于

2 个答案:

答案 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()