Проблемы скрипта последовательной связи Python (в Visual Studio) - PullRequest
0 голосов
/ 18 июня 2019

В настоящее время я пытаюсь настроить связь между Arduino UNO и ПК через последовательное / USB-соединение с использованием Python на ПК с Windows.

Цель - запустить видео на ноутбуке, когда Arduino сообщит об этом.

Я нашел в Интернете руководство, которое привело меня к приведенному ниже коду, но Visual Studio 2017 везде показывает ошибки, которые кажутся случайными. Похоже, что во многом это произошло из-за импорта и из-за проблем с IntelliSense VS (что, я думаю, сейчас исправлено).

Так что в настоящее время, когда я запускаю программу, она застревает на ser = serial.Serial (port, 9600, timerout = 0) Строка с ошибкой, что «имя» порта не определено «Есть идеи, почему это происходит?

Я не уверен, является ли это основной проблемой, так как каждый раз, когда я делаю изменения, появляется много ошибок "неожиданного токена" и "отступа" для порта , новой строки, печать и ser (полностью наугад)

import serial, os, time, serial.tools.list_ports

    cmd = '"C:\\Users\\Josef\\Desktop\\PYTHON_PlayVideo\\PYTHON_PlayVideo\\Video1.mp4" -f --fullscreen --play-and-exit'

    for p in serial.tools.list_ports.comports():
      sp = str(p)
      #if (sp.find('COM5') != -1):
      if (sp.find('Arduino') != -1):
          flds = sp.split()
          port = flds[0]
          print(port)

    ser = serial.Serial(port, 9600, timeout=0)

    while 1:
      try:
        line = ser.readline()
        if (line):
          print (cmd)
          os.system(cmd)
      except:
        pass
      time.sleep(1)

1 Ответ

0 голосов
/ 19 июня 2019

Похоже, вы не нашли COM-порт, поэтому port никогда не определяется.Я переделываю ваш код, и эта версия работает для меня (замените USB на ваше ключевое слово).

import serial, os, time, serial.tools.list_ports

# Get the COM port
Ports = serial.tools.list_ports.comports()

if(len(Ports) == 0):
    print("[ERROR] No COM ports found!")
    exit()

TargetPort = None
for Port in Ports:
    StringPort = str(Port)
    print("[INFO] Port: {}".format(StringPort))
    if("USB" in StringPort):
        TargetPort = StringPort.split(" ")[0]
        print("[INFO] Use {}...".format(TargetPort))

if(TargetPort is None):
    print("[ERROR] No target COM port found!")
    exit()

# Open the COM port
ser = serial.Serial(TargetPort, 9600, timeout = 0)
if(ser.isOpen() == False):
    ser.open()

while(True):
    try:
        line = ser.readline()
        if (line):
            print (cmd)
            #os.system(cmd)
    except:
        pass

    time.sleep(1)
...