netty 以16进制字节码和硬件通信
技术交流QQ群 1093476453
1 核心代码 需要把16进制的字节码数组写入 byteBuf里面再发送给硬件才可以
/**
* 发送数据
*/
private static void send2client(ChannelHandlerContext channel, final String receiveStr) {
try {
// netty需要用ByteBuf传输
ByteBuf buff = Unpooled.buffer();
// 对接需要16进制
buff.writeBytes(ConvertCode.hexString2Bytes(receiveStr));
channel.writeAndFlush(buff);
} catch (Exception e) {
e.printStackTrace();
}
}
2.接收数据转换
@Override
protected void channelRead0(ChannelHandlerContext ctx, Object msg) throws Exception {
ByteBuf buf = (ByteBuf) msg;
byte[] bytes = new byte[buf.readableBytes()];
// 复制内容到字节数组bytes
buf.readBytes(bytes);
// 将接收到的数据转为字符串,此字符串就是客户端发送的字符串
String receiveStr = ConvertCode.receiveHexToString(bytes);
System.out.println(receiveStr);
String ipString = getIPString(ctx);
System.out.println(ipString + ": " + receiveStr);
}
3.工具类
public class ConvertCode {
/**
* @Title:bytes2HexString
* @Description:字节数组转16进制字符串
* @param b
* 字节数组
* @return 16进制字符串
* @throws
*/
public static String bytes2HexString(byte[] b) {
StringBuffer result = new StringBuffer();
String hex;
for (int i = 0; i < b.length; i++) {
hex &#