问题描述
我只是把手放在使用微型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。