Как закрыть или сбросить через код arduino? - PullRequest
1 голос
/ 08 июля 2019

Ну, я хочу напечатать, что есть данные в Arduino правильно? Я уже пробовал с ser.close (), так как он есть в коде, и он не работает, это принтер, когда я перезагружаю Arduino, выполняя весь процесс нажатия кнопки на Arduino. Я хотел бы знать, как сбросить или иным образом закрыть правильный способ запуска кода.

def getSerialData(self):

    lines=b''

    with serial.Serial('COM5',9600) as ser:      
        while (ser.inWaiting()<0): #Do while loop waiting for data 
            time.sleep(0.1)
        tempo = 20.0
        endtime=time.time()+tempo
        time.sleep(tempo-15.0)
        print("tempo")
        while (time.time()<endtime):
            print("entrou")
            time.sleep(0.1)
            line = ser.readline()
            #line = line.encode("utf-8")
            lines += line
            #lines += bytes(line, 'utf-8')
    ser.close()
    print("saiu")
    lin = lines.split()
    print(lin)

Ответы [ 2 ]

1 голос
/ 08 июля 2019

У вас есть возможность сбросить аппаратное обеспечение arduino

  • Использование 1 провода, подключенного к контакту RESET
  • Использование Just Software

    void (* resetFunc) (void) = 0; // объявляем функцию сброса по адресу 0 resetFunc (); // сброс вызова

0 голосов
/ 10 июля 2019

Если вы хотите управлять своей платой Arduino скриптом Python, вам нужно сначала установить последовательное соединение, а затем создать простой протокол для отправки ваших команд из скрипта Python в Arduino.Для части сброса в Arduino есть несколько способов сделать это, и я предпочитаю использовать сторожевой тайм-аут.

Код Arduino:

#include <avr/wdt.h>


void setup()
{
    MCUSR = 0;  // clear out any flags of prior resets.
    Serial.begin(9600);
}

// read a command from serial and do proper action
void read_command()
{
    String command;
    if (Serial.available())
    {
        command = Serial.readString();
        Serial.print("Received Command: ");
        Serial.println(command);
        // do proper work with command
        if (command == "RST")
        {
            Serial.println("Arduino is Reseting...");
            // reset board
            wdt_enable(WDTO_15MS); // turn on the WatchDog and don't stroke it.
            for(;;) { 
            // do nothing and wait for the eventual...
            } 
        }
    }
}

void loop()
{
    // get new commands
    read_command();
    delay(1000);
}

Python Script:

import serial
from time import sleep


# remember to set this value to a proper serial port name
ser = serial.Serial('COM1', 9600)
ser.open()
# flush serial for unprocessed data
ser.flushInput()
while True:
   command = "RST"
   ser.write(command.encode())
   """
   # use below code if you want to take commands from user
   command = input("Enter your command: ")
   if command:
      command += "\r\n"
      ser.write(command.encode())
   """
   ser.flushInput()
   sleep(3)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...