pySerial拒绝USB VCP Acces

问题描述

我只是把手放在使用微型Python的OpenMV Cam H7 Plus上。我正在尝试一个示例,该示例应该采用python程序从相机中索取图片并保存。据我了解(对python来说还很新)是相机IDE创建一个虚拟串行端口并侦听命令。 python主程序尝试打开端口(COM4),但被拒绝。我认为问题在于端口已在使用中。如何获得访问权限?

IDE微型Python代码

import sensor,image,time,ustruct
from pyb import USB_VCP

usb = USB_VCP()
sensor.reset()                      # Reset and initialize the sensor.
sensor.set_pixformat(sensor.RGB565) # Set pixel format to RGB565 (or GRAYSCALE)
sensor.set_framesize(sensor.QVGA)   # Set frame size to QVGA (320x240)
sensor.skip_frames(time = 2000)     # Wait for settings take effect.

print("USB is a Com Port",usb.isconnected())


while(True):
    cmd = usb.recv(4,timeout=5000)
    if (cmd == b'snap'):
        img = sensor.snapshot().compress()
        usb.send(ustruct.pack("<L",img.size()))
        usb.send(img)

主要python代码

import serial
import struct
port = 'COM4'
sp = serial.Serial(port,baudrate=115200,bytesize=serial.EIGHTBITS,parity=serial.PARITY_NONE,xonxoff=False,rtscts=False,stopbits=serial.STOPBITS_ONE,timeout=None,dsrdtr=True)
sp.setDTR(True) # dsrdtr is ignored on Windows.
sp.write("snap")
sp.flush()
size = struct.unpack('<L',sp.read(4))[0]
img = sp.read(size)
sp.close()

with open("img.jpg","w") as f:
    f.write(img)

在运行主程序时出现错误

文件“ C:\ Users \ vincent \ usbpcvtest \ lib \ site-packages \ serial \ serialwin32.py”,第62行,处于打开状态 引发SerialException(“无法打开端口{!r}:{!r}”。format(self.portstr,ctypes.WinError())) serial.serialutil.SerialException:无法打开端口'COM4':PermissionError(13,'访问被拒绝。',无,5)

解决方法

我了解它是如何工作的。使用另一台计算机上的程序初始化端口时,Cam会自动运行main.py。因此,我要做的就是将我的IDE微型Python代码重命名为“ main.py”,并将其放在cam的根目录中。

唯一的错误是,如果您启动IDE,则需要重新物理连接凸轮,以便凸轮在主计算机上启动程序之前引导main.py。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...