예제 #1
0
        public void deviceInfo(dataStructure.device device)
        {
            id.Text          = device.id;
            time.Text        = device.time.ToString();
            runningtime.Text = device.runningTime;
            if (device.isCanConnection == true)
            {
                int canReverse   = device.canDirectionandSpeedMode & 0x0004;
                int canInterlock = device.canDirectionandSpeedMode & 0x0010;
                reverse.Text   = canReverse.ToString();
                interlock.Text = canInterlock.ToString();
                int Direction = device.canDirectionandSpeedMode & 0x0003;
                int SpeedMode = device.canDirectionandSpeedMode & 0x0008;

                switch (Direction)
                {
                case 0:
                    direction.Text = "无效";
                    break;

                case 1:
                    direction.Text = "前进";
                    break;

                case 2:
                    direction.Text = "后退";
                    break;

                case 3:
                    direction.Text = "无效";
                    break;

                default:
                    break;
                }
                if (SpeedMode == 0)
                {
                    speedmode.Text = "高速";
                }
                else
                {
                    speedmode.Text = "低速";
                }

                if (device.canLowPowerMode == 0xaa)
                {
                    lowpowermode.Text = "低功耗";
                }
                else
                {
                    lowpowermode.Text = "其他";
                }

                speed.Text            = device.canSpeed.ToString() + "rpm";
                course.Text           = device.canCourse.ToString() + "km";
                DirectVoltage.Text    = device.canDirectVoltage.ToString() + "V";
                MotorCurrent.Text     = device.canMotorCurrent.ToString() + "A";
                MotorTemperature.Text = device.canMotorTemperature.ToString() + "°C";
            }
            else
            {
                reverse.Text          = "##";
                interlock.Text        = "##";
                direction.Text        = "##";
                speedmode.Text        = "##";
                lowpowermode.Text     = "##";
                speed.Text            = "##";
                course.Text           = "##";
                DirectVoltage.Text    = "##";
                MotorCurrent.Text     = "##";
                MotorTemperature.Text = "##";
            }

            //模拟量数据2个
            liftMotorCurrent.Text     = device.liftMotorCurrent.ToString() + "A";
            liftMotorTemperature.Text = device.liftMotorTemperature.ToString() + "°C";
            //下面是数字量显示
            hornSwitch.Text                = device.hornSwitch ? "正常" : "不正常";
            horn.Text                      = device.hornCount.ToString() + "次";
            hornGround.Text                = device.hornGround ? "不正常" : "正常";
            upBtnSwitch.Text               = device.upBtnSwitch ? "正常" : "不正常";
            upBtnContactorCoilUpper.Text   = device.upBtnCount.ToString() + "次";
            upBtnContactorCoilDown.Text    = device.upBtnContactorCoilDown ? "不正常" : "正常";
            upBtnContactUpper.Text         = device.upBtnContactUpper ? "正常" : "不正常";
            upBtnContactDown.Text          = device.upBtnContactorCount.ToString() + "次";
            downBtnSwitch.Text             = device.downBtnSwitch ? "正常" : "不正常";
            downBtnsolenoidvalveUpper.Text = device.downBtnCount.ToString() + "次";
            downBtnsolenoidvalveDown.Text  = device.downBtnsolenoidvalveDown ? "不正常" : "正常";
            masterContactorCoilUpper.Text  = device.masterContactorCoilUpper ? "正常" : "不正常";
            masterContactorCoilDown.Text   = device.masterContactorCoilDown ? "不正常" : "正常";
            masterContactUpper.Text        = device.masterContactUpper ? "正常" : "不正常";
            masterContactDown.Text         = device.masterContactorCount.ToString() + "次";
            arresterUpper.Text             = device.arresterUpper ? "正常" : "不正常";
            arresterDown.Text              = device.arresterCount.ToString() + "次";
        }
