86 lines
2.3 KiB
Dart
Executable File

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<int>? ipList;
String? tokenStr;
UDPSendHeartCommand({
this.userName,
this.ipList,
this.tokenStr,
}) : super(CommandUDPType.heart);
@override
List<int> messageDetail() {
List<int> data = <int>[];
// 命令
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(<int>[0, 0, 0, 0, 0, 0]);
// 预留4个字节
data.addAll(<int>[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(<int>[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<int> tokenStrLengthArr = <int>[];
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<int> dataDetail)
: super.parseData(commandType, dataDetail) {
data = dataDetail;
}
}