using Newtonsoft.Json; using System; using ZJ_BYD.Model; namespace ZJ_BYD.Untils { public class CAN2Helper { /// /// /// /// /// /// 流水号 /// public static (bool isOk, string barCode, string msg) CanCommunication(T_MaskCode mskcode, string barCode, string num, out string _serialNum) { CAN2DeviceHelper.Instance.Run(mskcode.SoftCode, mskcode.IsSerialNum, mskcode.PartCode, mskcode.PrintBarcode, num, out _serialNum); //软件编码、引导版本号、电压上限、电压下限 string guideversion; decimal voltagemax_1; decimal voltagemin_1; decimal volt_sum = 0; try { guideversion = mskcode.GuideVersion; var voltagemax = mskcode.VoltageMax; var voltagemin = mskcode.VoltageMin; decimal.TryParse(voltagemax, out voltagemax_1); decimal.TryParse(voltagemin, out voltagemin_1); if (CAN2DeviceHelper.Instance.DeviceInfo != null && CAN2DeviceHelper.Instance.DeviceInfo.Voltage.Length >= 3) { volt_sum = Convert.ToDecimal(CAN2DeviceHelper.Instance.DeviceInfo.Voltage.Substring(0, 3).Trim()); } else { LogHelper.WriteLog($"232通讯时异常:{JsonConvert.SerializeObject(CAN2DeviceHelper.Instance.DeviceInfo)}"); } } catch (Exception ex) { var msg = ex == null ? "操作异常" : ex.Message; LogHelper.WriteLog($"打印时查询数据库中引导版本号、电压上限、电压下限异常:{msg}"); return (false, "", $"{DateTime.Now:HH:mm:ss}>>>>>一体机反馈打印时查询数据库中引导版本号、电压上限、电压下限异常:{msg}{Environment.NewLine}"); } //如果掩码表中配置了软件编码,则需要校验 if (!string.IsNullOrWhiteSpace(mskcode.SoftCode)) { //验证软件编号 if (string.IsNullOrEmpty(CAN1DeviceHelper.Instance.DeviceInfo.SoftwareCode)) { return (false, barCode, $"{DateTime.Now:HH:mm:ss}>>>>>验证设备信息失败,【软件编号】 读取为空"); } //与掩码表比对 if (mskcode.SoftCode.ToUpper() != CAN1DeviceHelper.Instance.DeviceInfo.SoftwareCode.ToUpper()) { return (false, barCode, $"{DateTime.Now:HH:mm:ss}>>>>>验证设备信息失败,【软件编号:{CAN1DeviceHelper.Instance.DeviceInfo.SoftwareCode}】与掩码表配置不一致"); } } //获取软件版本号 if (string.IsNullOrEmpty(CAN2DeviceHelper.Instance.DeviceInfo.SoftwareVersion)) { return (false, barCode, $"{DateTime.Now:HH:mm:ss}>>>>>验证设备信息失败,【软件版号本】读取为空"); } //验证引导版本 if (string.IsNullOrEmpty(CAN2DeviceHelper.Instance.DeviceInfo.GuideVersion)) { return (false, barCode, $"{DateTime.Now:HH:mm:ss}>>>>>验证设备信息失败,【引导版本】读取为空"); } if (volt_sum < voltagemin_1 || volt_sum > voltagemax_1) { return (false, barCode, $"{DateTime.Now:HH:mm:ss}>>>>>验证设备信息失败,【电压:{CAN2DeviceHelper.Instance.DeviceInfo.Voltage}】不在范围内"); } if (CAN2DeviceHelper.Instance.DeviceInfo.SoftwareVersion.Length != mskcode.SoftVersionLen) { return (false, barCode, $"{DateTime.Now:HH:mm:ss}>>>>>验证设备信息失败,【软件版本:{CAN2DeviceHelper.Instance.DeviceInfo.SoftwareVersion}】长度不对"); } //零部件号 if (CAN2DeviceHelper.Instance.DeviceInfo.PartCode.ToUpper() != mskcode.PartCode.ToUpper()) { return (false, barCode, $"{DateTime.Now:HH:mm:ss}>>>>>验证设备信息失败,【零部件号不一致:{CAN2DeviceHelper.Instance.DeviceInfo.PartCode}——{mskcode.PartCode}】"); } if (string.IsNullOrEmpty(CAN2DeviceHelper.Instance.DeviceInfo.SerialNum)) { return (false, barCode, $"{DateTime.Now:HH:mm:ss}>>>>>验证设备信息失败,【序列号】读取为空"); } LogHelper.WriteLog($"铭牌码={barCode},序列号={CAN2DeviceHelper.Instance.DeviceInfo.SerialNum}"); return (true, barCode, CAN2DeviceHelper.Instance.DeviceInfo.SoftwareVersion); } } }