Пример #1
0
        /// <summary>
        /// 写单个寄存器
        /// </summary>
        /// <param name="beginAddress">地址</param>
        /// <param name="values">值</param>
        /// <returns></returns>
        public string WriteSingleD(int beginAddress, int values)
        {
            string address    = "%01#WDD";
            string writeValue = DecimalConversion.Ten2Hex(values.ToString()).PadLeft(4, '0');

            address  = address + beginAddress.ToString().PadLeft(5, '0') + beginAddress.ToString().PadLeft(5, '0');
            address += writeValue.Substring(2, 2) + writeValue.Substring(0, 2);
            return(address + "**");
        }
Пример #2
0
        /// <summary>
        /// 解析一个寄存器数据
        /// </summary>
        /// <param name="rev"></param>
        /// <returns></returns>
        public int DTDatalearningOne(string rev)
        {
            if (string.IsNullOrEmpty(rev))
            {
                return(-1);
            }
            rev = rev.Replace("\r", "");
            string ss = HexStr(rev);

            return(DecimalConversion.HexToTen(ss.Substring((0) + 2, 2) + ss.Substring((0), 2)));
        }
        public void ConvertFromDecimalTest()
        {
            for (int i = 0; i < bufferValues.Length; i++)
            {
                decimal decimalValue  = decimalValues[i];
                string  expectedValue = bufferValues[i];

                byte[] outputValue = DecimalConversion.ConvertDecimalToBytes(decimalValue);
                Assert.Equal(expectedValue, BitConverter.ToString(outputValue).Replace("-", ""));
            }
        }
        public void ConvertFromBytesTest()
        {
            for (int i = 0; i < bufferValues.Length; i++)
            {
                string  hexData       = bufferValues[i];
                decimal expectedValue = decimalValues[i];

                decimal outputValue = DecimalConversion.ConvertToLogicalValue(FromHexString(hexData), scales[i]);
                Assert.Equal(expectedValue, outputValue);
            }
        }
Пример #5
0
        /// <summary>
        /// 写入多个寄存器
        /// </summary>
        /// <param name="beginAddress"></param>
        /// <param name="endAddress"></param>
        /// <param name="values"></param>
        /// <returns></returns>
        public string WriteMultiDAddress(int beginAddress, List <string> values)
        {
            string address = "%01#WDD";// "%01#RDD0030100309**";

            //string writeValue = DecimalConversion.Ten2Hex(values.ToString()).PadLeft(4, '0');
            address = address + beginAddress.ToString().PadLeft(5, '0') + (beginAddress + values.Count).ToString().PadLeft(5, '0');
            for (int i = 0; i < values.Count; i++)
            {
                string value = DecimalConversion.Ten2Hex(values[i]).PadLeft(4, '0');
                address += value.Substring(2, 2) + value.Substring(0, 2);
            }
            return(address + "**");
        }
Пример #6
0
        /// <summary>
        /// 解析寄存器读取的值
        /// </summary>
        /// <param name="rev"></param>
        /// <returns></returns>
        public List <string> ReadDTValue(string rev)
        {
            List <string> list = new List <string>();

            //地址 %01#RDD0030100309**
            rev = DTValues(rev);
            for (int i = 0; i < rev.Length / 2; i++)
            {
                string str = rev.Substring(i * 2, 2);
                list.Add(DecimalConversion.HexStringToASCII(str));
            }
            return(list);
        }
Пример #7
0
        /// <summary>
        /// 多个寄存器数据解析
        /// </summary>
        /// <param name="rev"></param>
        /// <returns></returns>
        public List <string> DTDatalearning(string rev)
        {
            List <string> Data = new List <string>();

            if (string.IsNullOrEmpty(rev))
            {
                return(Data);
            }
            rev = rev.Replace("\r", "");
            string ss        = HexStr(rev);
            string highOrder = "";
            string lowOrder  = "";

            for (int i = 0; i < ss.Length / 4; i++)
            {
                highOrder = ss.Substring((i * 4), 2);     //高位数据  09100910
                lowOrder  = ss.Substring((i * 4) + 2, 2); //低位数据
                Data.Add(DecimalConversion.HexToTen(lowOrder + highOrder).ToString());
            }
            return(Data);
        }
