絮凝剂上位机--Qt-openc工程恢复记录

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 目前最新状态,数据库配置未知,软件已能启动,

image

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 下一步确认上传的内容

这部分要读代码了