import 'dart:convert'; import '../../../blue/io_tool/io_tool.dart'; import 'package:fast_gbk/fast_gbk.dart'; import '../io_udpSender.dart'; import '../io_udpType.dart'; import '../udp_reply.dart'; class UDPSendHeartCommand extends UDPSenderProtocol { String? userName; List? ipList; String? tokenStr; UDPSendHeartCommand({ this.userName, this.ipList, this.tokenStr, }) : super(CommandUDPType.heart); @override List messageDetail() { List data = []; // 命令 data.add(4); // 命令类型 data.add(1); // 用户名 P18682150237 // var pStr = "P18682150237"; data.addAll(utf8.encode(userName!)); data = getFixedLengthList(data, 20 - utf8.encode(userName!).length); // data.add(0); // mac地址 // var macAddress = "02:00:00:00:00:00"; // data.addAll(utf8.encode(macAddress)); // data = getFixedLengthList(data, 6 - utf8.encode(macAddress).length); data.addAll([0, 0, 0, 0, 0, 0]); // 预留4个字节 data.addAll([0, 0, 0, 0]); // ip地址 // var ipStr = "192.168.9.7"; // data.addAll(utf8.encode(ipStr!)); // data = getFixedLengthList(data, 12 - utf8.encode(ipStr!).length); data.addAll(ipList!); // 预留8个字节 data.addAll([0, 0, 0, 0, 0, 0, 0, 0]); // token const String token = 'token'; data.addAll(gbk.encode(token)); data = getFixedLengthList(data, 10 - gbk.encode(token).length); // AppLog.log("gbk.encode(token):${gbk.encode(token)}"); // var tokenStr = "b989fa15f75c2ac02718b7c9bb64f80e"; data.addAll(gbk.encode(tokenStr!)); // AppLog.log("gbk.encode(tokenStr):${gbk.encode(tokenStr!)}"); final int tokenStrLength = gbk.encode(tokenStr!).length; final List tokenStrLengthArr = []; tokenStrLengthArr.add(tokenStrLength & 0xff); tokenStrLengthArr.add((tokenStrLength & 0xff00) >> 8); tokenStrLengthArr.add((tokenStrLength & 0xff0000) >> 16); tokenStrLengthArr.add((tokenStrLength & 0xff000000) >> 24); data.setRange(37, 41, tokenStrLengthArr); // AppLog.log("UDPSendHeartData:$data"); return data; } } class UDPSendHeartReply extends UDPReply { UDPSendHeartReply.parseData(CommandUDPType commandType, List dataDetail) : super.parseData(commandType, dataDetail) { data = dataDetail; } }