Как разделить два данных датчика в другой файл? - PullRequest
0 голосов
/ 04 мая 2018

Во-первых, я использую код Arduino для получения данных датчика, затем преобразовываю данные датчика вывода Python в текстовый файл для сохранения, проблема заключается в записи двух данных датчика в один и тот же файл, как я могу разделить их на два разных файла, чтобы сохранить

код Arduino:

int counter = 0;
int counter2 = 0;

int laststate = HIGH;
int laststate2 = HIGH;

const int irReceiver = 2;              
const int irReceiver2 = 6;

const int irLed  = 3;                    
const int irLed2  = 4;                    

const int ledPin = 13;                  
const int ledPin2 = 14;                


const unsigned int frequency = 38000;   
const unsigned int frequency2 = 38000; 


void setup() {                
  Serial.begin(9600);     
  pinMode(irReceiver, INPUT);    
  pinMode(irReceiver2, INPUT);

  pinMode(irLed, OUTPUT);  
  pinMode(irLed2, OUTPUT);

  pinMode(ledPin, OUTPUT); 
  pinMode(ledPin2, OUTPUT); 

  tone(irLed, frequency); 
  tone(irLed2, frequency2); 
}

void blinkLED() {
  for (int i=1; i<= 4; i++) {
    digitalWrite(ledPin, HIGH);
    delay(100);
    digitalWrite(ledPin, LOW);
    delay(100);
  }  
}

void blinkLED2() {
  for (int i=1; i<= 4; i++) {
    digitalWrite(ledPin2, HIGH);
    delay(100);
    digitalWrite(ledPin2, LOW); 
    delay(100);
  }  
}


void loop() {
  int ir_status = digitalRead(irReceiver); 
  int ir_status2 = digitalRead(irReceiver2);

  if (laststate == LOW && ir_status == HIGH) // only count on a LOW-> HIGH transition
  {
     counter++;
     Serial.println(" A zone:");
     Serial.println(counter);
  }
  laststate = ir_status; 

 if (laststate2 == LOW && ir_status2 == HIGH) // only count on a LOW-> HIGH transition
  {
     counter2++;
     Serial.println("B zone:");
     Serial.println(counter2);
  }
  laststate2 = ir_status2;  // remember last state

  if (ir_status == 0)                      
    blinkLED();                             
  if (ir_status2 == 0)                      
    blinkLED2();                           
}

Эта часть Python читает все выходные данные в коде Arduino, я хочу читать только первый датчик, как это сделать? код питона:

 import serial
    connected = False
    locations=['/dev/ttyUSB0']

for device in locations:

    try:
        print "Trying...", device

        ser = serial.Serial(device, 9600)

        break

    except:

        print "Failed to connect on",device

while not connected:

    serin = ser.read()

    connected = True

text_file = open("position4.txt", 'w')

while 1:

    if ser.inWaiting():

        x=ser.read()

        print(x) 

        text_file.write(x)

        if x=="":

             text_file.seek(0)

             text_file.truncate()

        text_file.flush()
enter code here

text_file.close()

ser.close()

1 Ответ

0 голосов
/ 04 мая 2018

Вы, вероятно, пропустили очень важную часть этих примеров - строки, следующие за вызовом "recv ()"

while 1:
    data = conn.recv(1024)
    if not data: break
    conn.send(data)
conn.close()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...