Programa Arduino
serial_mod1_v1
#include <SoftwareSerial.h> SoftwareSerial mySerial(10, 11); // RX, TX byte recGpio[64]; byte recUsb[64]; boolean newGpio = false; boolean newUsb = false; void setup() { Serial.begin(115200); // Open serial monitor at 115200 baud to see ping results. mySerial.begin(115200); } void loop() { getUsbSerialUpdate(); getGpioSerialUpdate(); if(newGpio) { byte f; Serial.println("GPIO: "); for(f = 0; f < 64; f++) { Serial.print(recGpio[f]);Serial.print(" "); if(recGpio[f] == '\0') break; } Serial.println(); for(f = 0; f < 64; f++) { Serial.print((char)recGpio[f]); if(recGpio[f] == '\0') break; } Serial.println(); newGpio = false; } if(newUsb) { byte f; Serial.println("USB: "); for(f = 0; f < 64; f++) { Serial.print(recUsb[f]);Serial.print(" "); if(recUsb[f] == '\0') break; } Serial.println(); for(f = 0; f < 64; f++) { Serial.print((char)recUsb[f]); if(recUsb[f] == '\0') break; } Serial.println(); newUsb = false; } } void getUsbSerialUpdate() { boolean complete = false; static byte i = 0; static byte rec[64]; while(Serial.available()) { rec[i] = Serial.read(); if(rec[i] == 10)complete = true; i++; } if(complete) { byte f; rec[i] = '\0'; for(f = 0; f < i+1; f++) { recUsb[f] = rec[f]; } newUsb = true; i = 0; } } void getGpioSerialUpdate() { boolean complete = false; static byte i = 0; static byte rec[64]; while(mySerial.available()) { rec[i] = mySerial.read(); i++; } if(i) { byte f; for(f = 0; f < i; f++) { mySerial.print((char)rec[f]); } mySerial.println(""); rec[i] = '\0'; for(f = 0; f < i+1; f++) { recGpio[f] = rec[f]; } newGpio = true; i = 0; } }
Programa Raspberry Pi
gpioserial1.py
#!/usr/bin/python3 import serial ser = serial.Serial('/dev/ttyAMA0',115200) import time timestr = time.strftime("%Y%m%d-%H%M%S") while True: outval = input("enter: "); if not outval: continue ser.write(str(outval).encode()); read_serial = ser.readline().decode('ascii') print("received: " + read_serial)