예제 #2
0
        /// <summary>
        /// 报警检测(改成数据库较为方便)
        /// </summary>
        /// <param name="faultDevice"></param>
        /// <param name="deviceState"></param>
        public void errorCheckAndShow(ref ConcurrentDictionary <KeyValuePair <string, int>, dataStructure.faultWarnData> faultDevice, dataStructure.device deviceState)
        {
            if ((deviceState.canError & 0x0080) > 0)
            {
                int faultNumber = deviceState.canError & 0x7f;
                //faultData.faultID = deviceState.id;  //报警ID
                //faultData.faultTime = deviceState.time;//报警时间
                //faultData.runningTime = deviceState.runningTime;//运行时间
                if (faultNumber != 0)
                {
                    if (faultDevice.ContainsKey(new KeyValuePair <string, int>(deviceState.id, faultNumber)))  //如果已经有该ID的该类型报警
                    {
                        int errorState = 0;
                        if (faultDevice[new KeyValuePair <string, int>(deviceState.id, faultNumber)].errorState.LastOrDefault() == 2)
                        {
                            errorState = 0;
                        }
                        else
                        {
                            errorState = 1;
                        }
                        int errorCount = ++faultDevice[new KeyValuePair <string, int>(deviceState.id, faultNumber)].errorCount;
                        faultDevice[new KeyValuePair <string, int>(deviceState.id, faultNumber)].faultTime.Add(deviceState.time);
                        faultDevice[new KeyValuePair <string, int>(deviceState.id, faultNumber)].errorState.Add(errorState);
                        if (faultNumber == 40)
                        {
                            faultDevice[new KeyValuePair <string, int>(deviceState.id, faultNumber)].errorValue.Add(deviceState.liftMotorCurrent);
                        }
                        else
                        if (faultNumber == 41)
                        {
                            faultDevice[new KeyValuePair <string, int>(deviceState.id, faultNumber)].errorValue.Add(deviceState.liftMotorTemperature);
                        }
                        else
                        {
                            faultDevice[new KeyValuePair <string, int>(deviceState.id, faultNumber)].errorValue.Add(0);
                        }
                        // faultDevice[new KeyValuePair<string, int>(deviceState.id, faultNumber)].runningTime = deviceState.runningTime;
                        //存入储存队列
                        //   dataStructure.faultWarnData save = faultDevice[new KeyValuePair<string, int>(deviceState.id, faultNumber)];

                        this.Invoke((Action)(
                                        () =>
                        {
                            ListViewItem li = FaultWarnList.Items.Cast <ListViewItem>().FirstOrDefault(x => x.SubItems[1].Text == faultNumber.ToString());
                            if (li != null)
                            {
                                FaultWarnList.BeginUpdate();
                                li.SubItems[0].Text = deviceState.time.ToString("HH:mm:ss");
                                li.SubItems[2].Text = errorCount.ToString();
                                li.BackColor = Color.Red;
                                FaultWarnList.EndUpdate();
                            }


                            if (btnFaultWarn.Enabled == true)
                            {
                                warningTimer.Enabled = true;
                            }
                        }));
                    }
                    else
                    {
                        dataStructure.faultWarnData errorData = new dataStructure.faultWarnData();
                        errorData.faultID = deviceState.id;
                        //errorData.runningTime = deviceState.runningTime;
                        errorData.errorNumber = faultNumber;
                        errorData.faultTime   = new List <DateTime>();
                        errorData.errorValue  = new List <int>();
                        errorData.errorState  = new List <int>();
                        errorData.faultTime.Add(deviceState.time);
                        errorData.errorState.Add(0);
                        if (faultNumber == 40)
                        {
                            errorData.errorValue.Add(deviceState.liftMotorCurrent);
                        }
                        else
                        if (faultNumber == 41)
                        {
                            errorData.errorValue.Add(deviceState.liftMotorCurrent);
                        }
                        else
                        {
                            errorData.errorValue.Add(0);
                        }
                        // errorData.errorArea = dictOfIdAndArea[deviceState.id].Country;
                        //  errorData.errorContent = dataStructure.errorDictionary[errorData.errorNumber];
                        errorData.errorLevel = 1;
                        //  errorData.errorMethod = dataStructure.errorMethod[errorData.errorNumber];
                        errorData.errorCount = 1;
                        faultDevice.TryAdd(new KeyValuePair <string, int>(deviceState.id, faultNumber), errorData);

                        //报警表格中添加信息
                        ListViewItem item = new ListViewItem(deviceState.time.ToString("HH:mm:ss"));
                        item.SubItems.Add(errorData.errorNumber.ToString());
                        //item.SubItems.Add(dictOfIdAndArea[errorData.faultID].Country);
                        item.SubItems.Add(errorData.errorCount.ToString());
                        // item.SubItems.Add(errorData.runningTime.ToString());
                        item.BackColor = Color.Red;
                        this.Invoke((Action)(
                                        () => {
                            FaultWarnList.Items.Add(item);
                            if (btnFaultWarn.Enabled == true)
                            {
                                warningTimer.Enabled = true;
                            }
                        })
                                    );
                        //errorDeviceDataQueue.Enqueue(faultData);  //推入存储队列

                        //item.SubItems.Add(onlineDeviceNowTimeData["20" + deviceId].canCourse.ToString() + "公里");
                        //if (i % 2 == 0)
                        //{
                        //    item.BackColor = Color.LightSlateGray;
                        //}
                        //i++;
                        //.Items.Add(item);
                    }
                }
            }
            else
            {
                int faultNumber = deviceState.canError & 0x7f;
                int errorCount  = 0;
                if (faultDevice.ContainsKey(new KeyValuePair <string, int>(deviceState.id, faultNumber)))
                {
                    errorCount = ++faultDevice[new KeyValuePair <string, int>(deviceState.id, faultNumber)].errorCount;
                    faultDevice[new KeyValuePair <string, int>(deviceState.id, faultNumber)].faultTime.Add(deviceState.time);
                    faultDevice[new KeyValuePair <string, int>(deviceState.id, faultNumber)].errorState.Add(2);
                    if (faultNumber == 40)
                    {
                        faultDevice[new KeyValuePair <string, int>(deviceState.id, faultNumber)].errorValue.Add(deviceState.liftMotorCurrent);
                    }
                    else
                    if (faultNumber == 41)
                    {
                        faultDevice[new KeyValuePair <string, int>(deviceState.id, faultNumber)].errorValue.Add(deviceState.liftMotorTemperature);
                    }
                    else
                    {
                        faultDevice[new KeyValuePair <string, int>(deviceState.id, faultNumber)].errorValue.Add(0);
                    }
                }
                this.Invoke((Action)(
                                () => {
                    ListViewItem li = FaultWarnList.Items.Cast <ListViewItem>().FirstOrDefault(x => x.SubItems[1].Text == faultNumber.ToString());


                    if (li != null)
                    {
                        FaultWarnList.BeginUpdate();
                        li.SubItems[0].Text = deviceState.time.ToString("HH:mm:ss");
                        li.SubItems[2].Text = errorCount.ToString();
                        li.BackColor = Color.Green;
                        FaultWarnList.EndUpdate();
                    }
                })
                            );

                //ListViewItem li = FaultWarnList.Items.Cast<ListViewItem>().First(x => x.Text == deviceState.id && x.SubItems[2].Text == faultNumber.ToString());
                //li.BackColor = Color.Green;
            }
        }
