Python 串行通信脚本问题(在 Visual Studio 中)
Python Serial Communication script issues (in Visual Studio)
我目前正在尝试在 Windows PC 上使用 Python 通过 serial/USB 连接在 Arduino UNO 和 PC 之间建立通信。
目标 是在 Arduino 要求时在笔记本电脑上开始播放视频。
我在网上找到了一个指南,它引导我找到下面的代码,但是 Visual Studio 2017 似乎到处都是随机显示错误。很多它似乎来自进口和 VS 的 IntelliSense 混乱(我相信现在已经修复)。
所以目前当我 运行 程序时它卡在了 ser = serial.Serial(port, 9600, timerout=0) 行错误是 "name 'port' is not defined" 知道为什么会这样吗?
我不确定这是否是核心问题,因为每次我进行更改时,port[=31= 都会出现很多 "unexpected token" 和 "indent" 错误], newline, print and 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)
您似乎没有找到任何 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)
我目前正在尝试在 Windows PC 上使用 Python 通过 serial/USB 连接在 Arduino UNO 和 PC 之间建立通信。
目标 是在 Arduino 要求时在笔记本电脑上开始播放视频。
我在网上找到了一个指南,它引导我找到下面的代码,但是 Visual Studio 2017 似乎到处都是随机显示错误。很多它似乎来自进口和 VS 的 IntelliSense 混乱(我相信现在已经修复)。
所以目前当我 运行 程序时它卡在了 ser = serial.Serial(port, 9600, timerout=0) 行错误是 "name 'port' is not defined" 知道为什么会这样吗?
我不确定这是否是核心问题,因为每次我进行更改时,port[=31= 都会出现很多 "unexpected token" 和 "indent" 错误], newline, print and 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)
您似乎没有找到任何 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)