我让三个atmega32通过SPI协议向蓝牙模块发送三组感应值(加速计、陀螺仪、磁力计)。我收到了蓝牙数据,但它是这样传过来的,
0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,54.00
0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,51.00
0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,53.00
它是作为csv数据接收的,我无法分离单独的组件。我希望将它们存储在单独的变量中(如x1、y1、z1等)。
下面是我的代码:
# Author: P. Vinod Ranganath
# Description: Receiving data from ATmega32 via bluetooth
# Date: 27/04/2015
import bluetooth
import sys
#address of the bluetooth device
addr = "00:06:66:61:1E:76"
#port number
port = 1
#create socket and connect to it
socket = bluetooth.BluetoothSocket(bluetooth.RFCOMM)
socket.connect((addr, port))
#if there is an incoming transmission, enter loop
while True:
#receive transmitted data
data = socket.recv(1024)
#print data
sys.stdout.write(data) 发布于 2015-05-06 19:10:52
Python有一个csv模块,它可以完成你通常想要的所有CSV解析。
在您的示例中,它甚至更简单: python中的字符串具有split(char)方法,因此
data.split(",") 应该会给你一个子字符串的数组:
["0.0", "0.0", ....现在,你想要浮点数,对吧?
坚持你最喜欢的Python教程(真的,读一读吧!)并这样做
values = [float(substring) for substring in data.split(",")]因此,values是一个浮点数数组。
然后,您可以执行以下操作
x1 = values[10]但您通常不希望这样做-将这种类型的数据作为数组通常更有用。
发布于 2015-05-07 16:48:23
def get_words(data):
l = []
w = ''
for c in data.lower():
if c in '\r \n ,':
if w != '':
l.append(w)
w = ''
else:
w = w + c
if w != '':
l.append(w)
return l在堆栈溢出时发现了这个。
它分离不同的元素并在没有errors.But的情况下进行浮点转换,列表不会按顺序填充(随机地从最后一项到第二位,依此类推)
https://stackoverflow.com/questions/30074934
复制相似问题