2014-10-10 4 views
0

나는 일련의 differents 값으로 읽으려고하지만, 두 값이 숫자이기 때문에 나는, 그 분할 호이를 잘 모릅니다하지만 서로 다른 소스시리얼과 다른 데이터를 구별 할 수 있습니까?

처음부터 내가 PICAXE가 직렬로 광 센서의 ADC에 의해 변환 된 데이터를 전송해야 파이썬. 둘째, PICAXE가 직렬로 온도 센서의 데이터를 파이썬에 보내고 있습니다.

빛 코드 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 

파이썬 코드

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 빛과 온도에서 simultaneus 데이터를 보내지 만이다 데이터, 나는 각 데이터를 인식하는 방법을 모른다.

누구나 나를 도울 수 있습니까 ??

감사합니다.

답변

0

온도 판독 값과 빛 수준 판독 값이 동시에 전송할 수있는 경우 한 줄로 공백으로 구분할 수 있습니다.

PICAXE :

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

파이썬 : 독서의 두 가지 유형이 불규칙하게 발생하는 경우

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

, 당신은 그것이 어떤 종류의 식별 각각 전에 문자를 전송할 수 있습니다.

PICAXE :

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

파이썬 :

reading = ser.readline() 
[readingtype, readingvalue] = reading.split() 
if readingtype == "T": 
    temperature = float(readingvalue) 
elif readingtype == "L": 
    lightlevel = float(readingvalue) 
관련 문제