/// <summary> /// 获取CC00的返回数据 /// </summary> /// <param name="x300"></param> /// <returns></returns> private byte[] Get0xCC00(TX300 x300) { byte[] cc00 = new byte[23]; Buffer.BlockCopy(x300.Content, 0, cc00, 0, 17); cc00[0] = 0x17; cc00[7] = 0xFF; cc00[8] = 0xFF; // 心跳时间间隔,7分钟 cc00[17] = 0x07; WbsDateTime dt = new WbsDateTime(DateTime.Now); Buffer.BlockCopy(dt.DateTimeToByte, 0, cc00, 19, 4); dt = null; return(cc00); }
/// <summary> /// 处理接收到的数据 /// </summary> /// <param name="data"></param> private void HandleReceivedData(AsyncUserDataBuffer data) { int index = 0, len = data.Buffer.Length; while (index < len) { byte[] temp = new byte[len - index]; Buffer.BlockCopy(data.Buffer, index, temp, 0, len - index); TX300 x300 = new TX300(); x300.Content = temp; x300.package_to_msg(); // 保存历史记录 //SaveTX300History(x300, data.ReceiveTime); // 更新设备状态 HandleTX300Status(x300, data); if (null != _server) { if (x300.CommandID == 0xCC00) { byte[] cc00 = new byte[23]; Buffer.BlockCopy(x300.Content, 0, cc00, 0, 17); cc00[0] = 0x17; cc00[7] = 0xFF; cc00[8] = 0xFF; cc00[17] = 0x07; WbsDateTime dt = new WbsDateTime(DateTime.Now); Buffer.BlockCopy(dt.DateTimeToByte, 0, cc00, 19, 4); dt = null; if (data.PackageType == AsyncDataPackageType.TCP) { _server.Send(data.SocketHandle, cc00); } else { _server.Send(data.Port, data.IP, cc00); } cc00 = null; } else { // 返回回执 TX300Resp resp = new TX300Resp(); resp.CommandID = x300.CommandID; resp.PackageID = x300.PackageID; resp.SequenceID = x300.SequenceID; resp.Status = 0; resp.Package(); if (data.PackageType == AsyncDataPackageType.TCP) { _server.Send(data.SocketHandle, resp.Content); } else { _server.Send(data.Port, data.IP, resp.Content); } } } HandleCommandResponsed(x300); index += x300.TotalLength; } }