补充
使用ui布局文件,设置背景透明度
setWindowFlags(windowFlags() | Qt::FramelessWindowHint);
this->setAttribute(Qt::WA_TranslucentBackground, true);
使用ui布局文件,设置背景透明度
setWindowFlags(windowFlags() | Qt::FramelessWindowHint);
this->setAttribute(Qt::WA_TranslucentBackground, true);
随便绘制些东西,版本选的是LVGLv8.3.5,版本GUI-Guider-1.6.1-GA
导出代码,选择 工程->工程导出 ,重要的是custom
和generated
文件夹
下载对应的lvgl,https://github.com/lvgl/lvgl ,切换对应分支
下载对应的lvgl驱动,https://github.com/lvgl/lv_drivers ,切换对应分支
下载的lvgl-8.3.5重命名为lvgl
下载的lv_drivers-release-v8.3重命名为lv_drivers
创建ui文件夹,将custom
和generated
文件夹放进去
还有 从lvgl中复制lv_conf_template.h 到 当前目录,并重命名为 lv_conf.h 、 从lv_drivers 中复制 lv_drv_conf_template.h 到 当前目录,并重命名为 lv_drv_conf.h
剩下的main.c
和Makefile
从lv_port_linux_frame_buffer 来的,
lv_port_linux_frame_buffer 下载 https://github.com/lvgl/lv_port_linux_frame_buffer.git
从lv_port_linux_frame_buffer 中复制 main.c 和 Makefile 到 当前目录 下
修改lv_conf.h 文件
使能lv_conf.h 头文件,将#if 0修改为#if 1
修改LV_COLOR_DEPTH为32
修改LV_MEM_SIZE 为(1024U * 1024U)
修改LV_USE_LOG、LV_LOG_PRINTF 为1
修改LV_FONT_MONTSERRAT_12、14、16、24 为1
修改lv_drv_conf.h 文件
使能修改lv_drv_conf.h 头文件,将#if 0修改为#if 1
使能LCD显示:使能USE_FBDEV,路径设置为/dev/fb0
设置触摸,设置USE_EVDEV为1,根据实际情况设置EVDEV_NAME
修改main.c文件
头文件添加 #include "ui/generated/gui_guider.h"
头文件添加 #include "ui/generated/events_init.h"
屏蔽cursor for the mouse
修改显示屏的宽高,否则花屏,显示不全
配置启用文件
修改makefile
修改CC = arm-openwrt-linux-gcc ,改为你自己的编译器
修改BIN = lvgl_demo ,名字随便起
增加.mk依赖,include $(LVGL_DIR)/lv_drivers/lv_drivers.mk等,看图
屏蔽CSRCS +=$(LVGL_DIR)/mouse_cursor_icon.c
在当前目录 直接执行make
运行正常就会生成可执行文件
将lvgl_demo 可执行文件放入开发板
通过U盘方式或ADB
运行./lvgl_demo &
提示找不到lvgl.h
,
找到代码位置,改为../../lvgl.h
同lvgl/lvgl.h
这里只是其中一个示例,ui文件夹下的其他引用了lvlg.h
文件的都会报这个错,通过上面的方法处理
在Mainfile
中写入
CFLAGS += -I$(LVGL_DIR_NAME)/
CFLAGS += -I$(LVGL_DIR)/ui/generated
CFLAGS += -I$(LVGL_DIR)/ui/custom
使用的T113-S3芯片,我看手册写的烧录安全固件后无法再烧录非安全固件?
上图,获取到ip的,也能联网。但是通过官方wifimanager的示例wifi_get_connection_info_test显示disconnected的状态
上面是源码
请教大佬,如何获取wifi正确有效的连接状态?
【已解决:可以显示渲染到屏幕中】
自己挖的坑还得自己解决
在main.cpp
中,设置以下内容
#include "mainwindow.h"
#include <QApplication>
#include <QDebug>
#include <tplayer.h>
#include "User/tpmanager.h"
#include <QLabel>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
//可以注释掉这个MainWindow w窗体,使它不可见。或者给他透明度,我这里给的是透明度
w.setWindowOpacity(0.5);//这句不起作用,冗余代码
w.show();
//绘制内容在tplayer视频上
QLabel* label = new QLabel();
label->setText("hello");
label->setStyleSheet("font-size:20px;color:#ff0000");
label->move(400,460);
label->show();
qInfo() << "hello" ;
TPlayer* tplayer = TPlayerCreate(CEDARX_PLAYER);
TPlayerSetNotifyCallback(tplayer,myCallback,NULL);
TPlayerSetDisplayRect(tplayer,0,0,800,640);//设置位置大小
if(TPlayerSetDataSource(tplayer,"http://192.168.0.123:9999/explorer?path=upload%2F2025-03%2F4.mp4",NULL) != 0)
{
printf("TPlayerSetDataSource() return fail.\n");
}
else
{
printf("TPlayerSetDataSource() end\n");
}
if(TPlayerPrepare(tplayer)!= 0)
{
printf("TPlayerPrepare return fail.\n");
}else{
printf("TPlayerPrepare end\n");
}
if(TPlayerStart(tplayer) != 0)
{
printf("TPlayerStart() return fail.\n");
}else{
printf("started.\n");
}
return a.exec();
}
效果图片:
#!/bin/sh
./configure \
-prefix /home/foot/qt/arm-T113-openssl \
-release \
-opensource \
-confirm-license \
-shared \
-xplatform linux-arm-gnueabi-g++ \
-optimized-qmake \
-pch \
-qt-sqlite \
-qt-libjpeg \
-qt-libpng \
-qt-zlib \
-no-opengl \
-skip qt3d \
-skip qtcanvas3d \
-skip qtpurchasing \
-skip qtlocation \
-skip qttools \
-no-sse2 \
-no-openssl \
-openssl-linked OPENSSL_INCDIR='/home/foot/Tina-SDK/out/t113-bingpi_m2/compile_dir/target/openssl-1.1.0i/ipkg-install/usr/include/openssl' OPENSSL_LIBDIR='/home/foot/Tina-SDK/out/t113-bingpi_m2/compile_dir/target/openssl-1.1.0i/ipkg-install/usr/lib' OPENSSL_LIBS='-lssl -lcrypto' \
-no-cups \
-no-glib \
-dbus-runtime \
-no-xcb \
-no-iconv \
-no-separate-debug-info \
-no-fontconfig \
-recheck-all \
-make examples \
-I/home/foot/Tina-SDK/out/t113-bingpi_m2/staging_dir/target/usr/include/ \
-I/home/foot/Tina-SDK/out/t113-bingpi_m2/staging_dir/target/usr/include/allwinner/ \
-I/home/foot/Tina-SDK/out/t113-bingpi_m2/staging_dir/target/usr/include/allwinner/include/ \
-I/home/foot/Tina-SDK/out/t113-bingpi_m2/compile_dir/target/openssl-1.1.0i/ipkg-install/usr/include/openssl \
-L/home/foot/Tina-SDK/out/t113-bingpi_m2/compile_dir/target/openssl-1.1.0i/ipkg-install/usr/lib \
-L/home/foot/Tina-SDK/out/t113-bingpi_m2/staging_dir/target/usr/lib/
#make -j2
#make install
Qt版本:5.12.9
openssl版本:openssl-1.1.0i
请教一下大佬们,怎么解决
XR829芯片有蓝牙传输大小限制吗? client 写请求回调中,数据超过20个字节就无法接收了。
这是引入库部分,注释掉的是我写的用不上的,其中crypto需要在sdk中全局查找拷贝来的
foot@foot-VirtualBox:~/qtFile/videoDemo/videoDemo$ tree
.
├── main.cpp
├── mainwindow.cpp
├── mainwindow.h
├── mainwindow.ui
├── tpmanager
│ ├── crypto1.1
│ │ ├── libcrypto.a
│ │ ├── libcrypto.so -> libcrypto.so.1.1
│ │ ├── libcrypto.so.1.1
│ │ ├── libssl.a
│ │ ├── libssl.so -> libssl.so.1.1
│ │ └── libssl.so.1.1
│ ├── include
│ │ ├── cdx_config.h
│ │ ├── CdxKeyedVector.h
│ │ ├── libcedarc
│ │ │ └── include
│ │ │ ├── cdc_config.h
│ │ │ ├── memoryAdapter.h
│ │ │ ├── sc_interface.h
│ │ │ ├── sdecoder.h
│ │ │ ├── typedef.h
│ │ │ ├── vbasetype.h
│ │ │ ├── vdecoder.h
│ │ │ ├── veAdapter.h
│ │ │ ├── veInterface.h
│ │ │ └── vencoder.h
│ │ ├── libcedarx
│ │ │ ├── base
│ │ │ │ └── include
│ │ │ │ ├── AwMessageQueue.h
│ │ │ │ ├── AwPool.h
│ │ │ │ ├── CdxAtomic.h
│ │ │ │ ├── CdxBase64.h
│ │ │ │ ├── CdxBinary.h
│ │ │ │ ├── CdxBitReader.h
│ │ │ │ ├── CdxBuffer.h
│ │ │ │ ├── CdxDebug.h
│ │ │ │ ├── CdxEnumCommon.h
│ │ │ │ ├── CdxISOLang.h
│ │ │ │ ├── CdxKeyedVector.h
│ │ │ │ ├── CdxList.h
│ │ │ │ ├── CdxList.i
│ │ │ │ ├── CdxLock.h
│ │ │ │ ├── cdx_log.h
│ │ │ │ ├── CdxMemory.h
│ │ │ │ ├── CdxMessage.h
│ │ │ │ ├── CdxMeta.h
│ │ │ │ ├── CdxQueue.h
│ │ │ │ ├── CdxSocketUtil.h
│ │ │ │ ├── CdxStrUtil.h
│ │ │ │ ├── CdxSysinfo.h
│ │ │ │ ├── CdxTime.h
│ │ │ │ ├── CdxTypes.h
│ │ │ │ ├── CdxUrl.h
│ │ │ │ └── SmartDnsService.h
│ │ │ ├── external
│ │ │ │ └── include
│ │ │ │ ├── adecoder
│ │ │ │ │ └── adecoder.h
│ │ │ │ ├── aencoder
│ │ │ │ │ └── aencoder.h
│ │ │ │ └── sdecoder
│ │ │ │ └── sdecoder.h
│ │ │ ├── parser
│ │ │ │ └── include
│ │ │ │ ├── awPlayReadyLicense.h
│ │ │ │ └── CdxParser.h
│ │ │ ├── playback
│ │ │ │ └── include
│ │ │ │ ├── deinterlace.h
│ │ │ │ ├── layerControl.h
│ │ │ │ ├── player.h
│ │ │ │ ├── soundControl.h
│ │ │ │ └── subtitleControl.h
│ │ │ └── stream
│ │ │ └── include
│ │ │ ├── AwRtpStream.h
│ │ │ ├── CdxSeqBuffer.h
│ │ │ ├── CdxStreamErrno.h
│ │ │ └── CdxStream.h
│ │ ├── PostProcessCom.h
│ │ ├── tplayer.h
│ │ ├── videoOutPort.h
│ │ └── xplayer
│ │ └── include
│ │ ├── mediaInfo.h
│ │ ├── xplayer.h
│ │ └── xplayerUtil.h
│ ├── jpegdecode
│ │ └── libjpegdecode.so
│ ├── lib
│ │ ├── libadecoder.so
│ │ ├── libasound.so -> libasound.so.2.0.0
│ │ ├── libasound.so.2 -> libasound.so.2.0.0
│ │ ├── libasound.so.2.0.0
│ │ ├── libawrecorder.so
│ │ ├── libcdx_playback.so
│ │ ├── libcrypto.so -> libcrypto.so.1.0.0
│ │ ├── libcrypto.so.1.0.0
│ │ ├── libscaledown.so
│ │ ├── libsubdecoder.so
│ │ ├── libuapi.so
│ │ ├── libvenc_common.so
│ │ ├── libvenc_h264.so
│ │ ├── libvenc_h265.so
│ │ ├── libvenc_jpeg.so
│ │ ├── libVE.so
│ │ ├── libvideoengine.so
│ │ ├── libxplayer.so
│ │ ├── libz.a
│ │ ├── libz.so -> libz.so.1.2.8
│ │ ├── libz.so.1 -> libz.so.1.2.8
│ │ └── libz.so.1.2.8
│ ├── libcedarc
│ │ └── lib
│ │ ├── libaftertreatment.la
│ │ ├── libaftertreatment.so
│ │ ├── libcdc_base.la
│ │ ├── libcdc_base.so
│ │ ├── libfbm.la
│ │ ├── libfbm.so
│ │ ├── libMemAdapter.la
│ │ ├── libMemAdapter.so
│ │ ├── libOmxCore.la
│ │ ├── libOmxCore.so
│ │ ├── libOmxVdec.la
│ │ ├── libOmxVdec.so
│ │ ├── libOmxVenc.la
│ │ ├── libOmxVenc.so
│ │ ├── libsbm.la
│ │ ├── libsbm.so
│ │ ├── libvdecoder.la
│ │ ├── libvdecoder.so
│ │ ├── libvenc_base.la
│ │ ├── libvenc_base.so
│ │ ├── libvencoder.la
│ │ └── libvencoder.so
│ ├── libcedarx
│ │ └── lib
│ │ ├── libcdx_base.la
│ │ ├── libcdx_base.so
│ │ ├── libcdx_common.la
│ │ ├── libcdx_common.so
│ │ ├── libcdx_parser.la
│ │ ├── libcdx_parser.so
│ │ ├── libcdx_stream.la
│ │ └── libcdx_stream.so
│ ├── tmetadataretriever
│ │ └── libtmetadataretriever.so
│ ├── tplayer
│ │ └── libtplayer.so
│ └── trecorder
│ └── libtrecorder.so
├── User
│ ├── tpmanager.cpp
│ └── tpmanager.h
├── videoDemo.pro
└── videoDemo.pro.user
文件结构树部分就是整个demo项目的结构,我是将package->allwinner->tina_multimedia
的部分内容拷贝到项目中,其中User
文件夹是参考tplayerdemo.c
的CallbackForTPlayer
写的。
最后mainwindow.cpp
写的内容是
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
TPlayer* tplayer = TPlayerCreate(CEDARX_PLAYER);
TPlayerSetNotifyCallback(tplayer,myCallback,NULL);
if(TPlayerSetDataSource(tplayer,"http://192.168.0.123:9999/explorer?path=upload%2F2025-03%2F4.mp4",NULL) != 0)
{
printf("TPlayerSetDataSource() return fail.\n");
}
else
{
printf("TPlayerSetDataSource() end\n");
}
if(TPlayerPrepare(tplayer)!= 0)
{
printf("TPlayerPrepare return fail.\n");
}else{
printf("TPlayerPrepare end\n");
}
if(TPlayerStart(tplayer) != 0)
{
printf("TPlayerStart() return fail.\n");
}else{
printf("started.\n");
}
qInfo() << "video is create now" ;
}
//最简单的一个tplayer播放流程
总结,折腾几天,发现tplayer没有提供视频数据帧的方法,想着能通过tplayer来实现在qt中播放视频,但是源码是开源的,应该能实现在qt中播放,我不会改。如果我说的有什么错误或者不妥之处,还请大佬指正。
方法可行!我的是QT应用,要看准日志中输出的Package busybox-init-base-files is missing dependencies for the following libraries:
后提示缺少的依赖库,我第一次填写好了依赖库,第二次编译还是不过,仔细一看,又是输出了一次Package busybox-init-base-files is missing dependencies for the following libraries:
缺少依赖库。echo添加进去,编译通过!
@sergpenshin
Rename my_example to S99my_example, then run /etc/init.d/S99my_example enable, and try rebooting
重命名 my_example 为 S99my_example
/etc/init.d/S99my_example enable
然后 reboot
重启试试
终端手动执行没问题
自启动执行报错
这里开始执行我的自启动脚本
这是我的自启动脚本,这里延时10s、20s、1,m都无法启动我的应用
请教一下我是哪里写的不对?如何修改?
先将btmanager整个复制到项目中
在项目中新建out_lib和out2_lib目录
然后将这段复制到pro文件里最下边(截图的不完整,用下面的代码)
LIB_PATH = $$PWD/btmanager/out_lib
LIB_PATH2 = $$PWD/btmanager/out2_lib
unix:!macx: LIBS += -L$$LIB_PATH2 -lpcre -lffi
## 在 Unix 系统(非 macOS)下添加库
unix:!macx {
LIBS += -L$$LIB_PATH -lbluetooth -lglib-2.0 -lsbc -ljson-c -lz -lgmodule-2.0 -lgio-2.0 -lgobject-2.0 -lasound -lbtmg -ldl -lm -lresolv
LIBS += -lshared-mainloop -lbluetooth-internal -lshared-glib
}
INCLUDEPATH += $$PWD/btmanager/include
DEPENDPATH += $$PWD/btmanager/include
在你的sdk下找到类似这个路径
Tina-SDK/out/t113-bingpi_m2/staging_dir/target/usr/lib
下的所有文件复制到项目下的out_lib中,再找到类似这个路径Tina-SDK/out/t113-bingpi_m2/staging_dir/target/rootfs/lib
下的所有文件复制到项目下的out2_lib中(out文件夹是要进行一次make && moob && pack后编译生成所产生的)
编译执行,就不会缺少依赖了
##总结
其实我这个是笨方法,就是缺少啥依赖就将生成的so文件放进去,实际上用到的就是这些-lbluetooth -lglib-2.0 -lsbc -ljson-c -lz -lgmodule-2.0 -lgio-2.0 -lgobject-2.0 -lasound -lbtmg -ldl -lm -lresolv -lshared-mainloop -lbluetooth-internal -lshared-glib
,这些库的意思就是去掉lib和so前缀和后缀的,比如 -lbluetooth
就是libbluetooth.so
、-lglib-2.0
就是libglib-2.0.so
。这里是参考btmanager里面demo里的Makefile文件写的,-lbtmg
引入的顺序必须与写的顺序一致,不然会提示缺少依赖,需要写好-lbtmg
所需要的依赖后再引入。
配置了tinaSDK的环境,根据《Tina_Linux_蓝牙_开发指南.pdf》这篇文档提供的代码位置,找到了so文件,并引入。会报错,请教一下如何正确使用这个so文件?