private (String CanAddress, CanFunCodeEnum FunCode) ParseCanData(byte[] recData) { byte sourceID = recData[0]; String CanAddress = $"{ByteUtil.ToHex(recData[0])}-{ByteUtil.ToHex(recData[2],recData[3])}"; CanFunCodeEnum FunCode = (CanFunCodeEnum)recData[1]; return(CanAddress, FunCode); }
private Byte[] GenerateSendData(byte[] addr, CanFunCodeEnum FunCode, params byte[] datas) { Byte[] result = new Byte[8]; result[0] = ID; result[1] = (Byte)FunCode; result[2] = addr[0]; result[3] = addr[1]; var len = Math.Min(datas.Length, 4); for (byte i = 0; i < len; i++) { result[i + 4] = datas[i]; } return(result); }
public override void SetListenFun(String CanAddress, CanFunCodeEnum UpType, CanListenFun ListenFun) { lock (Listen_Lock) { var addrs = ParseCanAddress(CanAddress); if (addrs == null) { return; } (Byte TargetId, Byte[] addr) = addrs.Value; var data = GenerateSendData(addr, UpType, 0); string key_str = ByteUtil.ToHex(data[0]) + ByteUtil.ToHex(TargetId) + ByteUtil.ToHex(data[1]) + ByteUtil.ToHex(data[2]) + ByteUtil.ToHex(data[3]); if (ListenFunList.ContainsKey(key_str)) { ListenFunList[key_str] = ListenFun; } else { ListenFunList.Add(key_str, ListenFun); } } }
public abstract void SetListenFun(String CanAddress, CanFunCodeEnum UpType, CanListenFun ListenFun);