}
* 为设备的一个操作添加一堆编码/解码函数
需要为设备操作,添加一对static的编码/解码函数,用于通信数据的编码和解码。
在编码函数/解码函数上加上注解FoxEdgeOperate,告诉Fox-Edge对应的操作名称和这是编码/解码函数,建议的通信超时是多长。 Fox-Edge的Device服务在启动的时候,会扫描解码器jar包的信息。此时,它可以通过这个组件,获知可管理的设备的操作信息。
比如,这边定义了读取温湿度的一对编码/解码函数
/**
-
读取Registers
/
@FoxEdgeDeviceType(value = “温湿度采集模块(ZS-SHT30-1T-1H-485)”, manufacturer = “中盛科技”)
public class ZSKJReadTemperatureAndHumidity {
/*- 编码函数
- @param param 编码参数,它来自设备配置的参数和操作任务配置的参数的合并
- @return 编码结果 该数据的对象类型,要根据你准备转发的Channel服务来定义。
- 比如,serial-channel提供的数据格式,是16进制格式的来表示通信报文,所以你要返回一个hex通信报文格式的String给外部
*/
@FoxEdgeOperate(name = “读取温湿度”, polling = true, type = FoxEdgeOperate.encoder, timeout = 2000)
public static String packReadInputRegister(Map<String, Object> param) {
return (String) operateReadRegister(“”, param);
}
/**
- 解码函数
- @param hexString 该对象是由你使用的channnel从设备获得的报文,以hex格式文本输入给你。
- 如果你用的是其他channel,其他channel有自己的约定,那么你需要采用对应的格式。
- 目前各类channel支持的有常见的hexString,也有结构复杂一点的Map<String, Object>
- @param param 解码参数,它来自设备配置的参数和操作任务配置的参数的合并,到时候你知道该如何对设备返回报文进行解码
- @return 解码后的数据 必须为Map<String, Object>格式,表示一批key-value的设备数据对象和它的数值
*/
@FoxEdgeOperate(name = “读取温湿度”, polling = true, type = FoxEdgeOperate.decoder, timeout = 2