我试图通过串行不同值来读取,但我不知道如何拆分它,因为这两个值是数字但来自不同的来源
首先我有一个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从light和temp发送同时数据,但是当python接收数据时,我不知道如何识别每个数据。
任何人都可以帮助我吗?
感谢!
答案 0 :(得分:0)
如果您有温度读数和同时发送的亮度读数,您可以将它们放在由空格分隔的一行上。
PICAXE:
sertxd(#w0," ",#w1,cr,lf)
的Python:
readings = ser.readline()
[reading1, reading2] = readings.split()
temperature = float(reading1)
lightlevel = float(reading2)
如果两种类型的阅读不规则地产生,你可以在每个阅读之前发送一个字符来识别它是什么类型。
PICAXE:
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)