using EC.AutoWeightServer.IfManager.FingerPrint; using EC.AutoWeightServer.IfManager.LedZK; using EC.AutoWeightServer.IfManager.Light; using EC.AutoWeightServer.IfManager.Pos; using EC.AutoWeightServer.IfManager.Scales; using EC.AutoWeightServer.IfManager.YkPos; using EC.AutoWeightServer.Model.Config; using EC.AutoWeightServer.UI; using EC.AutoWeightServer.UI.UC; using EC.Entity.Transport; using EC.Utils; using System; using System.Collections.Generic; using System.Text; namespace EC.AutoWeightServer.Center { public class DeviceCenter { private FrmMainServer _mainServer { get; set; } internal UCLicensePlate PlateManager1 { get; set; } internal UCLicensePlate PlateManager2 { get; set; } internal UCLicensePlate PlateManager3 { get; set; } internal UCLicensePlate PlateManager4 { get; set; } /// /// 称重管理 /// internal ScalesManager ScalesManager { get; set; } /// /// 灯光控制 /// internal LightManager LightManager { get; set; } /// /// 指纹识别 /// internal FingerPrintManager FPManager { get; set; } /// /// Led控制 /// internal LedZKManager LedZKManager { get; set; } internal PosManager PosManager { get; set; } public DeviceCenter() { } public DeviceCenter(FrmMainServer mainServer) { _mainServer = mainServer; PlateManager1 = mainServer.ucLicensePlate1; PlateManager2 = mainServer.ucLicensePlate2; PlateManager3 = mainServer.ucLicensePlate3; PlateManager4 = mainServer.ucLicensePlate4; } #region Gather public void OpenDevices() { OpenCameraServer(); OpenWeightServer(); OpenLightServer(); OpenLedServer(); OpenFingerPrintServer(); //OpenYkPosServer(); OpenPosServer(); } public void CloseDevices() { //CloseCameraServer(); //CloseWeightServer(); //CloseLightServer(); //CloseLedServer(); //CloseFingerPrintServer(); //CloseYkPosServer(); //OpenPosServer(); } public void CheckDevicesConnect() { var msgList = new List(); if (!PlateManager1.IsDeviceConnected()) msgList.Add("1号摄像头未连接"); if (!PlateManager2.IsDeviceConnected()) msgList.Add("2号摄像头未连接"); if (!PlateManager3.IsDeviceConnected()) msgList.Add("3号摄像头未连接"); if (!PlateManager4.IsDeviceConnected()) msgList.Add("4号摄像头未连接"); if (ScalesManager == null || !ScalesManager.IsOpen()) msgList.Add("地磅接口未连接"); if (LightManager == null || !LightManager.IsOpen()) msgList.Add("灯光接口未连接"); if (FPManager == null || !FPManager.IsConnected()) msgList.Add("指纹接口未连接"); if (LedZKManager == null || !LedZKManager.IsConnected()) msgList.Add("Led屏未连接"); //if (!YkPosManager.IsConnected()) //{ // msgList.Add("打印接口未连接"); //} //else //{ // if (YkPosManager.IsPaperExhaust()) // msgList.Add("打印接口纸尽"); // //if (YkPosManager.IsPaperWillExhaust()) // // msgList.Add("打印接口纸将尽"); //} if (!PosManager.IsConnected()) { msgList.Add("打印接口未连接"); } else { if (PosManager.IsPaperExhaust()) msgList.Add("打印接口纸尽"); //if (YkPosManager.IsPaperWillExhaust()) // msgList.Add("打印接口纸将尽"); } var msg = string.Join("\n", msgList.ToArray()); if (!string.IsNullOrEmpty(msg)) UiExtendCenter.ShowErrorMsgBox(msg); } #endregion Gather #region CameraServer private void OpenCameraServer() { var address1 = ServerConfig.CameraAddress1; var address2 = ServerConfig.CameraAddress2; var address3 = ServerConfig.CameraAddress3; var address4 = ServerConfig.CameraAddress4; var port = ServerConfig.CameraSocketPort; var username = ServerConfig.CameraUsername; var password = ServerConfig.CameraPassword; try { PlateManager1.InitForm(address1, port, username, password); var enableOpen = PlateManager1.OpenDevice(); if (enableOpen) FileUnit.Log(address1 + "打开成功 相机1"); else FileUnit.Log(address1 + "打开失败 相机1"); PlateManager2.InitForm(address2, port, username, password); enableOpen = PlateManager2.OpenDevice(); if (enableOpen) FileUnit.Log(address2 + "打开成功 相机2"); else FileUnit.Log(address2 + "打开失败 相机2"); PlateManager3.InitForm(address3, port, username, password); enableOpen = PlateManager3.OpenDevice(); if (enableOpen) FileUnit.Log(address3 + "打开成功 相机3"); else FileUnit.Log(address3 + "打开失败 相机3"); PlateManager4.InitForm(address4, port, username, password); enableOpen = PlateManager4.OpenDevice(); if (enableOpen) FileUnit.Log(address4 + "打开成功 相机4"); else FileUnit.Log(address4 + "打开失败 相机4"); } catch (Exception ex) { LogUnit.Error(ex.Message); } } private void CloseCameraServer() { PlateManager1.CloseForm(); PlateManager2.CloseForm(); PlateManager3.CloseForm(); PlateManager4.CloseForm(); } /// /// 通过2号摄像头(入场后摄像头)拍摄照片,并返回照片路径 /// /// /// internal string GetInPicture2(string license) { return PlateManager2.GetPlatePic(license); } /// /// 通过4号摄像头(出场后摄像头)拍摄照片,并返回照片路径 /// /// /// internal string GetOutPicture2(string license) { return PlateManager4.GetPlatePic(license); } #endregion CameraServer #region ScalesManager public void OpenWeightServer() { var com = ServerConfig.WtCom; var rate = ServerConfig.WtBaudRate; var receivedBytesThreshold = ServerConfig.WtReceivedBytesThreshold; ScalesManager = new ScalesManager(com, rate, receivedBytesThreshold); ScalesManager.StartServer(); } public void CloseWeightServer() { ScalesManager?.StopServer(); ScalesManager = null; } #endregion ScalesManager #region LightManager public void OpenLightServer() { var com = ServerConfig.LightRelayCom; var rate = ServerConfig.LightRelayBaudRate; var name = ServerConfig.LightCodeName; LightManager = new LightManager(com, rate, name); LightManager.StartServer(); } public void CloseLightServer() { LightManager?.StopServer(); LightManager = null; } #endregion LightManager #region LedZKManager public void OpenLedServer() { var ip = ServerConfig.LedIp; var port = (ushort)ServerConfig.LedPort; LedZKManager = new LedZKManager(ip, port); LedZKManager.StartServer(); } public void CloseLedServer() { LedZKManager?.StopServer(); LedZKManager = null; } #endregion LedZKManager #region FingerPrintManager public void OpenFingerPrintServer() { FPManager = new FingerPrintManager(); FPManager.StartServer(); FPManager.SetVerBoxAble(true);//设置验证窗体开启 FPManager.SetVerTime(30 * 1000);//设置认证窗口超时时间 } public void CloseFingerPrintServer() { FPManager?.StopServer(); FPManager = null; } /// /// 获取特征指纹 /// /// public string GetVerFingerPrint() { var fp = string.Empty; var stat = FPManager.GetVerFingerPrint(ref fp); return stat ? fp : string.Empty; } /// /// 比对指纹 /// /// /// /// public bool MatchFingerPrint(string regFp, string verFp) { return FPManager.MatchFingerPrint(regFp, verFp); } #endregion FingerPrintManager #region YkPosManager public void OpenYkPosServer() { YkPosManager.OpenDevice(); } public void CloseYkPosServer() { YkPosManager.CloseDevice(); } /// /// 打印运单 /// /// public void PrintBill(TransportBillEntity billEntity) { if (billEntity == null) return; if (!YkPosManager.IsConnected() || YkPosManager.IsPaperExhaust()) { var msg = "打印接口纸尽,请联系管理人员"; _mainServer?.SetScrollLabelText(msg); _mainServer?.ShowRecvMessage(msg); return; } YkPosManager.InitPrinter(); var bmpPath = EnvUtil.CombinePath(EnvUtil.GetWorkDirectory(), "data", "image", "logo.bmp"); YkPosManager.SetAlign(1);//居中 YkPosManager.PrintRasterBmp(new StringBuilder(bmpPath));//打印图片 //YkPosManager.InitPrinter();//重置 //YkPosManager.SetAlign(1);//居中 YkPosManager.SetEmphasized(1);//字体加粗 //YkPosManager.SetCharSize(1,1);//字体放大 YkPosManager.PrintStr(new StringBuilder($"{_mainServer.LocalAttrCenter.Company.F_FullName}\n"));//打印公司名 YkPosManager.InitPrinter();//重置 YkPosManager.SetAlign(1);//居中 YkPosManager.PrintStr(new StringBuilder("========================================\n"));//打印分隔符 //YkPosManager.InitPrinter();//重置 YkPosManager.SetAlign(0);//居左 YkPosManager.SetLeftMargin(8 * 8, 0);//设置左边距 var content = new StringBuilder(); content.Append($"场地:\t{billEntity.SiteName}\n"); content.Append($"运单号:\t{billEntity.SerialNumber}\n"); content.Append($"供应商:\t{billEntity.SupplierName}\n"); content.Append($"运输车:\t{billEntity.LicensePlate}\n"); content.Append($"挂车:\t{billEntity.TrailerPlate}\n"); content.Append($"运输员:\t{billEntity.DriverName}\n"); content.Append($"押运员:\t{billEntity.Driver2Name}\n"); content.Append($"料号:\t{billEntity.MaterialNo}\n"); YkPosManager.PrintStr(content);//打印内容 YkPosManager.InitPrinter();//重置 YkPosManager.SetAlign(1);//居中 YkPosManager.PrintStr(new StringBuilder("----------------------------------------\n"));//打印分隔符 //YkPosManager.InitPrinter();//重置 YkPosManager.SetAlign(0);//居左 YkPosManager.SetLeftMargin(8 * 8, 0);//设置左边距 content = new StringBuilder(); content.Append($"运单重量:\t{billEntity.BillWeight}吨\n"); content.Append($"入场重量:\t{billEntity.InWeight}吨\n"); content.Append($"出场重量:\t{billEntity.OutWeight}吨\n"); content.Append($"实际重量:\t{billEntity.NetWeight}吨\n"); content.Append($"达标率:\t{billEntity.StandardRate}%\n"); content.Append($"入场时间:\t{billEntity.InStartTime:yyyy/MM/dd HH:mm:ss}\n"); content.Append($"出场时间:\t{billEntity.OutFinishTime:yyyy/MM/dd HH:mm:ss}\n"); //content.Append($"运单状态:\t{BillStateExt.GetBillStateDesc(billEntity.State)}\n"); YkPosManager.PrintStr(content);//打印内容 YkPosManager.InitPrinter();//重置 YkPosManager.SetAlign(1);//居中 YkPosManager.PrintStr(new StringBuilder("========================================\n")); //YkPosManager.InitPrinter();//重置 YkPosManager.SetAlign(2);//居右 //YkPosManager.PrintStr(new StringBuilder($"管理员:{user?.F_RealName}\n")); YkPosManager.PrintStr(new StringBuilder($"出票时间:{DateTime.Now:yyyy/MM/dd HH:mm:ss}\n"));//打印页脚 YkPosManager.FeedPaper();//走纸,留空隙 YkPosManager.CutPaper();//切纸 } #endregion YkPosManager #region PosManager public void OpenPosServer() { PosManager = new PosManager(); PosManager.OpenDevice(PosSDK.POS_PT_USB); } public void ClosePosServer() { PosManager?.CloseDevice(); PosManager = null; } public void PrintBIll(TransportBillEntity billEntity) { if (PosManager == null || billEntity == null) return; if (!PosManager.IsConnected() || PosManager.IsPaperExhaust()) { var msg = "打印接口纸尽,请联系管理人员"; _mainServer?.SetScrollLabelText(msg); _mainServer?.ShowRecvMessage(msg); return; } // 初始化 PosManager.InitPrinter(); // 打印票头 string bmpPath2 = EnvUtil.CombinePath(EnvUtil.GetWorkDirectory(), "data", "image", "logom.bmp"); if (!EnvUtil.ExistFile(bmpPath2)) { string bmpPath1 = EnvUtil.CombinePath(EnvUtil.GetWorkDirectory(), "data", "image", "logo.bmp"); PosManager.Color24_GrayBW(bmpPath1, bmpPath2); } PosManager.PrintBmp(bmpPath2); // 缓冲区 byte[] cmd = new byte[] { 0x1c, 0x26 }; PosManager.PrintData(cmd, 2); // 打印公司 PosManager.SetAlign(1); PosManager.PrintStr(0, 1, 0, 0, 0, $"{_mainServer.LocalAttrCenter.Company.F_FullName}\r\n"); // 打印分隔符 PosManager.PrintStr(0, 0, 0, 0, 0, "================================\r\n"); // 打印运单信息 PosManager.SetAlign(0);//居左 var content = new StringBuilder(); content.Append($"场地:\t{billEntity.SiteName}\n"); content.Append($"运单号:\t{billEntity.SerialNumber}\n"); content.Append($"供应商:\t{billEntity.SupplierName}\n"); content.Append($"运输车:\t{billEntity.LicensePlate}\n"); content.Append($"挂车:\t{billEntity.TrailerPlate}\n"); content.Append($"运输员:\t{billEntity.DriverName}\n"); content.Append($"押运员:\t{billEntity.Driver2Name}\n"); content.Append($"料号:\t{billEntity.MaterialNo}\n"); PosManager.PrintStr(0, 0, 0, 0, 0, content.ToString()); // 打印分隔符 PosManager.SetAlign(1); PosManager.PrintStr(0, 0, 0, 0, 0, "--------------------------------\r\n"); // 打印进出场信息 PosManager.SetAlign(0); content = new StringBuilder(); content.Append($"运单重量:\t{billEntity.BillWeight}吨\n"); content.Append($"入场重量:\t{billEntity.InWeight}吨\n"); content.Append($"出场重量:\t{billEntity.OutWeight}吨\n"); content.Append($"实际重量:\t{billEntity.NetWeight}吨\n"); content.Append($"达标率:\t{billEntity.StandardRate}%\n"); content.Append($"入场时间:\t{billEntity.InStartTime:yyyy/MM/dd HH:mm:ss}\n"); content.Append($"出场时间:\t{billEntity.OutFinishTime:yyyy/MM/dd HH:mm:ss}\n"); //content.Append($"运单状态:\t{BillStateExt.GetBillStateDesc(billEntity.State)}\n"); PosManager.PrintStr(0, 0, 0, 0, 0, content.ToString()); //打印分隔符 PosManager.SetAlign(1); PosManager.PrintStr(0, 0, 0, 0, 0, "================================\r\n"); //打印票尾 PosManager.SetAlign(2); //PosManager.PrintStr(0, 0, 0, 0, 0,$"管理员:{user?.F_RealName}\n"); PosManager.PrintStr(0, 0, 0, 0, 0, $"出票时间:{DateTime.Now:yyyy/MM/dd HH:mm:ss}\r\n"); PosManager.InitPrinter(); //切纸 PosManager.CutPaper(1, 3); } #endregion PosManager } }