Пример #8
0
        /// <summary>
        ///  霍尼韦尼扫码返回  例如炉门41 67 69 6E 67 30 30 34 0D (30 30 34为有效数字)
        /// </summary>
        /// <param name="NewData"></param>
        public void UpdateRecevie(string NewData)
        {
            string Value        = "";
            string ValueAddress = "";
            int    Address      = 0;

            if (this.InvokeRequired)//等待异步
            {
                UpdateString _myInvoke = new UpdateString(UpdateRecevie);
                this.Invoke(_myInvoke, new object[] { NewData });
            }
            else
            {
                NewData = NewData.Replace(" ", ""); //剔除空格
                if (NewData.Length == 18)           //当前扫码到的值为炉门号41 67 69 6E 67 30 30 34 0D
                {
                    Value = InterceptStringHelp.ExtractString(NewData, 10, 6);
                    for (int i = 0; i < Value.Length / 2; i++)
                    {
                        Address       = DecimalConversion.HexToTen(NewData.Substring(10 + (i * 2), 2)); // 十六进制转10进制
                        ValueAddress += ((char)Address).ToString();                                     // 十进制转acsii码
                    }
                    if (SySetHeip.Prefix.Trim() + ValueAddress == "L10001")                             //扫到哪一个炉门,自动选择该门
                    {
                        OperateShow.Text = "当前1号门操作";
                        DictionaryHelp.Dictionary["Operater1"]();
                    }
                    else if (SySetHeip.Prefix.Trim() + ValueAddress == "L10002")
                    {
                        OperateShow.Text = "当前2号门操作";
                        DictionaryHelp.Dictionary["Operater2"]();
                    }
                    else if (SySetHeip.Prefix.Trim() + ValueAddress == "L10003")
                    {
                        OperateShow.Text = "当前3号门操作";
                        DictionaryHelp.Dictionary["Operater3"]();
                    }
                    else if (SySetHeip.Prefix.Trim() + ValueAddress == "L10004")
                    {
                        OperateShow.Text = "当前4号门操作";
                        DictionaryHelp.Dictionary["Operater4"]();
                    }
                    else if (SySetHeip.Prefix.Trim() + ValueAddress == "L10005")
                    {
                        OperateShow.Text = "当前5号门操作";
                        DictionaryHelp.Dictionary["Operater5"]();
                    }
                    else if (SySetHeip.Prefix.Trim() + ValueAddress == "L10006")
                    {
                        OperateShow.Text = "当前6号门操作";
                        DictionaryHelp.Dictionary["Operater6"]();
                    }
                    else if (SySetHeip.Prefix.Trim() + ValueAddress == "L10007")
                    {
                        OperateShow.Text = "当前7号门操作";
                        DictionaryHelp.Dictionary["Operater7"]();
                    }
                    else if (SySetHeip.Prefix.Trim() + ValueAddress == "L10008")
                    {
                        OperateShow.Text = "当前8号门操作";
                        DictionaryHelp.Dictionary["Operater8"]();
                    }
                }
                if (NewData.Length == 14)//当前扫码到的值为小车号  小车条码号4C31303031320D
                {
                    Value = InterceptStringHelp.ExtractString(NewData, 6, 6);;
                    for (int i = 0; i < Value.Length / 2; i++)
                    {
                        Address       = DecimalConversion.HexToTen(NewData.Substring(6 + (i * 2), 2)); // 十六进制转10进制
                        ValueAddress += ((char)Address).ToString();                                    // 十进制转acsii码
                    }
                    if (!string.IsNullOrEmpty(BarCode1.Text) && !string.IsNullOrEmpty(BarCode2.Text))
                    {
                        BarCode1.Text = "";
                        BarCode2.Text = "";
                    }
                    if (string.IsNullOrEmpty(BarCode1.Text))
                    {
                        BarCode1.Text = SySetHeip.Prefix.Trim() + ValueAddress;
                        ValueAddress  = "";
                    }
                    else
                    {
                        BarCode2.Text = SySetHeip.Prefix.Trim() + ValueAddress;
                        ValueAddress  = "";
                    }
                    if (BarCode1.Text == BarCode2.Text)
                    {
                        Common.Msg.Warning("不能绑定两个相同的条码");
                        BarCode2.Text = "";
                    }
                }
            }
        }