| | |
| | | #endregion |
| | | |
| | | string pcHead = ""; |
| | | string pcTail = ""; |
| | | string cpHead = ""; |
| | | string cpTail = ""; |
| | | string mtHead = "";// 设备的真实物料编码 |
| | | |
| | | #region 35~54 => 41~60 产品批次号 |
| | |
| | | CMMLog.Info($"41~60data1_1:{data}"); |
| | | if (data.Length % 2 != 0) |
| | | { |
| | | data = "0" + machineInfoTwo.lotNo; |
| | | pcHead = "" + machineInfoTwo.lotNo.Substring(0, 1); |
| | | //data = "0" + machineInfoTwo.lotNo; |
| | | //pcHead = "" + machineInfoTwo.lotNo.Substring(0, 1); |
| | | |
| | | pcTail = machineInfoTwo.lotNo.Substring(data.Length - 1, 1) + ""; |
| | | CMMLog.Info($"pcTail:{pcTail}"); |
| | | data = machineInfoTwo.lotNo + " "; |
| | | } |
| | | CMMLog.Info($"41~60data1_2:{data}"); |
| | | //字符串长度 / 2 = 写入通道数量(两位一转) 列: 3L0050 写入三个通道 |
| | | int maxLength = 34 + (data.Length / 2);// data.Length / 2 至少为 1 |
| | | int maxLength2 = maxLength; |
| | | int aa = 0; |
| | | for (int i = 35; i <= maxLength; i++) |
| | | { |
| | |
| | | aa = aa + 2; |
| | | } |
| | | for (int x = maxLength + 1; x <= 54; x++) num[x] = 0;//将产品批次号无数据的通道全部置为 0 |
| | | CMMLog.Info($"num:{JsonConvert.SerializeObject(num)}"); |
| | | #endregion |
| | | |
| | | #region 55~64 => 61~70 产品型号(四钴产品型号有中文和英文) |
| | | |
| | | int maxLength3 = 0; |
| | | if (Regex.IsMatch(ErpItemInfo.item_spec, @"[\u4e00-\u9fff]")) |
| | | { |
| | | ERPService.HandleItemInfoChina(ErpItemInfo.item_spec, 55, 64, num);// 中文处理 55~64 61~70 |
| | | } |
| | | else |
| | | { |
| | | ERPService.HandleItemInfo(ErpItemInfo.item_spec, 55, 64, num); |
| | | data = ErpItemInfo.item_spec; |
| | | CMMLog.Info($"61~70data1_1:{data}"); |
| | | if (data.Length % 2 != 0) |
| | | { |
| | | //data = "0" + machineInfoTwo.lotNo; |
| | | //pcHead = "" + machineInfoTwo.lotNo.Substring(0, 1); |
| | | |
| | | cpTail = ErpItemInfo.item_spec.Substring(data.Length - 1, 1) + ""; |
| | | CMMLog.Info($"cpTail:{cpTail}"); |
| | | data = ErpItemInfo.item_spec + " "; |
| | | } |
| | | CMMLog.Info($"61~70data1_2:{data}"); |
| | | //字符串长度 / 2 = 写入通道数量(两位一转) 列: 3L0050 写入三个通道 |
| | | maxLength = 54 + (data.Length / 2);// data.Length / 2 至少为 1 |
| | | maxLength3 = maxLength; |
| | | aa = 0; |
| | | for (int i = 55; i <= maxLength; i++) |
| | | { |
| | | num[i] = int.Parse(AsciiToTen(data.Substring(aa, 2))); |
| | | aa = aa + 2; |
| | | } |
| | | for (int x = maxLength3 + 1; x <= 64; x++) num[x] = 0;//将产品批次号无数据的通道全部置为 0 |
| | | CMMLog.Info($"num:{JsonConvert.SerializeObject(num)}"); |
| | | |
| | | //ERPService.HandleItemInfo(ErpItemInfo.item_spec, 55, 64, num); |
| | | } |
| | | |
| | | |
| | |
| | | ERPService.HandleItemInfo(ErpItemInfo.item_uom, 100, 104, num);// 100~104 106~110 |
| | | |
| | | // 如果 产品批次号 或者 产品型号 位数 为 奇数,则将提前取出的 首字符 重新转码 写入 其所对应通道区域的 首通道 |
| | | if (pcHead != "") num[35] = int.Parse(AsciiToTen(pcHead)); |
| | | if (cpHead != "") num[55] = int.Parse(AsciiToTen(cpHead)); |
| | | //if (pcHead != "") num[35] = int.Parse(AsciiToTen(pcHead)); |
| | | if (pcTail != "") num[maxLength2] = tailToTen(pcTail); |
| | | //if (cpHead != "") num[55] = int.Parse(AsciiToTen(cpHead)); |
| | | if (cpHead != "") num[maxLength3] = int.Parse(AsciiToTen(cpTail)); |
| | | if (mtHead != "") num[65] = int.Parse(AsciiToTen(mtHead)); |
| | | if (pcHead != "" || cpHead != "") CMMLog.Info($"产品型号或批次号数量为奇数,特将首位取出单独处理,以下为批次号和产品型号的十进制数值{num[35]},{num[55]}"); |
| | | |
| | |
| | | return num; |
| | | } |
| | | |
| | | private static int tailToTen(string Tail) |
| | | { |
| | | char inputChar = Tail[0]; // 获取字符串的第一个字符 |
| | | int asciiValue = (int)inputChar; // 转换为ASCII码 |
| | | string hexValue = asciiValue.ToString("X2"); // 转换为16进制 |
| | | string binaryValue = Convert.ToString(asciiValue, 2).PadLeft(8, '0'); // 转换为8位二进制 |
| | | string finalBinaryValue = binaryValue + "00000000"; // 补8个二进制0 |
| | | int finalDecimalValue = Convert.ToInt32(finalBinaryValue, 2); // 转换为10进制 |
| | | |
| | | return finalDecimalValue; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 三楼叠托机扫码 |
| | | /// </summary> |