如何使用python 3从arduino获取模拟值?

如何使用python 3从arduino获取模拟值?,python,arduino,bluetooth,Python,Arduino,Bluetooth,我试着连接一个电位计,它返回0到1023之间的整数值。我正在尝试通过蓝牙将这些数据传输到python 数据确实被传输了,因为当旋转电位计时,我确实在屏幕上得到了值。但是它没有显示为整数,而是显示如下:b'\xff' 我知道实际上0是b'\x00',1023是b'\xff',我不知道这是什么意思。有人能提供一个修复程序,让它打印0到1023之间的数字吗 import bluetooth print ("Searching for devices...") print ("") nearby_de

我试着连接一个电位计,它返回0到1023之间的整数值。我正在尝试通过蓝牙将这些数据传输到python

数据确实被传输了,因为当旋转电位计时,我确实在屏幕上得到了值。但是它没有显示为整数,而是显示如下:
b'\xff'

我知道实际上0是
b'\x00'
,1023是
b'\xff'
,我不知道这是什么意思。有人能提供一个修复程序,让它打印0到1023之间的数字吗

import bluetooth

print ("Searching for devices...")
print ("")
nearby_devices = bluetooth.discover_devices ()
num = 0
print ("Select your device by entering its coresponding number...")
for i in nearby_devices:
    num += 1
    print (num, ": ", bluetooth.lookup_name (i))

selection = int (input ("> ")) - 1
print ("You have selected", bluetooth.lookup_name (nearby_devices[selection]))
bd_addr = nearby_devices[selection]

port = 1

sock = bluetooth.BluetoothSocket( bluetooth.RFCOMM )
sock.connect((bd_addr, port))

while True:

    data = sock.recv(1)
    print (data)

谢谢

它以十六进制格式发送数字:

你数的不是0、1、2、3、4、5、6、7、8、9、10:

0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F、10

在这种格式中,A表示数字10,B表示数字11,依此类推。F是数字15。现在10并不像在我们的十进制系统中那样意味着“1*10+0*1”,而是意味着“1*16+0*1”。所以hexa-10=deci-16

但请注意,FF并没有给出1023。相反,它给出了255。对于这个更大的数字,你需要接受更多的咬。你确定你阅读了所有相关数据吗


现在有了这些,数据实际上是以字节的形式发送的,您必须将它们转换回整数:

另请参见通过套接字通信接收的数据是以字节码的形式发送的
print(data.decode('utf-8'))
将接收到的字节码值转换为十进制的字符串表示形式。这适用于micropython(因为您使用的是arduino,我假设您使用的是micropython)或Python3。