Как я могу отличить разные данные от последовательных?

Я пытаюсь прочитать значения последовательных разностей, но я не знаю, хой, чтобы разделить это, потому что два значения являются числами, но из другого источника

Во-первых, у меня есть 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)
Другие вопросы по тегам