/// <summary> /// 发送请求 /// </summary> public void Send() { timer2.Enabled = false; try { if (!this.IsListener) { this.listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); listener.Connect(EndPoint); SetListenerState(true); if (this.OutPut != null) { OutPut(string.Format("{0}连接成功", this.FacilityNumber), eOutputType.Important); } } string str = "00 00 00 00 00 06 01 03 03 EE 00 06"; //瞬时流量 仪表累计量 皮带速度 listener.Send(CodeChange.StrToHex16Byte(str)); } catch (Exception ex) { SetListenerState(false); if (this.OutPut != null) { OutPut(string.Format("{0}连接断开:{1}", this.FacilityNumber, ex.Message), eOutputType.Error); } //if (this.OutPut != null) OutPut(string.Format("发送请求失败,原因:{0}", ex.ToString()), eOutputType.Error); } finally { timer2.Enabled = true; } }
public TemperatureDAO(string com, int addr, int crc8, int deldays, string facilityNumber) { this.Com = com; this.Addr = addr; this.CRC8 = crc8; this.DelDays = deldays; this.FacilityNumber = facilityNumber; string cmd = string.Format("68 55 01 00 {0} {1} 0D", CodeChange.Hex10ToHex16(addr.ToString()), crc8);//查询命令 Send_Cmd = CodeChange.StrToHex16Byte(cmd); }
/// <summary> /// 数据处理 /// </summary> /// <param name="str"></param> /// <param name="output"></param> private void PrintRecvMssg(string str) { timer1.Enabled = false; int res = 0; try { decimal momentInstrument = 0, speed = 0, sumWeight = 0; string[] content = str.Split(' '); if (content.Length < 21) { return; } momentInstrument = Convert.ToDecimal(CodeChange.Hex16ToHex10(content[11].ToString() + content[12].ToString() + content[9].ToString() + content[10].ToString())) / 100m; //顺时流量 sumWeight = Convert.ToDecimal(CodeChange.Hex16ToHex10(content[15].ToString() + content[16].ToString() + content[13].ToString() + content[14].ToString())) / 1000; //累计流量 speed = Convert.ToDecimal(CodeChange.Hex16ToHex10(content[19].ToString() + content[20].ToString() + content[17].ToString() + content[18].ToString())) / 100m; //皮带速度 CommonDAO.GetInstance().SetSignalDataValue(this.FacilityNumber, "累计流量", sumWeight.ToString()); CommonDAO.GetInstance().SetSignalDataValue(this.FacilityNumber, "瞬时流量", momentInstrument.ToString()); CommonDAO.GetInstance().SetSignalDataValue(this.FacilityNumber, "皮带速度", speed.ToString()); if (DateTime.Now.Minute % 10 == 5) { res += Dbers.GetInstance().SelfDber.Insert <BeltWeightHistory>( new BeltWeightHistory { FacilityNumber = this.FacilityNumber, MomentInstrument = momentInstrument, BeltSpeed = speed, SumWeight = sumWeight, RecordTime = DateTime.Now } ); } if (this.OutPut != null) { OutPut(string.Format("{0} 累计流量:{1} 瞬时流量:{2} 皮带速度:{3}", this.FacilityNumber, sumWeight, momentInstrument, speed), eOutputType.Normal); } } catch (Exception ex) { if (this.OutPut != null) { OutPut(string.Format("解析数据失败,原因:{0}", ex.ToString()), eOutputType.Error); } } finally { timer1.Enabled = true; } //this.Listener.Close(); }
public static void HandleCodeChange(CodeChange codeChange) { foreach (var method in codeChange.Methods) { HandleMethodChange(method); } foreach (var container in RuntimeMemory.Methods.SelectMany(x => x.Value).Where(x => codeChange.Methods.Any(y => y == x.Method))) { UpdateInstanceMethod(container); } }
/// <summary> /// 数据处理 /// </summary> /// <param name="data"></param> void ReceiveData2(List <byte> data) { try { //55 68 01 00 C9 00 03 00 07 2F 00 D2 00 0D 2F 00 E6 00 15 2F 00 79 71 0D byte[] dataArray = data.ToArray(); string dataString = CodeChange.ByteToHex16Str(dataArray); string[] data16Array = dataString.Split(' '); if (data16Array.Length == 0) { return; } int Length = 5; int startindex = 7; int length = (data16Array.Length - 8) / 5; for (int i = 0; i < length; i++) { string machineCode = CodeChange.Hex16ToHex10(data16Array[startindex] + data16Array[startindex + 1]).ToString(); //测温杆编号 string temper = OneDigit(CodeChange.Hex16ToHex10(data16Array[startindex + 3] + data16Array[startindex + 4]) / 8m).ToString("f1"); //温度计算 startindex += Length; commonDAO.SetSignalDataValue(GlobalVars.MachineCode_MCCW, machineCode, temper); OutPut("————————", eOutputType.Normal); OutPut(string.Format("设备:{0} 温度{1}", machineCode, temper), eOutputType.Normal); STGStoreageTemperature storagetemp = commonDAO.SelfDber.Entity <STGStoreageTemperature>("where PoleCode=:PoleCode", new { PoleCode = machineCode }); if (storagetemp != null) { storagetemp.Temperature = temper; Dbers.GetInstance().SelfDber.Update(storagetemp); } if (DateTime.Now.Minute == 0) { Temperature_MC temp = new Temperature_MC(); temp.FacilityNumber = machineCode; temp.Temperature = Convert.ToDecimal(temper); temp.IsUse = "0"; temp.IsUpload = "0"; commonDAO.SelfDber.Insert(temp); } } } catch (Exception ex) { this.OutPut("数据解析:" + ex.Message, eOutputType.Error); } }
protected int GetResultZHI_XDS(string codes, string result) { result = GetResultString(result); int n = 0; string[] codeArr2 = GetCodeString2(codes); foreach (string item in codeArr2) { if (item.Equals(result)) { if (Change) { bool ChangeOk = true; int temp = int.Parse(codeArr2[0]); string tempcode = string.Empty; do { temp++; int flag = result.Length - temp.ToString().Length; if (flag == 0) { tempcode = temp.ToString(); } if (flag > 0) { string sflag = string.Empty; for (int i = 0; i < flag; i++) { sflag += "0"; } tempcode = sflag + temp.ToString(); } if (flag < 0) { ChangeOk = false; break; } }while (codeArr2.Contains(tempcode)); if (false == ChangeOk) { ChangeOk = true; temp = int.Parse(codeArr2[0]); do { temp--; int flag = result.Length - temp.ToString().Length; if (flag == 0) { tempcode = temp.ToString(); } if (flag > 0) { string sflag = string.Empty; for (int i = 0; i < flag; i++) { sflag += "0"; } tempcode = sflag + temp.ToString(); } if (temp == -1) { ChangeOk = false; break; } }while (codeArr2.Contains(tempcode)); } if (ChangeOk) { string[] changeCodeTemp = GetCodeString2(Codes.Replace(item, tempcode)); CodeChange = string.Empty; foreach (var item2 in changeCodeTemp.OrderBy(p => p)) { CodeChange += item2 + "&"; } CodeChange = CodeChange.Substring(0, CodeChange.Length - 1); UserCode = UserCode.Split(' ')[0] + " " + CodeChange.Replace('&', '|'); } else { return(1); } return(0); } else { n++; } } } return(n); }