== 软件项目 == 

潓美平板软件git仓库主页: https://git.g77k.com/supercatexpert/ampro-new

目前有两个分支,分支old_ui为水素版本软件，master为医疗版本软件；软件的运行环境是ARM 335x，基于qt4.8.6开发，使用BuildRoot构建而成的嵌入式Linux系统 [https://git.g77k.com/yiling.cao/pudge-buildroot/tree/huimei_medic huimei_medic]。

== 软件运行环境 ==

=== 系统内核版本 ===

==== 目前平板使用的系统内核版本 ====

* Linux ascleway 3.2.0-novotech_asclepius_new+ #1 Mon Feb 10 12:11:01 CST 2020 armv7l GNU/Linux

==== 更新内核版本 ====

* 系统uImage与mod的最新版本获取地址：http://192.168.8.28:81/ti-linux-sdk-kernel/am335x/asclepius1-mk3/latest/ 
::- 根据开机画面需求选择获取MK3结尾的zImage*文件，同时下载modules.tar.gz文件

* 复制zImage-* 到 /boot/uboot/zImage，将modules.tar.gz文件解压到根目录下
::- 如果从3.2升级内核。请确保更改/etc/fstab，将所有mmcblk0替换为mmcblk1，否则系统将不能正确启动。

=== 网络控制 ===

基于客户出货需求当前系统启动时默认不打开网络，但由于部分原因需要在特殊情况下打开网络，现做出以下控制网络开关的方法：

* 打开网络：[https://git.g77k.com/yiling.cao/pudge-buildroot/blob/3aee5f61a1a840fbe0b7a143642d2b0554fd1ec4/overlay/usr/bin/netdown.sh netup.sh]
* 关闭网络：[https://git.g77k.com/yiling.cao/pudge-buildroot/blob/3aee5f61a1a840fbe0b7a143642d2b0554fd1ec4/overlay/usr/bin/netdown.sh netdown.sh]

::- 以上两个脚本需要手动启动
::- 脚本所在位置：/usr/bin/

=== 软件相关目录 ===

* /AM/arm_bin_debug 为主程序依赖库文件与运行文件所在目录
* /AM/appdata/lang 为主程序语言配置文件所在目录
* /AM/appdata/system 为主程序运行根据不同类型机器配置文件所在目录
* /AM/appdata/wave 为主程序根据实际需求需要播放的语音文件所在目录
* /AM/log 为主程序日志文件所在目录
* /AM/update 为更新包所在文件夹
* /AM/bak 为程序备份文件所在文件夹
* /AM/internalversion 为主程序内部本号
* /AM/VERSION 为主程序UI展示版本号
* /var/lib/medctrl/aspi.dat 为用户信息数据库
* /var/dl 为用户在线下载更新包所在目录

=== 软件主要进程 ===

主要进程主要包含三个：
* medctrlloader：该进程在开机时检测在/AM/update或/var/dl目录下是否有更新包，当没有发现更新包时，判断主程序运行是否正常；当发现更新包存在时解析更新包进行更新主程序与相关文件。(更新包默认名称：app.update)
* deamonClient: 该进程为软件主程序的watchdog
* medctrl：该进程为软件运行的主程序

== 软件框架 ==

软件主要分为三部分：串口通讯部分、UI部分与运行逻辑控制部分

[[File:software_block_diagram.png]]

=== 串口通讯部分 ===

串口外设：

* 与stm32通讯：/dev/ttyO1 波特率：9600
* 蓝牙通讯： /dev/ttyO4 波特率：9600

==== 通讯协议 ====
AM335x与stm32通讯协议：https://w.g77k.com/%E6%BD%93%E7%BE%8E7%E5%AF%B8%E5%B9%B3%E6%9D%BF%E7%94%B5%E8%84%91A8#AM3352.E3.80.81STM32.E9.80.9A.E8.AE.AF.E5.8D.8F.E8.AE.AE

=== UI部分 ===

UI主要分为三个模块：

* 主窗口
* 虚拟键盘
* 弹窗

=== 运行逻辑控制部分 ===

运行逻辑部分包括：

* 主要运行线程
* 配置文件

== 软件源码解析 ==

=== 串口通讯部分 ===

[[File:serial_communication.png]]

=== UI部分 ===

[[File:UI.png]]

=== 运行逻辑控制部分 ===

[[File:run_the_logic.png]]