예제 #3
0
        public deviceInfo(dataStructure.device device, main mainform, string lang)
        {
            language = lang;
            if (lang == "en")
            {
                Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("en");
                //对当前窗体应用更改后的资源
            }
            InitializeComponent();

            mainformhandle = mainform;
            stateid        = device.id;
            //this.Text = "编号" + device.id + "叉车信息";
            id.Text          = device.id;
            time.Text        = device.time.ToString();
            runningtime.Text = device.runningTime;
            if (device.isCanConnection == true)
            {
                if (dataStructure.errorDictionary.ContainsKey(device.canError))
                {
                    if (language == "en")
                    {
                        error.Text       = dataStructure.EnglishErrorDictionary[device.canError];
                        errormethod.Text = dataStructure.EnglishErrorMethod[device.canError];
                    }
                    else
                    {
                        error.Text       = dataStructure.errorDictionary[device.canError];
                        errormethod.Text = dataStructure.errorMethod[device.canError];
                    }

                    this.error.ForeColor       = Color.Red;
                    this.errormethod.ForeColor = Color.Red;
                }
                else
                {
                    error.Text       = " #### ";
                    errormethod.Text = " #### ";
                }
                int canReverse   = device.canDirectionandSpeedMode & 0x0004;
                int canInterlock = device.canDirectionandSpeedMode & 0x0010;
                reverse.Text   = canReverse.ToString();
                interlock.Text = canInterlock.ToString();
                int Direction = device.canDirectionandSpeedMode & 0x0003;
                int SpeedMode = device.canDirectionandSpeedMode & 0x0008;

                switch (Direction)
                {
                case 0:
                    direction.Text = (language == "en") ? "Invalid" : "无效";
                    break;

                case 1:
                    direction.Text = (language == "en") ? "Forward" : "前进";
                    break;

                case 2:
                    direction.Text = (language == "en") ? "Backward" : "后退";
                    break;

                case 3:
                    direction.Text = (language == "en")? "Invalid" : "无效";
                    break;

                default:
                    break;
                }
                if (SpeedMode == 0)
                {
                    speedmode.Text = (language == "en")? "High speed" : "高速";
                }
                else
                {
                    speedmode.Text = (language == "en") ? "Low speed" : "低速";
                }

                if (device.canLowPowerMode == 0xaa)
                {
                    lowpowermode.Text = (language == "en") ? "yes" : "低功耗";
                }
                else
                {
                    lowpowermode.Text = (language == "en") ? "no" : "其他";
                }

                speed.Text            = device.canSpeed.ToString() + "rpm";
                course.Text           = device.canCourse.ToString() + "km";
                DirectVoltage.Text    = device.canDirectVoltage.ToString() + "V";
                MotorCurrent.Text     = device.canMotorCurrent.ToString() + "A";
                MotorTemperature.Text = device.canMotorTemperature.ToString() + "°C";
            }
            else
            {
                reverse.Text          = "##";
                interlock.Text        = "##";
                error.Text            = "##";
                errormethod.Text      = "##";
                direction.Text        = "##";
                speedmode.Text        = "##";
                lowpowermode.Text     = "##";
                speed.Text            = "##";
                course.Text           = "##";
                DirectVoltage.Text    = "##";
                MotorCurrent.Text     = "##";
                MotorTemperature.Text = "##";
            }

            //模拟量数据2个
            liftMotorCurrent.Text     = device.liftMotorCurrent.ToString() + "A";
            liftMotorTemperature.Text = device.liftMotorTemperature.ToString() + "°C";
            //下面是数字量显示
            hornSwitch.Text                = device.hornSwitch ? "正常" : "不正常";
            horn.Text                      = device.hornCount.ToString() + "次";
            hornGround.Text                = device.hornGround ? "不正常" : "正常";
            upBtnSwitch.Text               = device.upBtnSwitch ? "正常" : "不正常";
            upBtnContactorCoilUpper.Text   = device.upBtnCount.ToString() + "次";
            upBtnContactorCoilDown.Text    = device.upBtnContactorCoilDown ? "不正常" : "正常";
            upBtnContactUpper.Text         = device.upBtnContactUpper ? "正常" : "不正常";
            upBtnContactDown.Text          = device.upBtnContactorCount.ToString() + "次";
            downBtnSwitch.Text             = device.downBtnSwitch ? "正常" : "不正常";
            downBtnsolenoidvalveUpper.Text = device.downBtnCount.ToString() + "次";
            downBtnsolenoidvalveDown.Text  = device.downBtnsolenoidvalveDown ? "不正常" : "正常";
            masterContactorCoilUpper.Text  = device.masterContactorCoilUpper ? "正常" : "不正常";
            masterContactorCoilDown.Text   = device.masterContactorCoilDown ? "不正常" : "正常";
            masterContactUpper.Text        = device.masterContactUpper ? "正常" : "不正常";
            masterContactDown.Text         = device.masterContactorCount.ToString() + "次";
            arresterUpper.Text             = device.arresterUpper ? "正常" : "不正常";
            arresterDown.Text              = device.arresterCount.ToString() + "次";
        }
