/// <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 + "**"); }
/// <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); } }
/// <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 + "**"); }
/// <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); }
/// <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); }
/// <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 = ""; } } } }