开闭原则: 面对需求, 对程序的改动是通过增加新代码进行的, 而不是改变原来的代码。
依赖倒转原则: 高层模块不应该依赖底层模块,两个都应该依赖与抽象; 抽象不应该依赖于细节,细节应该依赖于抽象
1,Qt编译arm版本后,里面有很多歌文件夹。其实只需要将里面的lib文件夹拷贝到板子上就行了。有文章说要把plugin文件夹也一并拷过去。我没拷,也没发现问题。
拷贝时先将lib文件夹tar压缩后,然后U盘拷过去,利用超级终端操作解压到对等目录。
然后要设置环境变量:
export QTDIR=/usr/local/arm/arm-qt-4.8.1
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
只设这两个就好了,那个bin没必要设。
2,将程序通过终端发送到板子的相应目录。先在终端里rz,然后右键单击选择文件---发送。收到文件后,文件会存储在你在终端里输入rz命令时的所在目录。为了方便,先新建个文件夹。然后chmod +x 。。。。,使这个文件可执行。(只需要拷贝或者说发送这个可执行文件到板子里就行了,不需要把整个工程文件夹都拷过来)。运行后发现,中文字体完全不显示。解决办法是下载一个文泉驿字体库,文泉驿字体库分两种一种是.ttc文件较大,但只有一个文件。一种是.qpf, 我推荐这个。里面有120、130、140、150、160号字体,每个号对应Normal和Bold两种。
将.qpf文件拷贝到arm板子上的qt的lib库里的fonts文件夹就可以了。
文泉驿字体库,qpf格式的,下载地址:http://download.csdn.net/detail/yanzi1225627/4478888
在主函数里程序里设置,
QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
。。。。。 。。。。。。。 。。。。。。
QFont font("wenquanyi",12,QFont::Bold); //使用wenquanyi,12号字体,粗体
a.setFont(font); //这个a指的是Application a
网上还有说,还需要增加一个ARM开发板上的环境变量,在/etc/profile文件中增加:
export QT_QWS_FONTDIR=/usr/local/qt463lib/lib/fonts 这个我没有设置,也正常显示了!留在这里做参考吧。
3,linux PC与arm板子udp通信注意事项:
默认的板子是没有防火墙的,而PC上有。所以一定要在pc上,关闭防火墙。service iptables stop
最后上张截图吧:
这是pc上的:
这是Tiny210,arm开发板上:
手机没带数据线,奶奶的。。。
遗留的问题:
在arm板子上,我用的鼠标,遗憾的是没有键盘。要是能移植个类似于左下角的小键盘连带输入法就好了。有知道的兄台指点下。
高通qrd方案一站式服务,蓝牙模块配合好相关主板配电即可以正常工作了。
不过由于之前工厂测试模式是之前项目架构好的,工厂测试模式需要满足jni调用相关的要求。
按照fae提供的函数,调用后无法进行工厂测试。主要是权限问题。与framework相关人员确认了下,是andorid系统安全,避免第三方应用调用到system中内核驱动权限。
因此,只能jni中启动服务,服务执行进入工厂模式的相关操作。
1. 服务
主要是在system目录外的文件夹中启动相关的服务项。选择在vendor目录下新立项目。
新文件夹下,android.mk控制模块生成。
LOCAL_SHARED_LIBRARIES:=libbluedroid
LOCAL_C_INCLUDES: =\
$(LOCAL_PATH)/system/bluedroid/include \
System/bluedtooth/bluez-clean-headers
LOCAL_C_INCLUDES +=\
$(call include-path-for, bluedroid)
由于我的服务中需要用到system里面生成的库。这里就选择了libbluedroid.
之前我选择包含头文件时,有时候总是要写很长一个绝对路径,这里注意包括库的头文件LOCAL_C_INCLUDES +=$(call include-path-for, bluedroid)
系统能够自动找到服务中的include头文件。
然后介绍服务,就是调用bluedroid中的函数。
#includ <bluedroid/Bluetooth.h>
Int main()
{
Bt_disable();
}
2. 启动服务
系统提供了property_set(“ctl.start”,bttest_enable)启动服务。
或者采用触发条件
on property:persist.sys.ty_dmsg=1
start bttest_enable
启动服务中需要注意服务的option
oneshot
在服务退出后不重启。
disabled
这个服务的级别将不会自动启动,它必须被依照服务名指定启动才可以启动。
作为受控的测试服务,新加的服务属性需要加上这两项。