diff --git a/CPF_Cef/Common/ChunkedUpload.cs b/CPF_Cef/Common/ChunkedUpload.cs index 935c3c2..3480341 100644 --- a/CPF_Cef/Common/ChunkedUpload.cs +++ b/CPF_Cef/Common/ChunkedUpload.cs @@ -98,7 +98,7 @@ namespace AksWebBrowser.Common try { var client = new HttpClient(); - var request = new HttpRequestMessage(HttpMethod.Post, "http://127.0.0.1:9399/device"); + var request = new HttpRequestMessage(HttpMethod.Post, Parame.signUrl); var content = new StringContent("{\r\n command: \"sign\",\r\n command_num: 111,\r\n data: {\r\n operation: \"open\",\r\n operation_code: 1,\r\n parameters: {\r\n data_type: 1,\r\n title_name: \"\",\r\n }\r\n }\r\n }", null, "text/plain"); request.Content = content; var response = await client.SendAsync(request); diff --git a/CPF_Cef/Devices/IDCard.cs b/CPF_Cef/Devices/IDCard.cs index 04ea872..bcfcb07 100644 --- a/CPF_Cef/Devices/IDCard.cs +++ b/CPF_Cef/Devices/IDCard.cs @@ -57,8 +57,8 @@ namespace AksWebBrowser.Devices status = LibClass.ParseIDCardPic(PHMsg, 1024, 3, FileName); if (status == 0) { - iDCardModel.ImageBase64 = "data:image/jpg;base64," + Encoding.UTF8.GetString(FileName); - + string txt = Encoding.UTF8.GetString(FileName); + iDCardModel.ImageBase64 = "data:image/jpg;base64," + txt.Substring(0, (txt.IndexOf("=") + 1)); } byte[] sCHMsg = new byte[520]; int itype = 0; @@ -76,9 +76,13 @@ namespace AksWebBrowser.Devices iDCardModel.StartDate = baseinfo[7]; iDCardModel.EndDate = baseinfo[8]; } + var OBJ = new + { + Data = iDCardModel + }; //关闭 LibClass.ICReaderClose(icdev); - return "{\"message\":\"seccse\",\"code\":\"200\",\"status\":true,\"data\":\"" + JsonConvert.SerializeObject(iDCardModel) + "\"}"; + return "{\"message\":\"seccse\",\"code\":\"200\",\"status\":true,\"data\":\"" + JsonConvert.SerializeObject(OBJ) + "\"}"; } else { diff --git a/CPF_Cef/Devices/PrintPJ.cs b/CPF_Cef/Devices/PrintPJ.cs new file mode 100644 index 0000000..fb590d8 --- /dev/null +++ b/CPF_Cef/Devices/PrintPJ.cs @@ -0,0 +1,341 @@ + +using AKSWebBrowser.Commen; +using CPF.Windows; +using System; +using System.Runtime.InteropServices; +using System.Text; + +namespace AksWebBrowser.Devices +{ + /// + /// 打印票据 + /// + public class PrintPJ + { + public static int m_iInit = -1; //打印机初始化状态 + public static int m_iStatus = -1; //打印机状态 + //语言版本 Language + public static int m_lcLanguage = 0; + private readonly string comAddr; + private readonly int port; + /// + /// 通过注入的方式传递 + /// + /// + /// + public PrintPJ(string com, int port) + { + this.comAddr = com; + this.port = port; + } + + //打印小票 + public int SendPrint(string ph, string ddrs, string qrcode, string ywmc) + { + m_iStatus = LibPrint.GetStatus(); + if (m_iStatus == 0)//打印机已连接 + { + return Print(ph, ddrs, qrcode, ywmc); + } + else + { + try + { + CheckAndOpenSerialPort(); + if (m_iInit == 0) + { + return Print(ph, ddrs, qrcode, ywmc); + } + else + { + //打印未连接 + return 2; + } + } + catch (Exception) + { + return 3; + } + } + } + + /// + /// 打印模板 + /// + /// 排号 + /// 等待人数 + /// 二维码 + /// 业务名称 + /// + public int Print(string ph, string ddrs, string qrcode, string ywmc) + { + StringBuilder sbData = new StringBuilder(""); + try + { + sbData = new StringBuilder(string.Format(" 您预约办理的{0}业务-,排号为:", ywmc)); + LibPrint.SetClean(); + LibPrint.SetReadZKmode(0); + LibPrint.SetAlignment(0); + LibPrint.SetSizetext(2, 1); + LibPrint.SetLinespace(20); + LibPrint.PrintString(sbData, 0); + + //排号 + LibPrint.SetAlignment(1); + LibPrint.SetBold(1); + LibPrint.SetSizetext(2, 2); + sbData = new StringBuilder(ph); + LibPrint.PrintString(sbData, 0); + + LibPrint.SetAlignment(0); + LibPrint.SetBold(0); + LibPrint.SetSizetext(2, 1); + LibPrint.PrintFeedDot(10); + + //等候 + sbData = new StringBuilder(string.Format("您前面有 {0} 人等候,注意业务窗口的呼叫号码信息。过号请重新取号。", ddrs)); + LibPrint.PrintString(sbData, 1); + LibPrint.PrintFeedDot(60); + + //二维码 + LibPrint.SetClean(); + LibPrint.SetCommandmode(10); + LibPrint.SetAlignment(1); + LibPrint.SetLeftmargin(-60); + sbData = new StringBuilder(qrcode); + LibPrint.PrintQrcode(sbData, 2, 6, 1); + LibPrint.PrintRemainQR(); + LibPrint.PrintFeedDot(100); + + //时间 + LibPrint.SetClean(); + LibPrint.SetSizetext(0, 0); + LibPrint.SetAlignment(2); + sbData = new StringBuilder(DateTime.Now.ToLocalTime().ToString()); + LibPrint.PrintString(sbData, 1); + LibPrint.PrintFeedDot(190); + LibPrint.PrintFeedDot(200); + LibPrint.PrintCutpaper(0); + } + catch (Exception ex) + { + return 1; + } + return 0; + } + + //开启打印 + public void CheckAndOpenSerialPort() + { + //关闭打印机 + try { LibPrint.SetClose(); } catch (Exception ex) { Console.WriteLine("打印机未开启:" + ex.Message); } + try + { + byte[] cDevname = Encoding.UTF8.GetBytes(comAddr); + int iBaudrate = port; + //打开连接 + m_iInit = LibPrint.SetDevname(1, cDevname, iBaudrate); + if (m_iInit == 0) { + Log.Info("热敏打印机已连接"); + //初始化打印机 + m_iInit = LibPrint.SetInit(); + if (m_iInit == 0) + { + Log.Info("初始化成功"); + LibPrint.SetCommandmode(3); + } + else + { + Log.Info("初始化失败"); + } + } + } + catch (Exception ex) { Console.WriteLine("票据打印机初始化异常:" + ex.Message); } + } + } + + class LibPrint + { + + [DllImport("libmsprintsdk", EntryPoint = "SetInit", CharSet = CharSet.Ansi)] + public static extern int SetInit(); + + [DllImport("libmsprintsdk", EntryPoint = "SetUsbportauto", CharSet = CharSet.Ansi)] + public static extern int SetUsbportauto(); + + [DllImport("libmsprintsdk", EntryPoint = "SetClean", CharSet = CharSet.Ansi)] + public static extern int SetClean(); + + [DllImport("libmsprintsdk", EntryPoint = "SetClose", CharSet = CharSet.Ansi)] + public static extern int SetClose(); + + [DllImport("libmsprintsdk", EntryPoint = "SetAlignment", CharSet = CharSet.Ansi)] + public static extern int SetAlignment(int iAlignment); + + [DllImport("libmsprintsdk", EntryPoint = "SetAlignmentLeftRight", CharSet = CharSet.Ansi)] + public static extern int SetAlignmentLeftRight(int iAlignment); + + [DllImport("libmsprintsdk", EntryPoint = "SetBold", CharSet = CharSet.Ansi)] + public static extern int SetBold(int iBold); + + [DllImport("libmsprintsdk", EntryPoint = "SetCommandmode", CharSet = CharSet.Ansi)] + public static extern int SetCommandmode(int iMode); + + [DllImport("libmsprintsdk", EntryPoint = "SetLinespace", CharSet = CharSet.Ansi)] + public static extern int SetLinespace(int iLinespace); + //设置设备名称(Linux) + [DllImport("libmsprintsdk", EntryPoint = "SetDevname", CharSet = CharSet.Ansi)] + public static extern int SetDevname(int iDevtype, byte[] cDevname, int iBaudrate); + + [DllImport("libmsprintsdk", EntryPoint = "PrintString", CharSet = CharSet.Ansi)] + public static extern int PrintString(StringBuilder strData, int iImme); + + [DllImport("libmsprintsdk", EntryPoint = "PrintFeedline", CharSet = CharSet.Ansi)] + public static extern int PrintFeedline(int iLine); + + [DllImport("libmsprintsdk", EntryPoint = "PrintSelfcheck", CharSet = CharSet.Ansi)] + public static extern int PrintSelfcheck(); + + [DllImport("libmsprintsdk", EntryPoint = "GetStatus", CharSet = CharSet.Ansi)] + public static extern int GetStatus(); + + [DllImport("libmsprintsdk", EntryPoint = "GetStatusspecial", CharSet = CharSet.Ansi)] + public static extern int GetStatusspecial(); + + [DllImport("libmsprintsdk", EntryPoint = "PrintCutpaper", CharSet = CharSet.Ansi)] + public static extern int PrintCutpaper(int iMode); + + [DllImport("libmsprintsdk", EntryPoint = "SetSizetext", CharSet = CharSet.Ansi)] + public static extern int SetSizetext(int iHeight, int iWidth); + + [DllImport("libmsprintsdk", EntryPoint = "SetSizechinese", CharSet = CharSet.Ansi)] + public static extern int SetSizechinese(int iHeight, int iWidth, int iUnderline, int iChinesetype); + + [DllImport("libmsprintsdk", EntryPoint = "SetItalic", CharSet = CharSet.Ansi)] + public static extern int SetItalic(int iItalic); + + [DllImport("libmsprintsdk", EntryPoint = "PrintDiskbmpfile", CharSet = CharSet.Ansi)] + public static extern int PrintDiskbmpfile(StringBuilder strData); + + [DllImport("libmsprintsdk", EntryPoint = "PrintDiskimgfile", CharSet = CharSet.Ansi)] + public static extern int PrintDiskimgfile(StringBuilder strData); + + [DllImport("libmsprintsdk", EntryPoint = "PrintQrcode", CharSet = CharSet.Ansi)] + public static extern int PrintQrcode(StringBuilder strData, int iLmargin, int iMside, int iRound); + + [DllImport("libmsprintsdk", EntryPoint = "PrintRemainQR", CharSet = CharSet.Ansi)] + public static extern int PrintRemainQR(); + + [DllImport("libmsprintsdk", EntryPoint = "SetLeftmargin", CharSet = CharSet.Ansi)] + public static extern int SetLeftmargin(int iLmargin); + + [DllImport("libmsprintsdk", EntryPoint = "GetProductinformation", CharSet = CharSet.Ansi)] + public static extern int GetProductinformation(int Fstype, byte[] FIDdata, int iFidlen); + + [DllImport("libmsprintsdk", EntryPoint = "PrintTransmit", CharSet = CharSet.Ansi)] + public static extern int PrintTransmit(byte[] strCmd, int iLength); + + [DllImport("libmsprintsdk", EntryPoint = "GetTransmit", CharSet = CharSet.Ansi)] + public static extern int GetTransmit(byte[] strCmd, int iLength, byte[] bRecv, int iRelen); + + + [DllImport("libmsprintsdk", EntryPoint = "PrintFeedDot", CharSet = CharSet.Ansi)] + public static extern int PrintFeedDot(int Lnumber); + + [DllImport("libmsprintsdk", EntryPoint = "PrintChargeRow", CharSet = CharSet.Ansi)] + public static extern int PrintChargeRow(); + + [DllImport("libmsprintsdk", EntryPoint = "SetSpacechar", CharSet = CharSet.Ansi)] + public static extern int SetSpacechar(int iSpace); + + [DllImport("libmsprintsdk", EntryPoint = "SetSizechar", CharSet = CharSet.Ansi)] + public static extern int SetSizechar(int iHeight, int iWidth, int iUnderline, int iAsciitype); + + [DllImport("libmsprintsdk", EntryPoint = "SetRotate", CharSet = CharSet.Ansi)] + public static extern int SetRotate(int iRotate); + + [DllImport("libmsprintsdk", EntryPoint = "SetDirection", CharSet = CharSet.Ansi)] + public static extern int SetDirection(int iDirection); + + [DllImport("libmsprintsdk", EntryPoint = "SetWhitemodel", CharSet = CharSet.Ansi)] + public static extern int SetWhitemodel(int iWhite); + + [DllImport("libmsprintsdk", EntryPoint = "SetUnderline", CharSet = CharSet.Ansi)] + public static extern int SetUnderline(int underline); + + [DllImport("libmsprintsdk", EntryPoint = "PrintNextHT", CharSet = CharSet.Ansi)] + public static extern int PrintNextHT(); + + [DllImport("libmsprintsdk", EntryPoint = "SetHTseat", CharSet = CharSet.Ansi)] + public static extern int SetHTseat(byte[] bHTseat, int iLength); + + [DllImport("libmsprintsdk", EntryPoint = "SetCodepage", CharSet = CharSet.Ansi)] + public static extern int SetCodepage(int country, int CPnumber); + + [DllImport("libmsprintsdk", EntryPoint = "Print1Dbar", CharSet = CharSet.Ansi)] + public static extern int Print1Dbar(int iWidth, int iHeight, int iHrisize, int iHriseat, int iCodetype, StringBuilder strData); + + [DllImport("libmsprintsdk", EntryPoint = "SetPagemode", CharSet = CharSet.Ansi)] + public static extern int SetPagemode(int iMode, int Xrange, int Yrange); + + [DllImport("libmsprintsdk", EntryPoint = "SetPagestartposition", CharSet = CharSet.Ansi)] + public static extern int SetPagestartposition(int Xdot, int Ydot); + + [DllImport("libmsprintsdk", EntryPoint = "SetPagedirection", CharSet = CharSet.Ansi)] + public static extern int SetPagedirection(int iDirection); + + [DllImport("libmsprintsdk", EntryPoint = "PrintPagedata", CharSet = CharSet.Ansi)] + public static extern int PrintPagedata(); + + [DllImport("libmsprintsdk", EntryPoint = "SetReadZKmode", CharSet = CharSet.Ansi)] + public static extern int SetReadZKmode(int mode); + + [DllImport("libmsprintsdk", EntryPoint = "SetNvbmp", CharSet = CharSet.Ansi)] + public static extern int SetNvbmp(int iNums, StringBuilder strPath); + + [DllImport("libmsprintsdk", EntryPoint = "PrintNvbmp", CharSet = CharSet.Ansi)] + public static extern int PrintNvbmp(int iNvindex, int iMode); + + [DllImport("libmsprintsdk", EntryPoint = "SetPrintIDorName", CharSet = CharSet.Ansi)] + public static extern int SetPrintIDorName(StringBuilder strIDorNAME); + + [DllImport("libmsprintsdk", EntryPoint = "GetPrintIDorName", CharSet = CharSet.Ansi)] + public static extern int GetPrintIDorName(StringBuilder strIDorNAME); + + + [DllImport("libmsprintsdk", EntryPoint = "PrintMarkcutpaper", CharSet = CharSet.Ansi)] + public static extern int PrintMarkcutpaper(int iMode); + + [DllImport("libmsprintsdk", EntryPoint = "SetTraceLog", CharSet = CharSet.Ansi)] + public static extern int SetTraceLog(int iLog); + + [DllImport("libmsprintsdk", EntryPoint = "PrintPdf417", CharSet = CharSet.Ansi)] + public static extern int PrintPdf417(int iDotwidth, int iDotheight, int iDatarows, int iDatacolumns, StringBuilder strData); + + //旋转模式 + [DllImport("libmsprintsdk", EntryPoint = "SetRotation_Intomode", CharSet = CharSet.Ansi)] + public static extern int SetRotation_Intomode(); + + [DllImport("libmsprintsdk", EntryPoint = "SetRotation_Leftspace", CharSet = CharSet.Ansi)] + public static extern int SetRotation_Leftspace(int iLeftspace); + + [DllImport("libmsprintsdk", EntryPoint = "PrintRotation_Sendcode", CharSet = CharSet.Ansi)] + public static extern int PrintRotation_Sendcode(int leftspace, int iWidth, int iHeight, int iCodetype, StringBuilder strData); + + [DllImport("libmsprintsdk", EntryPoint = "PrintRotation_Sendtext", CharSet = CharSet.Ansi)] + public static extern int PrintRotation_Sendtext(StringBuilder strData, int iImme); + + [DllImport("libmsprintsdk", EntryPoint = "PrintRotation_Changeline", CharSet = CharSet.Ansi)] + public static extern int PrintRotation_Changeline(); + + [DllImport("libmsprintsdk", EntryPoint = "PrintRotation_Data", CharSet = CharSet.Ansi)] + public static extern int PrintRotation_Data(); + + + [DllImport("libmsprintsdk", EntryPoint = "PrintPDF_CCCB", CharSet = CharSet.Ansi)] + public static extern int PrintPDF_CCCB(StringBuilder strData); + + [DllImport("libmsprintsdk", EntryPoint = "PrintDataMatrix", CharSet = CharSet.Ansi)] + public static extern int PrintDataMatrix(StringBuilder strData, int iSize); + } +} diff --git a/CPF_Cef/MainModel.cs b/CPF_Cef/MainModel.cs index 0e5fbc0..1769ce0 100644 --- a/CPF_Cef/MainModel.cs +++ b/CPF_Cef/MainModel.cs @@ -39,7 +39,6 @@ namespace AKS.EnterpriseLibrary.WebBrowser public static Process Typrocess; public TcpClients tcpClients = new TcpClients(); public SignDll sign = new SignDll(); - public bool isStart = true; /// /// 读取身份证卡号 @@ -53,6 +52,7 @@ namespace AKS.EnterpriseLibrary.WebBrowser { IDCard iDCard = new IDCard(); string result = iDCard.getIdCard(); + Log.Info(result); SubmitLogs(result, "IDCardRead"); return result; } @@ -78,28 +78,27 @@ namespace AKS.EnterpriseLibrary.WebBrowser { try { - if (isStart) - { - return "{\"message\":\"success\",\"code\":\"200\",\"status\":true,\"data\":\"" + "打印成功" + "\"}"; - } if (!isFuncisFuncObject("SendByPrint")) { Utils.MessagesBox("打印排队票据设备未授权使用"); return "{\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + "打印排队票据设备未授权使用" + "\"}"; } - else if (Parame.tcpClient == null) - { - return "{\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + "硬件服务未启动" + "\"}"; - } else { - string paramsString = "{\"callback\":\"" + callback + "\",\"type\":\"2\",\"param\":{\"ph\":\"" + ph + "\",\"ddrs\":\"" + ddrs + "\",\"qrcode\":\"" + qrcode + "\",\"ywmc\":\"" + ywmc + "\"}}"; - //Log.Info("打印排队票据: " + paramsString + ""); - string base64 = str2Base64(paramsString); - string str = tcpClients.SendDataWithHeader(Parame.tcpClient.GetStream(), base64); - string result = Base64str2(str); - SubmitLogs(result, "SendByPrint"); - return result; + PrintPJ print = new PrintPJ(Parame.pritPj, Parame.pritPjPort); + var data = print.SendPrint(ph, ddrs, qrcode, ywmc); + if (data == 0) + { + string result = "{\"message\":\"seccse\",\"code\":\"200\",\"status\":true,\"data\":\"" + "打印成功" + "\"}"; + SubmitLogs(result, "SendByPrint"); + return result; + } + else + { + string result = "{\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + (data == 1 ? "打印失败" : (data == 2 ? "打印机未连接" : "打印机初始化失败")) + "\"}"; + SubmitLogs(result, "SendByPrint"); + return result; + } } } catch (Exception ex) @@ -356,7 +355,7 @@ namespace AKS.EnterpriseLibrary.WebBrowser } else { - + sign.OpenComDevice(callback); string result = "{\"callback\":\"" + callback + "\",\"message\":\"success\",\"code\":\"200\",\"status\":true,\"suffix\":\"png\",\"data\":\"" + "成功" + "\"}"; SubmitLogs(result, "OpenSign"); @@ -1060,7 +1059,7 @@ namespace AKS.EnterpriseLibrary.WebBrowser public string GetSignBase64() { //获取设备信息 - + Task.Run(() => HttpPostResponseBySign()); @event6.WaitOne(); if (string.IsNullOrEmpty(qzbStr)) diff --git a/CPF_Cef/Parame.cs b/CPF_Cef/Parame.cs index 3744879..a61ca29 100644 --- a/CPF_Cef/Parame.cs +++ b/CPF_Cef/Parame.cs @@ -21,6 +21,11 @@ namespace AksWebBrowser public static string Ip = "192.168.1.166"; //高拍仪url public static string gpyUrl = "http://127.0.0.1:6543"; + //签字版 + public static string signUrl = "http://127.0.0.1:9399/device"; + //票据打印机 + public static string pritPj = "/dev/ttyUSB7"; + public static int pritPjPort = 38400; } public struct Func {