# webengine-test **Repository Path**: rabby_hong/webengine-test ## Basic Information - **Project Name**: webengine-test - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-01-29 - **Last Updated**: 2024-03-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # QT-Project #### 使用说明 1. 将qt前端代码目录,库文件目录QtLibs.tar以及主程序WinningTech放到root目录下 解压命令 tar -xvf QtLibs.tar 进入QtLibs目录通过ls -la命令查看确认软链接正常   打包命令$ tar -cvf QTLIBS.tar QtLibs 2. 将lib库路径添加到系统路径中: vi /etc/profile export LD_LIBRARY_PATH=/root/QtLibs:$QTDIR/lib:$QTDIR/plugins/imageformats:$LD_LIBRARY_PATH source /etc/profile 3. 运行程序./WinningTech -qws 4. 后续升级只需要更新qt目录下的前端代码以及主程序WinningTech即可 5. 程序运行使用的db文件也在这个目录下,configuration_db以及service_data_db 6. 板子上运行的lib库截图以及相关文件截图见libs.png 和 files.png 7. 数据库默认用户名密码:{"users":[["admin", "admin", 1],["user","user",0] ,["factory","121114",1]]} ###开发经验 1. Linux笔记: 配置网络: "ifconfig eth0 192.168.1.89 netmask 255.255.255.0" top 获取内存以及所有进程使用情况 df -h 获取磁盘使用情况 free -m 获取内存使用情况 grep MemTotal /proc/meminfo 获取/proc/meminfo内存文件中MemTotal值,/proc/meminfo文件存放内存使用信息 /proc/cpuinfo 存放系统cpu参数 /proc/stat 存放CPU使用情况 locate 定位 ### 核心板编译命令 进入 menuconfig 配置菜单 make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig 编译内核 make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- all 独立编译设备树 make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- dtbs ###qt笔记 1. qt添加外部库以及头文件 LIBS += -L$$PWD/libs/ -lsqlite3 -lpthread INCLUDEPATH += $$PWD/include/ include/cJSON database device/common general \ 2. 后期的Qt版本,大致从5.15开始,就不在提供离线版本下载,需要自行通过在线安装器安装,由于默认服务器在国外,下载的时候很慢,为了解决这个烦人的问题,有个极其简单的方法可以将速度提升几万倍,甚至冲坏你的硬盘。先下载 Fiddler5(尽量选择中文版本不然小白看不懂),双击打开程序后(可能win10自带的杀毒软件会报毒删除,临时停用杀毒软件或者恢复可信任文件即可),在底部的输入栏中输入 urlreplace download.qt.io mirrors.ustc.edu.cn/qtproject/ 回车应用,然后再去打开安装器在线安装,世界突然变得非常美好。 3. 通常我们使用QWebEngineView加载本地html文件时,是通过 void load(const QUrl &url) void setUrl(const QUrl &url) 两个函数,传入html的相对或绝对路径,进行加载。 而在linux(uos x86)下运行时,却发现加载失败,变成空白页面。查了半天原来linux下需要在路径前面加上"file://"。比如,对于路径"/home/code/test/test.html",则需要改成"file:///home/code/test/test.html"。 除此之外,对于windows下可以直接使用QString传入到load和setUrl两个函数中,会自动隐式转换为QUrl类,而在linux下这样的代码不会报错,但是加载也是失败的。 4. 虚拟机无网络时配置方法 sudo service network-manager stop sudo rm /var/lib/NetworkManager/NetworkManager.state sudo service network-manager start 5. IEE754 4位16进制数转float: 方法一: float MainWindow::ieee754_hex_str_to_float(QString str){ const QByteArray ba = QByteArray::fromHex(str.toLatin1()); if (ba.size() != 4){ return 0; } quint32 word = quint32((quint8(ba.at(0)) << 24) | (quint8(ba.at(1)) << 16) | (quint8(ba.at(2)) << 8) | (quint8(ba.at(3)) << 0)); const float *f = reinterpret_cast(&word); return *f; } 使用: QString strRecv = ""; for(int i = 0;i<4;i++) {   QString s;   s.sprintf("%02x",(unsigned char)data[i+3]);   strRecv.append(s); } ieee754_hex_str_to_float(strRecv); 方法二:用联合体 union HextoFloat { unsigned char input[4]; float foutput; }; HextoFloat uData; uData.input[0] = (unsigned char)(*(data+6)); uData.input[1] = (unsigned char)(*(data+5)); uData.input[2] = (unsigned char)(*(data+4)); uData.input[3] = (unsigned char)(*(data+3)); float value = uData.foutput; 浮点数转16进制字符串: QString MainWindow::ieee754_float_to_hex_str(QString str){ const float value = str.toFloat(); const quint32 *i = reinterpret_cast(&value); QByteArray ba; ba.append(char(*i >> 24)); ba.append(char(*i >> 16)); ba.append(char(*i >> 8)); ba.append(char(*i >> 0)); return ba.toHex().toUpper(); } 6. linux qt打包方法: ①脚本法:并不能放到另一台干净的Linux系统下运行 step1:新建文件夹,将可执行程序,数据库,配置,前端文件等程序运行需要的文件拷贝过来; step2:编写pack.sh脚本,该脚本详见build-desktop/package15/pack.sh目录,将可执行程序依赖的库文件复制到该目录; step3:编写程序运行脚本,该脚本详见build-desktop/package15/WinningTech.sh目录,程序运行。如果提示该错误:ERROR:nss_util.cc(201)] Error initializing NSS without a persistent database,则执行该命令:cp -rf /usr/lib/x86_64-linux-gnu/nss   eg:cp -rf /usr/lib/x86_64-linux-gnu/nss /home/wangc/winning_tech_release/build-desktop/package15将 /usr/lib/x86_64-linux-gnu/nss 整个文件放入 项目的动态链接库中。 ②使用Linuxdeployqt进行打包:打包的程序可以放到任何Linux环境下直接运行 step1:下载linuxdeployqt:https://github.com/probonopd/linuxdeployqt/releases,下载linuxdeployqt-x86_64.AppImage step1:将下载下来的linuxdeployqt-x86_64.AppImage重命名为linuxdeployqt : sudo mv linuxdeployqt-continuous-x86_64.AppImage linuxdeployqt step3:赋予linuxdeployqt权限,chmod 777 linuxdeployqt step4.将修改好的linuxdeployqt放到/usr/local/bin目录下,这样我们在任何地方都能够运行 linuxdeployqt。 sudo mv linuxdeployqt /usr/local/bin step5.测试linuxdeployqt是否安装成功,出现以下内容表示安装成功。 linuxdeployqt --version step6.修改文件bashrc文件 vim ~/.bashrc, 添加 #add qt env export PATH=/opt/qtcreator-4.14.0/bin/:$PATH export LIB_PATH=/opt/qtcreator-4.14.0/bin/lib:$LIB_PATH export PLUGIN_PATH=/opt/qtcreator-4.14.0/bin/plugins:$PLUGIN_PATH export QML2_PATH=/opt/qtcreator-4.14.0/bin/qml:$QML2_PATH 其中,/opt/qtcreator-4.14.0为自己qt安装路径即可。 不知道自己QT安装路径的可以通过下面方法获取:whereis qt step7.使用source命令让bashrc文件立即生效 source ~/.bashrc step8.测试环境变量,查看是否正确,看到qmake版本表示正确。 qmake -v step9.新建test文件夹,拷贝依赖文件,如有报错直接忽略等待命令执行完毕即可。 linuxdeployqt WinningTech -appimage step10. 切换到新建的test文件夹下,执行可执行文件,查看是否打包成功。 ./WinningTech 7. linux -arm交叉编译: 1、使用命令:cat /proc/version 查看 Linux version 5.0.0-13-generic (buildd@lcy01-amd64-020) (gcc version 8.3.0 (Ubuntu 8.3.0-6ubuntu1)) #14-Ubuntu SMP Mon Apr 15 14:59:14 UTC 2019 linux版本号:Linux version 5.4.0-99-generic (buildd@lgw01-amd64-007) GCC版本号:gcc version 9.3.0 Ubuntu版本号:ubuntu1~20.04 2、uname -a 查看linux 的内核版本和系统是多少位的:X86_64代表系统是64位的 3、lsb_release -a 查看ubuntu版本号 4、arm-linux-gnueabihf-g++ -v查看gcc版本号 5、查看交叉编译器路径:sudo find / -name arm-linux-gnueabihf-gcc 6、添加环境变量:sudo gedit /etc/profile 更新环境变量:source /etc/profile 7、qt5.15.2 arm交叉编译问题:ERROR: Feature 'tslib' was enabled, but the pre-condition 'libs.tslib' failed. 使用新版tslib才可以,如:tslib-1.20 8、qtbase-everywhere-src-5.15.2/mkspecs/linux-arm-gnueabi-g++/qmake.conf指定交叉编译器绝对路径 9、如果报错各种找不到头文件,可能是编译器问题,换个编译器试试。 10、qmake: could not exec '/usr/lib/x86_64-linux-gnu/qt4/bin/qmake': No such file or directory 11、gedit linux下纯文本编辑器,gedit 文件名  打开文件 12、虚拟机安装docker 13、编译qmake: qmake ../qtwebengine.pro -- -webengine-proprietary-codecs qmake qtwebengine.pro -- -webengine-proprietary-codecs qmake:提示could not exec '/usr/lib/x86_64-linux-gnu/qt4/bin/qmake': No such file or directory 解决方法:打开default.conf文件sudo vi /usr/lib/x86_64-linux-gnu/qt-default/qtchooser/default.conf  将路径改为QT的安装路径:/opt/qt5.15.2/bin 14、sudo apt install cutecom 安装qt串口工具 sudo cutecom打开串口工具 15. WANNING: QtWebEngine requires c++14 support.安装相关依赖库: https://blog.csdn.net/Adimecoin/article/details/127433507?spm=1001.2014.3001.5501 16. linux安装sqlite软件: linux安装sqlite3: sudo apt install sqlite3 linux安装Sqlite3数据库开发支持库:sudo apt-get install libsqlite3-dev 安装Sqlite3图形化管理界面DB Browser for SQLite: sudo apt-get install sqlitebrowser 打开GUI界面 :sudo sqlitebrowser & 检查是否安装成功 sqlite3 --version linux工控机串口运行需要赋值权限:sudo chmod 777 /dev/ttyS1 17. ubuntu虚拟机如何扩展磁盘空间:https://blog.csdn.net/qq_58614959/article/details/128298252 18. qt源码:https://download.qt.io/archive/qt/5.15/5.15.2/single/ qt 官方在线安装包:https://download.qt.io/archive/online_installers/4.1/ qt清华镜像,在线安装:https://mirrors.tuna.tsinghua.edu.cn/qt/official_releases/online_installers/ linux qtcreator安装教程: https://blog.csdn.net/ZHONGCAI0901/article/details/118552770 qt不能安装自己想要的版本解决方法:在选择组建的时候,勾选Archive,然后点击筛选,就出来之前的版本了。 From 6.5.0, xcb-cursor0 or libxcb-cursor0 is needed to load the Qt xcb platform plugin.错误解决办法:sudo apt-get install libgl1-mesa-dev ###一些工具 1、nomachine远程桌面 2、MobaXterm远程终端神器 ### c笔记 1. if(strstr(cNo, "mxc1") != NULL)判断字符串是否包含 2.