Как я могу отличить разные данные от последовательных?
Я пытаюсь прочитать значения последовательных разностей, но я не знаю, хой, чтобы разделить это, потому что два значения являются числами, но из другого источника
Во-первых, у меня есть PICAXE, отправляющая преобразованные данные через АЦП датчика света по последовательному каналу на 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 получает данные, я не знаю, как распознать каждую информацию.
Кто-нибудь может мне помочь??
Поблагодарить!
1 ответ
Если у вас есть показания температуры и уровня освещенности для одновременной отправки, вы можете поместить их в одну строку, разделенную пробелом.
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)