考虑到终端(UE)通过云转发至 US-Monitor 的用户数据结构体的成员变量,与US-Monitor的.xml文件需要存储、显示的变量是一一对应的,因此在US-Monitor中,通过解析、修改AHL.xml文件即可达到将UE发送的数据显示在US-Monitor的目的。
为了实现样例的需求,在US-Monitor中,应修改AHL.xml文件中的3个部分:添加侦听程序的IMSI、添加用来存储传感器信息的变量、将该变量添加到命令“U0”中。
在修改程序之前,需要完成的前期操作步骤如下:
(1)在自定义路径下新建一个文件夹,用于存放“葫芦”,搭建用户自己的项目文件夹,最好在文件夹的末尾标注日期。
(2)将“葫芦”US-Monitor 程序复制一份,放于该新建文件夹下,按个人习惯重命名,保证原始“葫芦”US-Monitor 的源码不被覆盖,此处为将要“画瓢”的US-Monitor程序。
(3)打开VS2013集成开发环境,如未安装VS2013的用户请参考本书附录C.1进行。
图5-6 US-Monitor工程目录
(4)找到 US-Monitor 程序的工程路径,通过双击“AHL-IoT.sln”可打开即将“画瓢”的US-Monitor的工程目录,如图5-6所示。
在完成前期操作步骤之后,我们即将进行US-Monitor程序的修改。
在US-Monitor工程目录中,首先通过双击“AHL.xml”打开需要更改的.xml文件,然后单击VS菜单栏中的“编辑”,选择“查找和替换”,接着单击“在文件中查找”,可弹出“查找和替换”对话框,选择“在文件中查找”模式,即可进行全局搜索,如图5-7所示。
当进行全局搜索时,在“查找内容”文本框中填写“【画瓢处】”,单击“查找全部”按钮,可弹出如图5-8所示的“查找结果1”。
图5-7 “查找和替换”对话框
图5-8 “查找结果1”页面
特别要注意的是,搜索使用的是中文“【】”。
由图5-8可知,整个US-Monitor工程目录提供多处“画瓢”的位置,请用户根据各自的需求进行“画瓢”。接下来可根据样例的需求,对US-Monitor程序进行具体的修改。
US-Monitor程序内容的修改主要由添加侦听的IMSI、添加用来存储传感器信息的变量及显示名,以及添加该变量至命令“U0”中三个部分组成。这些工作均在“AHL.xml”文件中进行。
1.添加待侦听的IMSI
考虑到每套金葫芦IoT-GEC都拥有各自的IMSI,为了进行侦听,还需要添加该IMSI。在AHL.xml文件中搜索“【画瓢处】-添加侦听的IMSI”,并在此处按照要求将侦听的IMSI更改为自己的设备IMSI,例如460040436504886;按照修改用户程序的相同思路添加“<!--新增温度传感器-->”,后面操作就不一一重复说明,具体的代码修改过程如下所示。
2.添加用来存储传感器信息的变量名及显示名
为了更具有直观性,我们在US-Monitor中新增一栏,用于存储传感器信息的变量及显示名,以下为在 AHL.xml 文件中新增代码的具体实现。考虑到由 UE 通过云转发至US-Monitor的用户数据结构体的成员变量,与USMonitor的.xml文件存储、显示的变量类型一致,因此使用的变量temp为16位无符号整型,在C#中用ushort表示;“新增温度”为显示名。同时可以在AHL.xml文件中搜索“【画瓢处】-添加用来存储传感器信息的变量及显示名”,确认“画瓢处”的位置。
3.添加该变量至命令“U0”中
通过将所读取的传感器值在US-Moinitor中进行显示,即在AHL.xml文件中,将新增变量 temp 添加至命令“U0”中,从而完成整个“照葫芦画瓢”的过程。考虑到所设参数的数量比较多,为此将所更改的区域进行字体标红、加粗,确保具有直观性,具体实现请按照程序格式进行,此处只是为了方便区分查看;同时考虑到篇幅有限,将 commands 段落部分内容省略,如需详细内容,请参考工程.xml。同时也可以在AHL.xml文件中搜索“【画瓢处】-添加该变量至命令‘U0’”进行“画瓢处”位置的确认。具体添加格式如下所示。
为了查看US-Monitor程序所有更新的区域,采用5.2节开头介绍的搜索步骤,通过搜索关键词“新增温度传感器”可得到如图5-9所示的US-Monitor更改后的全局搜索效果图,共搜索出3处添加了内容。至此,US-Monitor程序更新完毕。在完成修改之后,请单击VS菜单栏中的“保存”按钮进行存储。至此,侦听程序更改完毕。
图5-9 US-Monitor更改后的全局搜索效果图
为了方便用户更快地学习,该代码已放入网上光盘的“..\04-Soft\03-Example\CH05_Prg\01-US-Monitor”文件夹中。