openmv 接的Linux 主机,因为应用需要,不能使用IDE, 需要脱机使用。我需要让linux 主机能主动控制存储的挂载,默认不会自动挂载到主机上,main.py程序能自动运行。运行完后,linux 主机用命令将存储挂载到主机上,更换main.py脚本,然后使用继电器短接reset和GNDpin ,reset 后会自动跑更新后的脚本。跑完再次挂载到主机上,在更换脚本,如此反复。
现在遇到的问题是,虽然Linux 关闭了自动挂载,但是reset后还是会出现问题,程序跑不到1秒或2,3秒救自动停止了。reset后,又是跑1,2秒就停止了。
dtvb 发布的帖子
-
linux主机对存储的挂载控制,脚本会自动停止?
-
RE: linux主机用最低的成本完成对openMV板的reset(不能用IDE).
linux电脑主机运行自动化测试脚本(robot 框架),使用openmv测试产品的LED 灯状态只是其中一小部分测试内容,linux主机通过自动测试脚本(标准python)切换产品的状态灯的状态,然后通过替换不同的main.py脚本(已经在IDE里面调试确认过的)后reset来识别LED的不同状态,通过uart抓取测试结果做判断。如果IDE 能够被测试脚本通过终端命令行直接调用,就不会找这么麻烦的方法了。可能我对openMV的认知不够,也请你帮忙找到合适的方案。非常感谢。之前也弄过rpc,后来发现只适用于两个openmv之间使用。
-
linux主机用最低的成本完成对openMV板的reset(不能用IDE).
我的openMV板和UART板都是用USB线连接到linux电脑上使用。使用逻辑中,需要反复替换main.py的内容,然后reset openmv,
已知可以OPENMV IDE 或reset pin 接地可以reset.
我的需求是不能在linux中使用openmv IDE.那么有什么办法可以最低的成本通过linux主机完成对reset pin接地。或是是否其他简易方法? -
RE: how to show the rpc return data in python3 output print.
我重新插拔了模块,还是和以前一样。
“我建议你先用uart作rpc,电脑端加一个ttl转usb模块。否则代码报错了你都不知道。”你的意思是我需要加一个串口调试扩展板 uart 转usb 的板子来调试程序是么?还有我现在的IDE 环境直接调用popular features as the remote device 示例脚本,会报错"no module named serial",我看是import rpc 时需要import serial .但是IDE 没有找到serial。
-
RE: how to show the rpc return data in python3 output print.
脱机运行,不就是把上面openmv 端的脚本放在mian.py 里面,就会自动运行么
-
RE: how to show the rpc return data in python3 output print.
@kidswong999 已经按照你的脚本修改了main.py 的内容。但是server 端python3 执行如下脚本,还是没有任何输出. 是哪里出错了么
import json, struct, serial, rpc
interface = rpc.rpc_usb_vcp_master("/dev/ttyACM0")
def receive_and_print_fps():
result = interface.call("get_fps")
if result is not None and len(result):
fps = struct.unpack("<f", result)[0]
print("FPS received from OpenMV device:", fps)
while True:
receive_and_print_fps() -
RE: how to show the rpc return data in python3 output print.
不好意思, 我linux server 中没有安装中文输入法,为了贴脚本方便,用英语写的帖子
我想通过helloworld 脚本来学习rpc 的用法,实验是否能满足我的需求. 通过openmv 端运行helloworld 脚本,产生一个fps 的数据.然后通过rpc 模块让linux server 端的python3 打印出fps数据.
main.py 如下:
so main.py as below:import sensor, time, rpc
interface = rpc.rpc_usb_vcp_slave()
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.skip_frames(time=2000)
clock = time.clock()
def get_fps():
clock.tick()
return struct.pack("<f", clock.fps())
interface.register_method("get_fps", get_fps)
while True:
interface.loop()linux 服务器端运行的程序如下;
import json, struct, serial, rpc
interface = rpc.rpc_usb_vcp_master("/dev/ttyACM0")
def receive_and_print_fps():
result = interface.call("get_fps")
if result is not None and len(result):
fps = struct.unpack("<f", result)[0]
print("FPS received from OpenMV device:", fps)
while True:
receive_and_print_fps()linux 端运行上面的程序后,并不能得到任何输出, 通过minicom工具读取 /dev/ttyACM0 的打印信息如下:
Welcome to minicom 2.8
OPTIONS: I18n
Port /dev/ttyACM0, 17:05:52
Press CTRL-A Z for help on special keys
)CfC)CfC)CfC)CfC)CfC)CfC)CfC)CfC)CfC)CfC)CfC)CfC)CfC)CfC)CfC)CfC)CfC)CfC)CfC)CfC)CfC)CfC)CfC)CfC)
如果Linux 服务器端的程序在运行,这个 CfC) 就会一直重复下去.如果中断这个程序,这个CfC) 就会停止.
我的问题是,有啥办法,让fps数据在linux 服务器端 python3 -u controller.py 执行后,直接打印出来.谢谢 -
how to show the rpc return data in python3 output print.
I want to use Linux server side print the openmv device fps information directly by rpc module. in order to learn the rpc module usage method , then use it for my script . so I just modify the hello.py for learn the rpc.
so main.py as below:import sensor, time, rpc
interface = rpc.rpc_usb_vcp_slave()
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.skip_frames(time=2000)
clock = time.clock()
def get_fps():
clock.tick()
return struct.pack("<f", clock.fps())Register the method to fetch FPS
interface.register_method("get_fps", get_fps)
while True:
interface.loop()and linux server execute the controller.py as below:
import json, struct, serial, rpc
interface = rpc.rpc_usb_vcp_master("/dev/ttyACM0")
def receive_and_print_fps():
result = interface.call("get_fps")
if result is not None and len(result):
fps = struct.unpack("<f", result)[0]
print("FPS received from OpenMV device:", fps)
while True:
receive_and_print_fps()after Linux server side run the python3 -u controller.py , there is no output print. I use the minicom -D /dev/ttyACM0 , I can see below output , CfC) repeat.
Welcome to minicom 2.8
OPTIONS: I18n
Port /dev/ttyACM0, 17:05:52
Press CTRL-A Z for help on special keys
)CfC)CfC)CfC)CfC)CfC)CfC)CfC)CfC)CfC)CfC)CfC)CfC)CfC)CfC)CfC)CfC)CfC)CfC)CfC)CfC)CfC)CfC)CfC)CfC)I want to know how to modify the script in order to print the fps information after execute the python3 -u controller.py in Linux server terminal. and why CfC) showed, not the true fps data ? thank you very much !!!
-
RE: 如何设置Linux电脑端的USB VCP 端口
which port should I use ? /dev/ttyS0 ?
interface = rpc.rpc_usb_vcp_master() should modify to master(/dev/ttyS0) ?Available Ports:
/dev/ttyS4 : n/a [n/a]
/dev/ttyS0 : ttyS0 [PNP0501]
/dev/ttyACM0 : OpenMV Virtual Comm Port in FS Mode [USB VID:PID=1209:ABD1 SER=377B33613033 LOCATION=3-3:1.0]Please enter a port name:
-
如何设置Linux电脑端的USB VCP 端口
已经知道在openMV 端设置使用interface = rpc.rpc_usb_vcp_slave()而不是interface = rpc.rpc_uart_slave(baudrate=115200)。
但是不知道如何设置电脑端的端口,我用的时Ubuntu 22.04,连接openmv 后,会新增ttyACM0 端口,不知道这个interface = rpc.rpc_usb_vcp_master() 改如何设置。我尝试了几个,都被报错。 -
RE: 在Ubuntu 22.04中使用python3调用import rpc的范例脚本 ,报出没有pyb module.
刚刚找到正确的rpc.py 文件了,没有引用omv 和pyb ,现在没这个问题了
-
在Ubuntu 22.04中使用python3调用import rpc的范例脚本 ,报出没有pyb module.
在Ubuntu 22.04中使用python3调用import rpc的范例脚本,参照的如下链接,和范例脚本,在执行时,一开始报出没有omv module , 在安装了 openmv-source 后,找到omv.py ,这个rpc.py又报出没有找到pyb module.
电脑上使用python脚本远程调用OpenMV的程序,步骤:https://github.com/openmv/openmv/blob/master/tools/rpc/README.md
跑的时如下这个脚本的配对脚本https://github.com/openmv/openmv/blob/master/scripts/examples/08-RPC-Library/34-Remote-Control/popular_features_as_the_remote_device.py -
RE: 如何在Linux terminal中运行已经在OpenMV IDE中调试好的脚本?
I installed the omv-source, had found the omv module ,but now error report no pyb module found , but I can't find and install the pyb module, how to fix this issue ?
python3 controller.py
Traceback (most recent call last):
File "/home/paulzhang/Desktop/omv-source/openmediavault-master/deb/openmediavault/srv/salt/_grains/controller.py", line 1, in
import json, struct, serial, rpc
File "/home/paulzhang/Desktop/omv-source/openmediavault-master/deb/openmediavault/srv/salt/_grains/rpc.py", line 10, in
import pyb
ModuleNotFoundError: No module named 'pyb' -
RE: 如何在Linux terminal中运行已经在OpenMV IDE中调试好的脚本?
@kidswong999 python3 -u controller.py
Traceback (most recent call last):
File "/home/paulzhang/Desktop/openmv-master/scripts/libraries/controller.py", line 1, in
import json, struct, serial, rpc
File "/home/paulzhang/Desktop/openmv-master/scripts/libraries/rpc.py", line 9, in
import omv
ModuleNotFoundError: No module named 'omv'find / -name omv
/home/paulzhang/Desktop/openmv-master/src/omv
find: ‘/run/user/1000/doc’: Permission denied
find: ‘/run/user/1000/gvfs’: Permission denied
how to fix this issue. -
RE: 如何在Linux terminal中运行已经在OpenMV IDE中调试好的脚本?
python3 -u controller.py
Traceback (most recent call last):
File "/home/paulzhang/remotescript/controller.py", line 4, in
interface = rpc.rpc_usb_vcp_master("/dev/ttyACM0")
NameError: name 'rpc' is not definedI had installed the pyserial module, it seems rpc module can not be run in linux python3 environment. can you give a simple sample script such as helloworld let the ubuntu server running the python3 script to remote control the openmv print the fps data ,then print this data in python3 script output. thanks.
-
如何在Linux terminal中运行已经在OpenMV IDE中调试好的脚本?
我已经在Openmv IDE 中调试出我所需要的脚本,用来识别LED 灯的颜色和闪烁频率并打印出这些信息.现在我想在Linux环境中,用别的自动化程序来调用这个openmv的脚本所能实现的功能,抓取脚本的打印信息,以实现其他自动化测试和这个摄像头自动识别的功能整合.
现在遇到的问题是,Linux (ubuntu 22.04)环境中使用python3命令来执行这个脚本会出现pyb模组不能安装, 调用最基本的helloworld 脚本也会报错. 网上查到使用 openmv ****.py 命令执行,安装不了openmv 这个命令。AI 提示从GitHub 上下载安装,但是链接没有任何响应。
请帮忙告知正确的调用方法。以拜托这个openmv IDE 这个图形界面,执行脚本让脚本直接输出我要的打印。