Python 将数据组件与通过atmega32中的spi输入pc的实时输入分离

Python 将数据组件与通过atmega32中的spi输入pc的实时输入分离,python,csv,bluetooth,analysis,Python,Csv,Bluetooth,Analysis,我有三台atmega32通过SPI协议向蓝牙模块发送三组传感器值(加速计、陀螺仪、磁强计)。我收到了蓝牙数据,但它是这样传入的 0.00,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,0.00,51.00 0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,53.00 它作为csv数据接收,我无法分离各个

我有三台atmega32通过SPI协议向蓝牙模块发送三组传感器值(加速计、陀螺仪、磁强计)。我收到了蓝牙数据,但它是这样传入的

0.00,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,0.00,51.00

0.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)  

Python有一个
csv
模块,可以完成您通常需要的所有csv解析

在您的例子中,它甚至更简单:python中的字符串具有
split(char)
方法,因此

data.split(",") 
应该为您提供一个子字符串数组:

["0.0", "0.0", ....
现在,你想要浮点数,对吗

坚持你最喜欢的Python教程(真的,读一本!),然后去做

因此,
是一个浮点数数组

然后你可以做类似的事情

x1 = values[10]
但您通常不想这样做——将此类数据作为数组通常更有用

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
在堆栈溢出上找到此


它分离了不同的元素,浮点转换进行得没有错误。但是,列表没有按顺序填充(最后一项到第二位,等等,随机排列)

Bro,它给了我这样的输出,['''0.00',0.0']['0','51.00\r\n0.00','0.00','0.00','0.00','0.00','0.00','0.00','54.00\r\n0.00','0.00','0.00','0.00','0.00','0.00','0.00','0.00','0.00','53.00\r\n0.00','']当我试图将其转换为float时,它会向我抛出一个错误,说,invalid literal我猜当float转换在每一行的末尾时,它会抛出一个错误,\r和\n(默认情况下).我现在试图消除每行末尾的\r和\n…….有什么想法吗?X1=0.0 Y1=0.0 Z1=0.0 X2=0.0 Y2=0.0 Z2=0.0 X3=0.0 Y3=53.0 Z3=0.0 T=0.0 X1=0.0 Y1=0.0 Z1=0.0 X2=0.0 Y2=0.0 X3=51.0 Y3=0.0 Z3=0.0 T=0.0看看53.0,它的位置在变化,因为这个列表是无序填写的
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