예제 #4
0
        /// <summary>
        /// 数据解析
        /// </summary>
        /// <param name="data"></param>
        private void dataprocess(string data)
        {
            int dataHead = data.IndexOf("@");
            int dataTail = data.IndexOf("$");

            if (dataHead > dataTail)
            {
                return;
            }
            if (dataTail - dataHead < 26)   //信息不完整直接返回;
            {
                return;
            }
            string dataLenth = data.Substring(dataHead + 21, 2);
            int    dataLen   = stringToInt(dataLenth, 2);

            if (data.Length != 26 + dataLen)
            {
                return;
            }
            string dstSource = data.Substring(dataHead + 1, 4);
            string srcSource = data.Substring(dataHead + 5, 4);
            string id        = "20" + data.Substring(dataHead + 9, 10);
            string fc        = data.Substring(dataHead + 19, 2);

            string checksum    = data.Substring(dataTail - 2, 2);
            int    datacheck   = stringToInt(checksum, 2); //数据中的校验和
            string collectData = data.Substring(dataHead + 23, dataLen);
            int    check       = main.CheckSum(collectData, dataLen);

            if (check != datacheck)
            {
                return;                     //校验失败直接退出
            }
            switch (fc)
            {
            //状态采集信息处理
            case "01":

                dataStructure.device deviceState = new dataStructure.device(id, collectData);
                //推入在线设备队列
                standloneid          = deviceState.id;
                standlonerunningtime = deviceState.runningTime;
                refresh ourrefresh = new refresh(deviceInfo);
                this.Invoke(ourrefresh, deviceState);



                //}
                break;

            case "02":
                dataStructure.device FaultdeviceState = new dataStructure.device(id, collectData);
                //推入在线设备队列
                //onlineDeviceDataQueue.Enqueue(FaultdeviceState);
                //deviceStateSaveQueue.Enqueue(deviceState);
                standloneid          = FaultdeviceState.id;
                standlonerunningtime = FaultdeviceState.runningTime;
                ///检查状态信息中是否有故障
                errorCheckAndShow(ref faultDevice, FaultdeviceState);
                break;

            default:
                break;
            }

            //byte[] idchar = System.Text.Encoding.UTF8.GetBytes(id);
            //dictOfIdforClient[id].Send(idchar);
        }
