Exemple #1
0
 /// <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;
     }
 }
Exemple #2
0
        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);
        }
Exemple #3
0
        /// <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();
        }
Exemple #4
0
        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);
            }
        }
Exemple #5
0
        /// <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);
            }
        }
Exemple #6
0
        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);
        }