项目基于安卓平台开发,包含modbus协议栈,应用于控制硬件设备,该硬件设备具有modbus协议的实现。可通过该App读写硬件设备,读操作使得硬件设备返回信息到App,App解析返回信息得到硬件设备的各种参数,比如硬件设备的温度,湿度,电压,电流等参数。写操作可以改变硬件设备的状态,控制硬件设备的开关闭合等等操作。 通过蓝牙Socket链接modbus的串口来实现数据传输。需要将界面的参数转化为modbusRTU报文,然后通过蓝牙Socket传输到硬件设备,硬件设备接收到modbusRTU报文(01 01 00 00 0a bc 0d),根据解析出的报文功能码来判断读写操作。如果是读操作,返回相应的寄存器数据。如果是写操作,写入数据到寄存器。
返回数据的解析,根据modbus协议,不同的读写操作有不同的返回数据,以及错误返回。根据modbus协议,功能01读取线圈,返回位数据,解析报文(01 01 02 FD 00 F9 6C)得到数据:1,0,0,1,0,1,1,1,0,0。功能03读取保持寄存器,返回字节数据,解析为数字,返回01 03 14 89 1A 01 DB 03 60 0C AE 03 61 00 00 00 00 00 00 00 00 00 00 00 0F ,解析为35098,475,864,3246,865,0,0,0,0,0。写入数据返回的是发送报文的PDU部分。返回的错误码01 83 02 C0 F1,解析为读取地址错误。