02-05-14-絮凝剂上位机–Qt-openc工程恢复记录 更新中
[toc]
1 相关bash命令 1 2 //查找文件 xxxxxxxx whereis xxxxxxxx
2 opencv 库安装 资料来源:link
Installing OpenCV from the Ubuntu Repository OpenCV is available for installation from the default Ubuntu 20.04 repositories. To install it run:
1 2 sudo apt update sudo apt install libopencv-dev python3-opencv
注意这里我只使用了前部分 ‘sudo apt install libopencv-dev’ 后部分和 python 有关的部分没有安装
3 补齐工程缺失的 lib 工程文件配置如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 #------------------------------------------------- # # Project created by QtCreator 2018-08-03T22:09:54 # #------------------------------------------------- QT += core gui QT += sql QT += charts QT += network CONFIG+=c++11 greaterThan(QT_MAJOR_VERSION, 4): QT += widgets TARGET = xnzk TEMPLATE = app INCLUDEPATH += /usr/local/include \ /usr/local/include/opencv \ /usr/local/include/opencv2 \ /opt/MVS/include LIBS += /usr/local/lib/libopencv_highgui.so \ /usr/local/lib/libopencv_core.so \ /usr/local/lib/libopencv_imgproc.so \ /usr/local/lib/libopencv_imgcodecs.so \ /opt/MVS/bin/libMvCameraControl.so \ /usr/local/lib/libopencv_video.so \ SOURCES += main.cpp\ // 省略工程内部文件 HEADERS += mainwindow.h \ // 省略工程内部文件 FORMS += mainwindow.ui \ // 省略工程内部文件 DISTFILES += \ // 省略工程内部文件 RESOURCES += \ xnzk.qrc
利用上面的 whereis
命令来查找对应库文件个补足opencv相关的库,修正路径如下
1 2 3 4 5 LIBS += /usr/lib/x86_64-linux-gnu/libopencv_highgui.so \ /usr/lib/x86_64-linux-gnu/libopencv_core.so \ /usr/lib/x86_64-linux-gnu/libopencv_imgproc.so \ /usr/lib/x86_64-linux-gnu/libopencv_imgcodecs.so \ /usr/lib/x86_64-linux-gnu/libopencv_video.so \
这里剩下一个 libMvCameraControl.so
经过搜索发现,这是 机器视觉相机客户端MVS V3.1.0
中的一个lib 链接在 link 下载最新版本测试
上面的链接经测试不对,里面没有libMvCameraControl
这个lib,有点怀疑是自己封装的,或者是版本不对,在github中找到了一个有这个文件的工程,直接调进去试一试。
github仓库
上面的仓库版本有问题,在英文网站上找到一个新的 link
下载后,目前在 电脑端安装的是MVS_STD_V2.0.0_191126(Linux X86).zip -- MVS-2.0.0_i386_20191126.deb
编译没有在报 lb错误了
遇到一个底层库问题,明天来看
ubuntu 20的c基础库版本相比源代码高了,尝试管理 c基础库没有成功
无奈退回 ubuntu 18
重复以上步骤,在ubuntu 18
还是需要修改库路径
清空编译临时文件,重新执行 qmake,然后 build
4 下面报出问题 opengl 库没有,用下面的命令补充opengl 1 2 3 4 ubuntu中安装opengl环境: sudo apt-get install libgl1-mesa-dev sudo apt-get install freeglut3-dev sudo apt-get install libglew-dev // 安装 glew ,链接时 GLEW ,注意大小写
5 接下来遇到的问题是,海康的动态库无法链接….. 这个原因怀疑是库的版本问题 折腾许久,最终能用的是,MVS_STD_V2.0.0_191126(Linux X86).zip – MVS-2.0.0_x86_64_20191126.deb
6 其他的问题 1、 Ubuntu下QT使用openc编译没问题,但是运行时提示找不到库文件
2、软件运行目录下,必须要有 storage 这个文件夹,不然会有一个递归内存溢出
3、在引用动态库时,须添加下面三个连个相关库,解决库引用的warring
1 2 3 4 /opt/MVS/lib/64/libMvCameraControl.so \ /opt/MVS/lib/64/libGCBase_gcc421_v3_0.so \ /opt/MVS/lib/64/libGenApi_gcc421_v3_0.so \ /opt/MVS/lib/64/libXmlParser_gcc421_v3_0.so \
7 目前最新状态,数据库配置未知,软件已能启动,
8 服务器vsftpd配置 阿里云服务器地址 47.96.105.96 sftp配置用的教程是 link
提示: 这里不要修改用户名,不然很麻烦
用windows
电脑测试是能同步上的,但目前是sftp协议
8 配置同步软件 lftp 安装
1 sudo apt-get install lftp
密码记录 救援密码 Cddc21
在ftp配置过程中有些奇怪的问题,目前服务器可用脚本也顺利执行
脚本(目前是增量式备份)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 #!/bin/bash LOCAL=push REMOTE=filestore cd ${LOCAL} sudo -S chmod -R a+rX * <<EOF 1234 EOF cd .. lftp -u use,key ftp://ip<<EOF set ssl:verify-certificate no set sftp:auto-confirm yes set ftp:use-feat false set ssl-allow false mirror -R ${LOCAL} ${REMOTE} EOF echo "lftp已完成"
9 定时执行实现 考察了一下,发现用cron
实现最为简单
参考教程 Ubuntu cron 定时执行任务
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 /etc/crontab文件语法如下: Minute Hour Day Month Dayofweek command 分钟 小时 天 月 天每星期 命令 每个字段代表的含义及取值范围如下: Minute :分钟(0-59),表示每个小时的第几分钟执行该任务 Hour : 小时(1-23),表示每天的第几个小时执行该任务 Day : 日期(1-31),表示每月的第几天执行该任务 Month : 月份(1-12),表示每年的第几个月执行该任务 DayOfWeek : 星期(0-6,0代表星期天),表示每周的第几天执行该任务 Command : 指定要执行的命令(如果要执行的命令太多,可以把这些命令写到一个脚本里面,然后在这里直接调用这个脚本就可以了,调用的时候记得写出命令的完整路径) 在这些字段里,除了“Command”是每次都必须指定的字段以外,其它字段皆为可选字段,可视需要决定。对于不指定的字段,要用“*”来填补其位置。同时,cron支持类似正则表达式的书写,支持如下几个特殊符号定义: “*” ,代表所有的取值范围内的数字; “/” , 代表”每”(“*/5”,表示每5个单位); “-” , 代表从某个数字到某个数字(“1-4”,表示1-4个单位); “,” ,分开几个离散的数字; 举例如下: 5 * * * * ls /*指定每小时的第5分钟执行一次ls命令*/ 30 5 * * * ls /*指定每天的 5:30 执行ls命令*/ 30 7 8 * * ls /*指定每月8号的7:30分执行ls命令*/ 50 7 * * * root run-parts /etc/cron.daily /*每天7:50以root 身份执行/etc/cron.daily目录中的所有可执行文件*/
可用的示例
1 2 */3 * * * * /var/backups/test.sh //每隔3分钟执行一次/var/backups/test.sh
那么我们的脚本现在为 每10分钟执行一次脚本,并把运行数据记录到同目录的log中
1 2 3 4 5 6 7 // 1 crontab -e // 2add */10 * * * * /home/zcome/test/ftprun.sh >& /home/zcome/test/runlog.log //重启cron 服务 service cron restart
补充:这里有个输出重定向的技巧 bash常见特殊符号及含义
10 下一步确认上传的内容 这部分要读代码了