开源地址:https://github.com/xizhonghuai/topiot
pom.xml
com.top
topiot
1.0.0
com.alibaba
fastjson
1.1.34
log4j
log4j
1.2.17
org.apache.mina
mina-core
2.0.7
springmvc.xml
10375
false
true
代码说明:
1)、id:服务唯一标识,由字母或数字组成。
2)、class:传输层协议,取值如下:
tcp:com.transportlayer.Tcp
udp:com.transportlayer.Udp
usart:com.transportlayer.Usart
3)、serviceId:服务唯一标志,同id。
4)、Handler:应用层协议(业务逻辑部分,取值为包+类名):
例:com.protocol.test.TestHandler (TestHandler类为业务逻辑部分)
5)、port:tcp、udp端口,支持多个配置。
6)、comName:串口端口号。
7)、baud:串口波特率。
8)、decodecharset、encodecharset:接收、发送数据编码方式。
9)、idle:数据读写通道空闲时间,单位秒。仅对tcp有效。
10)、pushUrl:数据推送地址。
11)、pushflag:http推送开关,开启后,设备端数据将转发到pushUrl上。
推送协议:服务唯一标识ID(固定长度16个字节,不足空格补)+设备id(固定长度
16个字节,不足空格补)+数据
12)、debugflag:调试开关,设置为true可通过以下协议与设备进行数据交互,支持
websoket、tcp。
websoket地址:ws://127.0.0.1:8081/topiot/ws
tcp地址:127.0.0.1:10401
客户端→设备:服务唯一标识ID(固定长度16个字节,不足空格补)+设备
id(固定长度16个字节,不足空格补)+数据
设备→客户端:服务唯一标识ID(固定长度16个字节,不足空格补)+设备
id(固定长度16个字节,不足空格补)+数据
13)、toServiceId:默认值为自身服务id,表示该服务下设备与设备之间可实现单工
通信。若配置为其他服务id,则能实现不同服务下的设备与设备之间通信。
通信协议:M2M+(13 个空格)+设备id(固定长度16 个字节,不足空格补)+
数据。
package com;
import org.apache.log4j.Logger;
import org.apache.mina.core.service.IoHandlerAdapter;
import org.apache.mina.core.session.IdleStatus;
import org.apache.mina.core.session.IoSession;
import com.common.ClassMsgAnnotation;
import com.common.methods;
@ClassMsgAnnotation(mark = "测试")
public class test extends IoHandlerAdapter {
private Logger logger = Logger.getLogger(test.class);
public void messageReceived(IoSession session, Object message) throws Exception {
// Empty handler
logger.info("收到数据(hex):" + methods.toHexString(message.toString()));
logger.info("收到数据(asc):" + message.toString());
session.write("ok");
}
public void sessionIdle(IoSession session, IdleStatus status) throws Exception {
// Empty handler
}
public void sessionOpened(IoSession session) throws Exception {
// Empty handler
logger.info(session.getRemoteAddress() + "连接");
}
public void sessionClosed(IoSession session) throws Exception {
// Empty handler
}
}
启动项目后,使用tcp测试工具连接端口10375,然后发送数据。