Как отправлять и получать данные из python в arduino одновременно - PullRequest
2 голосов
/ 06 мая 2019

В настоящее время у меня есть код Arduino, который подключен к трем датчикам: температура, давление и влажность. Я хотел бы сделать код на Python кода порядка (по int или strg), это посылает тип датчика, который я хочу прочитать, например: если я ввожу с клавиатуры 1, он постоянно отправляет мне данные о температуре; если доход 2, пришлите мне данные о давлении; и, таким образом, сможете ввести любую цифру в любое время. Pd: Извините, мой плохой английский, я не знаю, смогу ли я объяснить свою проблему

У меня есть похожий код в arduino с переключателем, и он работает отлично. но я не могу заставить его работать в python, так как, когда я помещаю raw_input (), программа перестает ждать ввода и перестает читать данные датчика.

Python

import serial
import time

ser=serial.Serial('/dev/ttyUSB0',baudrate=115200)
while 1:
 ser.setDRT(False)
 #c=raw_input()
 #ser.write(c)
 med=a.readline()
 print med

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

1 Ответ

0 голосов
/ 06 мая 2019

Если у вас есть задачи, которые должны выполняться параллельно, вы можете использовать threads . Один поток получает данные датчика, а другой ожидает ввода.

Python имеет очень простой в использовании встроенный модуль для потоков.

Очень простой пример реализации может выглядеть так:

import threading 


def wait_input():
    while True:
        user_input = input()
        # do something with user_input 

def get_sonsordata()
    while True:
        med=a.readline()
        print(med)

input_thread = threading.Thread(target=wait_input)
input_thread.start()
sensor_thread = threading.Thread(target=get_sonsordata)
sensor_thread.start()
...