仪表可以采用Modbus-RTU模式进行上位机通讯,协议格式为:8个数据位、1个停止位、无校验位,发送接收数据都是以十六进制格式进行。
1、发送数据格式
发送字节
1
2
3
4
5
6
7
含义
地址
读/写
A1
A2
A3
A4
CRC
仪表地址
03H,04H,06H
校验码
说明:
1)参数的通讯地址用一个字节表示时,对应A2位置,A1默认为00H。
2)03、04指令均为读命令,其中04对应的数据不可写入,03与06地址对应参数地址,一个读取、一个写入。
3)A1、A2与A3、A4组成两个双字节的数据,CRC校验码是一个双字节数据,所有的数据都是高位在前,低位在后。
4)03、04指令读取数据时,A1、A2为开始读取的地址,A3、A4为连续读取数据的个数。
5)06指令中,A1、A2需要写入数据的地址,A3、A4表示要写入的数据。
2、返回数据格式
1)06指令写入数据时,发送与返回的数据一致。
2)03、04指令返回时局格式
返回字节
1
2
3
4
5
……
含义
地址
03/06
读/写
返回数据有效字节数
高字节
低字节
……
高字节
低字节
高字节
低字节
第一数据
……
第N数据
CRC
说明:返回数据字节数为:N*2
3、上位机连续下写数据位10指令,支持此指令的仪表有XM708、XM808、XM908、XM707P、XM808P、XM908P、XMH、XMA、XMS、XMT、XMJM。
10指令发送数据格式举例为:
发送数据
01
10
0000
0002
04
0000
0000
CRC
含义
地址
指令
连续下写的首地址
连续下写数据个数
总字节数据个数*2
下写的数据
校验码
1、安装gcc : yum -y install gcc-c++
2、更新下载源: yum install yum-fastestmirror
3、Linux打包安装开发者工具: yum groupinstall "Development Tools"
不应该安装在外部存储器上的应用程序
当用户启用USB存储器来跟计算机共享文件时(或者是卸载或移除外部存储器),任何被安装在外部存储器上,并且当前正在运行的应用程序都会被杀死。在USB存储器被禁用和外部存储器被重新挂载到设备上之前,系统不会有效的感知到引用程序的存在。除了终止应用程序并让它对用户无效之外,这样做还可以中断某些更严重的应用程序类型。为了让你的应用程序能够像预期的那样,如果它使用了以下功能,你不应该允许你的应用程序被安装在外部存储器上,由于在外部存储器被卸载时,会引发一些后果:
Services
在外部存储器被卸载时,正在运行的Service将会被终止,而在外部存储器重新被挂载时,它也不会被重启。但是,你可以注册ACTION_EXTERNAL_APPLICATIONS_AVAILABLE类型的广播Intent,当被安装在外部存储器上的应用再次对系统有效时,它会给你的应用程序发通知。这时,你可以重启你的服务。
Alarm Services
你用AlarmManager注册的闹钟会被取消。在外部存储器被重新挂载时,你必须手动重新注册闹钟。
Input Method Engines
你的IME会被默认的IME替代。当外部存储器被重新挂载时,用户可以打开系统设置重新启用你的IME。
Live Wallpapers
你的正在运行的LiveWallpaper会被默认的LiveWallpaper所替代。当外部存储器被重新挂载时,用户可以再次选择你的LiveWallpaper。
App Widgets
你的AppWidget会被从主屏上删除。当外部存储器被重新挂载时,你的AppWidget不会自动的对用户有效,除非系统重新设置主应用程序(通常会一直到系统重启)。
Account Managers
你用AccountManager创建的账号,会一直到外部存储器被重新挂载才会显示。
Sync Adapters
直到外部存储器被重新挂载,你的AbstractThreadedSyncAdapter和所有的异步功能才会工作。
Device Administrators
你的DeviceAdminReceiver和所有的管理员能力会被禁用,这可能会产生一些不可预知的结果,甚至会持续到外部存储器被重新挂载之后。
Broadcast ReceiversListening For “boot completed”
在外部存储器被从设备上卸载之前,系统会发送ACTION_BOOT_COMPLETED广播。如果你应用程序被安装在外部存储器上,它就不会接收到这个广播。
Copy Protection
如果你的应用程序使用了GooglyPlay的复制保护功能,你的应用程序不会被安装在设备的SD卡上。但是,如果你使用了GooglePlay的ApplicationLicensing来代替,你的应用
程序就可以被安装在内部或外部存储器上,包括SD卡。
如果你的应用程序使用了上述功能,你就不应该允许你的应用程序安装在外部存储器上。默
认情况,系统不会允许你的应用程序安装在外部存储器上,因此你不必担心既存的应用程序。但是,如果你确定你的应用程序不能安装在外部存储器上,那么你应该通过声明带有“internalOnly”值的anroid:installLocation属性来明确说明。尽管这样不会改变默认行为,但它会明确指示你的应用程序只能被安装在内部存储器上,并告诉其他开发者是已经被决定的事。
应该安装在外部存储器上的应用程序
简单的说,任何不使用上述所列功能的应用程序安装在外部存储器上是安全的。通常一些大型游戏会允许把应用程序安装在外部存储器上,因为通常游戏在不活动时不会提供额外的服务。当外部存储器无效,且游戏进程被杀死时,不会影响外部存储器再次有效且用户重启游戏时的可视效果(假定游戏在标准的Activity生命周期中正确的保存了它们的状态)。
如果你的应用程序需要几M字节存储空间,你就应该认真考虑是否允许应用程序安装在外部存储器上,以便用户可以保留内部存储的空间。