예제 #5
0
        private void timer1_Tick(object sender, EventArgs e)
        {
            dataStructure.device device = mainformhandle.getNewlyDataState(stateid);
            if (device == null)
            {
                return;
            }

            id.Text          = device.id;
            time.Text        = device.time.ToString();
            runningtime.Text = device.runningTime;
            if (device.isCanConnection == true)
            {
                if (dataStructure.errorDictionary.ContainsKey(device.canError))
                {
                    if (language == "en")
                    {
                        error.Text       = dataStructure.EnglishErrorDictionary[device.canError];
                        errormethod.Text = dataStructure.EnglishErrorMethod[device.canError];
                    }
                    else
                    {
                        error.Text       = dataStructure.errorDictionary[device.canError];
                        errormethod.Text = dataStructure.errorMethod[device.canError];
                    }
                    this.error.ForeColor       = Color.Red;
                    this.errormethod.ForeColor = Color.Red;
                }
                else
                {
                    error.Text       = " #### ";
                    errormethod.Text = " #### ";
                }

                int canReverse   = device.canDirectionandSpeedMode & 0x0004;
                int canInterlock = device.canDirectionandSpeedMode & 0x0010;
                reverse.Text   = canReverse.ToString();
                interlock.Text = canInterlock.ToString();
                int Direction = device.canDirectionandSpeedMode & 0x0003;
                int SpeedMode = device.canDirectionandSpeedMode & 0x0008;

                switch (Direction)
                {
                case 0:
                    direction.Text = (language == "en") ? "Invalid" : "无效";
                    break;

                case 1:
                    direction.Text = (language == "en") ? "Forward" : "前进";
                    break;

                case 2:
                    direction.Text = (language == "en") ? "Backward" : "后退";
                    break;

                case 3:
                    direction.Text = (language == "en") ? "Invalid" : "无效";
                    break;

                default:
                    break;
                }
                if (SpeedMode == 0)
                {
                    speedmode.Text = (language == "en") ? "High speed" : "高速";
                }
                else
                {
                    speedmode.Text = (language == "en") ? "Low speed" : "低速";
                }

                if (device.canLowPowerMode == 0xaa)
                {
                    lowpowermode.Text = (language == "en") ? "yes" : "低功耗";
                }
                else
                {
                    lowpowermode.Text = (language == "en") ? "no" : "其他";
                }

                speed.Text            = device.canSpeed.ToString() + "rpm";
                course.Text           = device.canCourse.ToString() + "km";
                DirectVoltage.Text    = device.canDirectVoltage.ToString() + "V";
                MotorCurrent.Text     = device.canMotorCurrent.ToString() + "A";
                MotorTemperature.Text = device.canMotorTemperature.ToString() + "°C";
            }
            else
            {
                reverse.Text          = "##";
                interlock.Text        = "##";
                error.Text            = "##";
                errormethod.Text      = "##";
                direction.Text        = "##";
                speedmode.Text        = "##";
                lowpowermode.Text     = "##";
                speed.Text            = "##";
                course.Text           = "##";
                DirectVoltage.Text    = "##";
                MotorCurrent.Text     = "##";
                MotorTemperature.Text = "##";
            }

            //模拟量数据2个
            liftMotorCurrent.Text     = device.liftMotorCurrent.ToString() + "A";
            liftMotorTemperature.Text = device.liftMotorTemperature.ToString() + "°C";
            //下面是数字量显示
            hornSwitch.Text                = device.hornSwitch ? "正常" : "不正常";
            horn.Text                      = device.hornCount.ToString() + "次";
            hornGround.Text                = device.hornGround ? "不正常" : "正常";
            upBtnSwitch.Text               = device.upBtnSwitch ? "正常" : "不正常";
            upBtnContactorCoilUpper.Text   = device.upBtnCount.ToString() + "次";
            upBtnContactorCoilDown.Text    = device.upBtnContactorCoilDown ? "不正常" : "正常";
            upBtnContactUpper.Text         = device.upBtnContactUpper ? "正常" : "不正常";
            upBtnContactDown.Text          = device.upBtnContactorCount.ToString() + "次";
            downBtnSwitch.Text             = device.downBtnSwitch ? "正常" : "不正常";
            downBtnsolenoidvalveUpper.Text = device.downBtnCount.ToString() + "次";
            downBtnsolenoidvalveDown.Text  = device.downBtnsolenoidvalveDown ? "不正常" : "正常";
            masterContactorCoilUpper.Text  = device.masterContactorCoilUpper ? "正常" : "不正常";
            masterContactorCoilDown.Text   = device.masterContactorCoilDown ? "不正常" : "正常";
            masterContactUpper.Text        = device.masterContactUpper ? "正常" : "不正常";
            masterContactDown.Text         = device.masterContactorCount.ToString() + "次";
            arresterUpper.Text             = device.arresterUpper ? "正常" : "不正常";
            arresterDown.Text              = device.arresterCount.ToString() + "次";
        }