0

我试图通过序列差异值读取,但我不知道如何拆分它,因为这两个值是数字但来自不同的来源

首先,我有一个 PICAXE 通过光传感器的 ADC 通过串行向 python 发送转换后的数据。其次,我有一个 PICAXE 通过串行向 python 发送温度传感器的数据。

灯光代码 PICAXE

symbol puerto = B.5
main: readadc10 puerto,w1    ; read value into w1
sertxd(#w1,cr,lf)
goto main       ; loop back to start

临时代码 PICAXE

symbol temp = B.4

readtemp temp, w0    ; read value into w1
debug
sertxd(#w0,cr,lf)
goto main

Python代码

   import pygame
   import sys, serial
   from pygame.locals import *




   ser = serial.Serial()
   ser.port = 3
   ser.baudrate = 4800

   while True:

        datos = ser.readline()            
        grados = float(datos)
        print grados

问题是 picaxe 从光和温度同时发送数据,但是当 python 接收数据时,我不知道如何识别每个数据。

任何人都可以帮助我吗??

感谢!

4

1 回答 1

0

如果您要同时发送温度读数和光照水平读数,您可以将它们放在一条用空格隔开的行上。

皮克斯:

sertxd(#w0," ",#w1,cr,lf)

Python:

readings = ser.readline()
[reading1, reading2] = readings.split()
temperature = float(reading1)
lightlevel = float(reading2)

如果这两种读法产生的不规律,你可以在每一种读法之前传输一个字符来识别它是什么类型。

皮克斯:

sertxd("T ",#w0,cr,lf)
...
sertxd("L ",#w1,cr,lf)

Python:

reading = ser.readline()
[readingtype, readingvalue] = reading.split()
if readingtype == "T":
    temperature = float(readingvalue)
elif readingtype == "L":
    lightlevel = float(readingvalue)
于 2014-10-14T09:21:43.170 回答