Shisheng Chen
Shisheng Chen
点击编译好的exe文件,显示GUI程序窗口的同时会显示一个显示标准输出的终端窗口。我的程序是要打包给客户使用的,显示一个终端窗口肯定是不行的! 如何才能不显示这个终端窗口?我把编译配置里的 “-D_CONSOLE”选项都去掉了,还是有个终端窗口。
zig的C编译器即`zig cc`,是zig编程语言所携带的C编译器。zig详情请参考这里:[https://ziglang.org/zh/](url) 之所以用`zig cc`,是因为它继承了zig的跨平台的特点:可以在任意一个支持的平台上跨平台编译到另一个任意平台,并且对C支持良好。 而且zig cc本身携带libc,可以解决非常多的编译时及运行时的兼容性问题。 目前发现awtk的构建系统并没有区分主机(host)和目标(target),所以要跨平台编译就要改比较多东西。 目前尝试了下修改构建脚本,跨平台编译时大部分文件都能编译,但链接还有点问题,后面再继续尝试。 建议花点时间优化了构建系统,一个优良的构建系统有利于项目的推广。如果项目构建不便捷,很多人可能尝试到构建失败就放弃深究转到别的项目去了。
在嵌入式领域,感觉比C语言高级的切实可用的语言就C++跟rust了。 但C++还是有点复杂,希望AWTK能支持rust开发,个人觉得MVVM框架能支持rust就OK了。
国内市面上很多包含字库的打印模块所使用的编码是GBK的。 所以,如果str_t字符串模块有现成的转换为GBK编码的API将方便很多!
gradient即颜色渐变,如果支持的话将无需图片素材就可以很容易地绘出美观的界面。
MPRIS([Media Player Remote Interfacing Specification](https://www.freedesktop.org/wiki/Specifications/mpris-spec/))是Linux桌面环境的基于D-Bus的媒体控制接口,可以方便将媒体控制集成到KDE、GNOME等桌面环境。 pypi上已有MPRIS服务器实现:[mpris-server](https://pypi.org/project/mpris-server/) 本人由于工作较忙,没有太多时间来自己添加此功能,故提此建议。 
```xml ... ... ``` ```C general_settings_t* general_settings_create(void) { general_settings_t* general_settings = TKMEM_ZALLOC(general_settings_t); return_value_if_fail(general_settings != NULL, NULL); general_settings->language_id = 1; return general_settings; } ``` 打开窗口时,`combo_box`总是显示第0个选项而不跟模型的一致。 而将模型绑定到`selected_index`上: ```xml ``` 打开窗口时,`combo_box`显示的选项而跟模型的一致;但操作UI改变选项后,模型属性`language_id`没有跟随UI变化。
LCD接口是RGB,驱动类型是fbdev,用`window_manager_set_show_fps(window_manager(), TRUE)`显示程序刷新帧率发现在没有更新内容的界面上其FPS只有LCD时序帧率的一半: * LCD时序帧率为60fps时AWTK程序的最大FPS为30,LCD为120FPS时AWTK程序最大FPS为60; * 已经用示波器检验过LCD的时序信号是正确的; * 内核驱动上,我的fbdev是双缓存的。 粗略看了下源码,发现宏`__FB_WAIT_VSYNC`默认为`1`即刷新时默认会调用`ioctl(fb->fd, FBIO_WAITFORVSYNC, &dummy);`来等待垂直同步信号,个人认为:在双缓存的fbdev设备上是不需要等待垂直同步的。 于是,我将文件`awtk-port/lcd_linux/lcd_linux_fb.c`的宏`__FB_WAIT_VSYNC`定义改为`#define __FB_WAIT_VSYNC 0`后程序的最大帧率达到了LCD时序帧率。测试过程也没发现有界面撕裂的情况。
注意到修改源码的提交数不少,但就鲜有修改构建系统的提交,能否抽点时间花点精力优化下构建系统? 那些通过自动工具生成的文件没有形成依赖关系的问题不大,但`awtk-linux-fb`的配置固定在源码里面,而不同芯片平台的配置都不同,导致每次同步`awtk-linux-fb`时都要手动去改配置,就非常麻烦! 是否可以考虑下用kconfig来优化下配置方法?
最近在做USB设备的热插拔识别功能,发现libusb在Windows系统上不支持热插拔,原因大概是Windows的热插拔事件只发给UI窗口。 那么只能自己去监听操作系统发给窗口的插拔事件来实现插拔识别了。AWTK目前可以监听操作系统事件么? Qt上可以先通过`void QCoreApplication::installNativeEventFilter(QAbstractNativeEventFilter *filterObj)`安装native事件过滤器然后在主窗口连接`MainWindow::NativeDeviceChanged`信号即可。代码大致如下: ```C int main(int argc, char *argv[]) { QApplication app(argc, argv); MainWindow w; w.show(); app.installNativeEventFilter(&w); return app.exec(); } ``` ```C MainWindow::MainWindow(QWidget *parent) { connect(this, &MainWindow::NativeDeviceChanged, camera,...