Browse Source

身份证国产化

master
胡超1 1 year ago
parent
commit
f050d2e0d7
  1. 2
      CPF_Cef/AKS.EnterpriseLibrary.WebBrowser.csproj
  2. 62
      CPF_Cef/Common/ChunkedUpload.cs
  3. 27
      CPF_Cef/Common/IDCardModel.cs
  4. 10
      CPF_Cef/Common/Utils.cs
  5. 206
      CPF_Cef/Devices/IDCard.cs
  6. 286
      CPF_Cef/Devices/SignDll.cs
  7. 452
      CPF_Cef/MainModel.cs
  8. 2
      CPF_Cef/Parame.cs

2
CPF_Cef/AKS.EnterpriseLibrary.WebBrowser.csproj

@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<OutputType>WinExe</OutputType> <OutputType>WinExe</OutputType>

62
CPF_Cef/Common/ChunkedUpload.cs

@ -9,6 +9,8 @@ using System.Net.Http.Headers;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using CPF.Controls; using CPF.Controls;
using AKSWebBrowser.Commen;
using System.Collections;
namespace AksWebBrowser.Common namespace AksWebBrowser.Common
{ {
@ -54,5 +56,65 @@ namespace AksWebBrowser.Common
} }
return ret; return ret;
} }
/// <summary>
/// get请求 Task<string>
/// </summary>
/// <returns></returns>
public async Task<string> getReq(string query)
{
string ret = string.Empty;
using (var httpClient = new HttpClient())
{
// 构建带参数的请求URI
var uri = Parame.gpyUrl + query;
try
{
// 发送GET请求
HttpResponseMessage response = await httpClient.GetAsync(uri);
response.EnsureSuccessStatusCode();
if (response.StatusCode.ToString() == "OK")
{
// 读取响应内容
string body = await response.Content.ReadAsStringAsync();
ret = body;
}
}
catch (HttpRequestException e)
{
Log.Error(" get请求: " + e.Message);
}
}
return ret;
}
/// <summary>
/// 获取签字版数据
/// </summary>
/// <returns></returns>
public async Task<string> PostSign() {
string ret = string.Empty;
try
{
var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post, "http://127.0.0.1:9399/device");
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);
response.EnsureSuccessStatusCode();
if (response.StatusCode.ToString() == "OK")
{
// 读取响应内容
string body = await response.Content.ReadAsStringAsync();
ret = body;
}
}
catch (Exception ex)
{
Log.Error("签字版post请求: " + ex.Message);
}
return ret;
}
} }
} }

27
CPF_Cef/Common/IDCardModel.cs

@ -0,0 +1,27 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AksWebBrowser.Common
{
public class IDCardModel
{
public string Name { get; set; }
public string Sex { get; set; }
public string Nation_Code { get; set; }
public string Nation { get; set; }
public string Id { get; set; }
public string BirthDay { get; set; }
public string Addr { get; set; }
public string Regorg { get; set; }
public string StartDate { get; set; }
public string EndDate { get; set; }
public string Reserv { get; set; }
public string WltFileName { get; set; }
public string BmpFilePath { get; set; }
public string Status { get; set; }
public string ImageBase64 { get; set; }
}
}

10
CPF_Cef/Common/Utils.cs

@ -1,12 +1,8 @@
using CPF.Controls; using AKSWebBrowser.Commen;
using CPF.Windows; using CPF.Controls;
using NAudio.Wave;
using System; using System;
using System.Collections.Generic; using System.Drawing;
using System.IO; using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AksWebBrowser.Common namespace AksWebBrowser.Common
{ {

206
CPF_Cef/Devices/IDCard.cs

@ -0,0 +1,206 @@
using AksWebBrowser.Common;
using AKSWebBrowser.Commen;
using CPF.Linux;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;
using static CPF.Mac.CoreMedia.CMTime;
namespace AksWebBrowser.Devices
{
public class IDCard
{
public static long icdev = -1;
public IDCard()
{
//打开设备
icdev = LibClass.ICReaderOpenUsbByFD(0);
//读序列号
byte[] pVer = new byte[64];
LibClass.ICReaderReadDevSnr(Convert.ToInt32(icdev), 20, pVer);
//获取版本
LibClass.ICReaderGetVer(Convert.ToInt32(icdev), pVer);
//蜂鸣器
LibClass.ICReaderBeep(icdev, 1, 1, 1);
}
/// <summary>
/// 获取身份证
/// </summary>
/// <returns></returns>
public string getIdCard()
{
try
{
if (icdev > 0)
{
IDCardModel iDCardModel = new IDCardModel();
int iLen = 0;
byte[] id = new byte[260];
int status = LibClass.GetIDCardUID(Convert.ToInt32(icdev), ref iLen, id);
byte[] pID = new byte[64];
LibClass.Hex2Asc(id, pID, iLen);
byte[] CHMsg = new byte[260];
byte[] PHMsg = new byte[1032];
byte[] FPMsg = new byte[1032];
int cLen = 0, pLen = 0, fLen = 0;
status = LibClass.ReadIDCardBaseMsg(Convert.ToInt32(icdev), 1, CHMsg, ref cLen, PHMsg, ref pLen, FPMsg, ref fLen);
if (status == 0)
{
//获取图片
byte[] FileName = new byte[65536];
status = LibClass.ParseIDCardPic(PHMsg, 1024, 3, FileName);
if (status == 0)
{
iDCardModel.ImageBase64 = Encoding.UTF8.GetString(FileName);
}
byte[] sCHMsg = new byte[520];
int itype = 0;
status = LibClass.ParseIDCardInfo(CHMsg, cLen, ref itype, sCHMsg);
if (status == 0)
{
string[] baseinfo = Encoding.UTF8.GetString(sCHMsg).Split("|");
iDCardModel.Name = baseinfo[0];
iDCardModel.Sex = baseinfo[1];
iDCardModel.Nation = baseinfo[2];
iDCardModel.BirthDay = baseinfo[3];
iDCardModel.Addr = baseinfo[4];
iDCardModel.Id = baseinfo[5];
iDCardModel.Regorg = baseinfo[6];
iDCardModel.StartDate = baseinfo[7];
iDCardModel.EndDate = baseinfo[8];
}
//关闭
LibClass.ICReaderClose(icdev);
return "{\"message\":\"seccse\",\"code\":\"200\",\"status\":true,\"data\":\"" + JsonConvert.SerializeObject(iDCardModel) + "\"}";
}
else
{
//关闭
LibClass.ICReaderClose(icdev);
return "{\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + "读取身份证失败" + "\"}";
}
}
else
{
//关闭
LibClass.ICReaderClose(icdev);
return "{\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + "读取身份证失败" + "\"}";
}
}
catch (Exception ex)
{
Log.Info("获取身份证异常:" + ex.Message);
if (icdev != -1)
{
LibClass.ICReaderClose(icdev);
}
return "{\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + ex.Message + "\"}";
}
}
// 转化字节码
public static string BytesToString(byte[] characters)
{
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
var encoding = Encoding.UTF8;
string constructedString = encoding.GetString(characters);
constructedString = constructedString.Trim(new char[] { '\'', '\"', '\\', '\0', '\a', '\b', '\f', '\n', '\r', '\t', '\v' });
return (constructedString);
}
}
}
class LibClass
{
/// <summary>
/// //打开设备 默认成0
/// </summary>
/// <param name="uiFD"></param>
/// <returns></returns>
[DllImport("libtmz", EntryPoint = "ICReaderOpenUsbByFD", SetLastError = true, CharSet = CharSet.Auto, ExactSpelling = false, CallingConvention = CallingConvention.StdCall)]
public static extern long ICReaderOpenUsbByFD(int uiFD);
/// <summary>
/// //关闭设备
/// </summary>
/// <param name="icdev"></param>
/// <returns></returns>
[DllImport("libtmz", EntryPoint = "ICReaderClose", SetLastError = true, CharSet = CharSet.Auto, ExactSpelling = false, CallingConvention = CallingConvention.StdCall)]
public static extern int ICReaderClose(long icdev);
/*
* 0
1
2
3
4
5
6
7
*/
[DllImport("libtmz", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int ICReaderDevStatus(long icdev, ref int uStatus); //获取设备状态
//uLEDCtrl,默认 0;低半字节:0-关,1-开,2-闪烁;如控制灯 2 开: 0x21
//uDelay:闪烁间隔时间,单位:50ms,如 1 代表闪烁间隔时间为 50ms.
[DllImport("libtmz", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int ICReaderLEDCtrl(long icdev, int uLEDCtrl, int uDelay); //灯光状态
//获取身份证 UID
[DllImport("libtmz", EntryPoint = "GetIDCardUID", SetLastError = true,
CharSet = CharSet.Auto, ExactSpelling = false,
CallingConvention = CallingConvention.StdCall)]
//说明: 获取身份证UID
public static extern int GetIDCardUID(int icdev, ref int uLen, [MarshalAs(UnmanagedType.LPArray)] byte[] pIDData);
[DllImport("libtmz", EntryPoint = "ReadIDCardBaseMsg", SetLastError = true,
CharSet = CharSet.Auto, ExactSpelling = false,
CallingConvention = CallingConvention.StdCall)]
//说明: 获取身份证原始数据
public static extern int ReadIDCardBaseMsg(int icdev, int iFlag, [MarshalAs(UnmanagedType.LPArray)] byte[] pucCHMsg, ref int puiCHMsgLen, [MarshalAs(UnmanagedType.LPArray)] byte[] pucPHMsg, ref int puiPHMsgLen, [MarshalAs(UnmanagedType.LPArray)] byte[] pucFPMsg, ref int puiFPMsgLen);
//蜂鸣器
[DllImport("libtmz", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int ICReaderBeep(long icdev, int uMsec, int uDelay, int uNum);
[DllImport("libtmz", EntryPoint = "ICReaderReadDevSnr", SetLastError = true,
CharSet = CharSet.Auto, ExactSpelling = false,
CallingConvention = CallingConvention.StdCall)]
//说明: 获取设备序列号
public static extern int ICReaderReadDevSnr(int icdev, int rLen, [MarshalAs(UnmanagedType.LPArray)] byte[] pVer);
[DllImport("libtmz", EntryPoint = "ICReaderGetVer", SetLastError = true,
CharSet = CharSet.Auto, ExactSpelling = false,
CallingConvention = CallingConvention.StdCall)]
//说明: 获取设备版本号
public static extern int ICReaderGetVer(int icdev, [MarshalAs(UnmanagedType.LPArray)] byte[] pVer);
//说明: 解析身份证文字信息
[DllImport("libtmz", EntryPoint = "ParseIDCardInfo", SetLastError = true,
CharSet = CharSet.Auto, ExactSpelling = false,
CallingConvention = CallingConvention.StdCall)]
public static extern int ParseIDCardInfo(byte[] pucCHMsg, int puiCHMsgLen, ref int iType, [MarshalAs(UnmanagedType.LPArray)] byte[] pSFZInfo);
//说明: 解析身份证照片信息
[DllImport("libtmz", EntryPoint = "ParseIDCardPic", SetLastError = true,
CharSet = CharSet.Auto, ExactSpelling = false,
CallingConvention = CallingConvention.StdCall)]
public static extern int ParseIDCardPic(byte[] pucPHMsg, int puiPHMsgLen, int iBmpFormat, byte[] pBmpFile);
[DllImport("libtmz", EntryPoint = "Hex2Asc", SetLastError = true,
CharSet = CharSet.Auto, ExactSpelling = false,
CallingConvention = CallingConvention.StdCall)]
//说明: 16进制 转ASCII字符串
public static extern int Hex2Asc(byte[] hex, [MarshalAs(UnmanagedType.LPArray)] byte[] asc, int hexlen);
[DllImport("libtmz", EntryPoint = "ReadIDCardBaseInfo", SetLastError = true,
CharSet = CharSet.Auto, ExactSpelling = false,
CallingConvention = CallingConvention.StdCall)]
public static extern int ReadIDCardBaseInfo(int icdev, int iFlag, int iBmpFormat, byte[] pBmpFile, ref int iType, [MarshalAs(UnmanagedType.LPArray)] byte[] pSFZInfo, [MarshalAs(UnmanagedType.LPArray)] byte[] pFingerInfo);
}

286
CPF_Cef/Devices/SignDll.cs

@ -1,210 +1,130 @@
using AKSWebBrowser.Commen; using AksWebBrowser;
using AksWebBrowser.Common;
using AKSWebBrowser.Commen;
using System; using System;
using System.Globalization; using System.Globalization;
using System.IO; using System.IO;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
using System.Text; using System.Text;
//0816加实时报点 using System.Threading.Tasks;
[StructLayout(LayoutKind.Sequential)]
public struct TOUCH_INFO public struct TOUCH_INFO
{ {
public int X;
public int Y;
public int Pressure;
public int SN;
public int btnID;//5寸 确定 重签 取消按钮 public int btnID;//5寸 确定 重签 取消按钮
} }
namespace DevicesService.Devices namespace DevicesService.Devices
{ {
public class SignDll public class SignDll
{ {
//public static PointF endPos;
//public static PointF beginPos;
//public static PointF frontPos;
//private static int xypointcount = 0;
//private static int[] lastpointx = new int[3];
//private static int[] lastpointy = new int[3];
//Point mPoint = new Point(-1, -1);
//private static System.Drawing.SolidBrush myBrush = new System.Drawing.SolidBrush(System.Drawing.Color.Red);
//private Graphics mGraphicsBuffer;
//private static Pen pen = new Pen(Color.Black); //
public static int status = -1; public static int status = -1;
//private static Bitmap bitmap = new Bitmap(594, 392); public static string callback;
public SignDll() public SignDll()
{
//OpenSDK();
}
//打开签字版
public void OpenSDK()
{ {
try try
{ {
//endPos = new PointF(-1F, -1f); status = FiveInchDll.GWQ_Init();
//beginPos = new PointF(-1F, -1f); Log.Info("初始化SDK:" + status.ToString());
//frontPos = new PointF(-1F, -1f); string UIFile = System.IO.Directory.GetCurrentDirectory();
//lastpointx[0] = -1; UIFile = UIFile + @"/aks/adv_ui.jpg";
//lastpointy[0] = -1; FiveInchDll.GWQ_SetImage(UIFile);
//lastpointx[1] = -1; FiveInchDll.GWQ_ShowImage();
//lastpointy[1] = -1; //加载回调
//lastpointx[2] = -1; FiveInchDll.GWQ_setCallback(callback_str_receive);
//lastpointy[2] = -1; FiveInchDll.GWQ_OnOffPointReporting(0);
//xypointcount = 0; //FiveInchDll.GWQ_setSignatureData(callback_signatureData);
} }
catch (Exception ex) { } catch (Exception ex) { Log.Error(ex.Message); }
finally { } finally { }
} }
public static void DevGetTouchNumber(int number) public void callback_str_receive(int number, byte[] data, byte[] path)
{ {
try try
{ {
Log.Info(number.ToString()); //Log.Info(number.ToString());
//1 签字确定按钮 2签字取消按钮 3 签字重签按钮(清空界面) //1 签字确定按钮 2签字取消按钮 3 签字重签按钮(清空界面)
if (number == 1) if (number == 0x10)
{ {
int ret = FiveInchDll.ComSignOK(); //確認
Log.Info("ComSignOK:" + ret); int ret = FiveInchDll.GWQ_GetImage();
FiveInchDll.ComSetBackGroundAdv(); Log.Info("GWQ_GetImage:" + ret);
FiveInchDll.GWQ_ShowImage();
} }
else if (number == 3) else if (number == 0x40)
{ {
string UIFile = Environment.CurrentDirectory + @"/sign_ui.jpg"; //重簽
int ret = FiveInchDll.ComSetSignBackgroundImage(UIFile); int ret = FiveInchDll.GWQ_ReSign();
Log.Info("ComSetSignBackgroundImage:" + ret); Log.Info("GWQ_ReSign:" + ret);
} }
else else if (number == 0xB0)
{ {
//lastpointx[0] = -1; //Task.Run(async () =>
//lastpointy[0] = -1; //{
//lastpointx[1] = -1; // Log.Info(callback);
//lastpointy[1] = -1; // Log.Info(path);
//lastpointx[2] = -1; // byte[] img = File.ReadAllBytes(path);
//lastpointy[2] = -1; // string base64 = Convert.ToBase64String(img);
FiveInchDll.ComSetBackGroundAdv(); // Log.Info(base64);
// //完成圖片保存
// string result = "{\"message\":\"success\",\"code\":\"200\",\"status\":true,\"suffix\":\"png\",\"data\":\"" + base64 + "\"}";
// Log.Info(result);
// string _parm = callback + "('" + result + "')";
// await Parame.webBrowser.ExecuteJavaScript(_parm);
//});
}
else if (number == 0x30)
{
//取消
FiveInchDll.GWQ_ShowImage();
} }
} }
catch { } catch (Exception ex) { Log.Error(ex.Message); }
finally { } finally { }
} }
//0816加报点 //0816加报点
public static void GetTouchPoint(TOUCH_INFO[] info1) public void callback_signatureData(int x, int y, int p, int sn)
{ {
return; return;
} }
//打开签字版 //打开签字版
public static int OpenComDevice() public void OpenComDevice(string _callback)
{ {
//GetTouchNumber m_GetTouchCB = new(DevGetTouchNumber);
try try
{ {
status = FiveInchDll.OpenComDevice(DevGetTouchNumber); callback = _callback;
Log.Info(status.ToString()); OpenSDK();
//Console.WriteLine("OpenComDevice:" + status); FiveInchDll.GWQ_SwitchLanguage(0);
//清空界面
// GetTouchNumber(2);
if (status == 0)
{
//关闭报点
int ret = FiveInchDll.ComSendPoint(0, GetTouchPoint);
Log.Info(ret.ToString());
if (true)
{
string UIFile = Environment.CurrentDirectory + @"/adv_ui.jpg";
Log.Info(UIFile.ToString());
int ret1 = FiveInchDll.ComSendAdvantageImage(UIFile);
Log.Info(ret1.ToString());
// Console.WriteLine("ComSendAdvantageImage:" + ret1);
FiveInchDll.ComSetBackGroundAdv();
}
if (true)
{
string UIFile = Environment.CurrentDirectory + @"/sign_ui.jpg";
Log.Info(UIFile.ToString());
int ret1 = FiveInchDll.ComSetSignBackgroundImage(UIFile);
Log.Info(ret1.ToString());
//Console.WriteLine("ComSetSignBackgroundImage:" + ret1);
} }
catch (Exception ex) { Log.Error(ex.Message); }
finally { }
} }
////status = FiveInchDll.OpenComDevice(DevGetTouchNumber);
//if (status == -1)
//{
// status = FiveInchDll.OpenComDevice(DevGetTouchNumber);
// Log.Info(status.ToString());
// //Console.WriteLine("OpenComDevice:" + status);
// //清空界面
// // GetTouchNumber(2);
// if (status == 0)
// {
// //关闭报点
// int ret = FiveInchDll.ComSendPoint(0, GetTouchPoint);
// Log.Info(ret.ToString());
// if (true)
// {
// string UIFile = Environment.CurrentDirectory + @"/adv_ui.jpg";
// Log.Info(UIFile.ToString());
// int ret1 = FiveInchDll.ComSendAdvantageImage(UIFile);
// Log.Info(ret1.ToString());
// // Console.WriteLine("ComSendAdvantageImage:" + ret1);
// FiveInchDll.ComSetBackGroundAdv();
// }
// if (true) //釋放簽字版
// { public int ReleaseComDevice()
// string UIFile = Environment.CurrentDirectory + @"/adv_ui.jpg"; {
// Log.Info(UIFile.ToString()); int ret = -1;
// int ret1 = FiveInchDll.ComSetSignBackgroundImage(UIFile); //try
// Log.Info(ret1.ToString());
// //Console.WriteLine("ComSetSignBackgroundImage:" + ret1);
// }
// }
//}
//else
//{ //{
// //清空界面
// //GetTouchNumber(2);
// if (status == 0) // if (status == 0)
// { // {
// //关闭报点 // ret = FiveInchDll.GWQ_Release();
// int ret = FiveInchDll.ComSendPoint(0, GetTouchPoint); // if (ret == 0)
// if (true)
// {
// string UIFile = Environment.CurrentDirectory + @"/adv_ui.jpg";
// int ret1 = FiveInchDll.ComSendAdvantageImage(UIFile);
// //Console.WriteLine("ComSendAdvantageImage:" + ret1);
// FiveInchDll.ComSetBackGroundAdv();
// }
// if (true)
// { // {
// string UIFile = Environment.CurrentDirectory + @"/adv_ui.jpg"; // status = -1;
// int ret1 = FiveInchDll.ComSetSignBackgroundImage(UIFile); // //取消
// //Console.WriteLine("ComSetSignBackgroundImage:" + ret1); // FiveInchDll.GWQ_ShowImage();
// } // }
// } // }
//} //}
} //catch { }
catch { } //finally { }
finally { }
return status;
}
//关闭签字版
public static int CloseComDevice()
{
int ret = -1;
try
{
if (status == 0)
{
ret = FiveInchDll.CloseComDevice();
if (ret == 0)
{
status = -1;
}
}
}
catch { }
finally { }
return ret; return ret;
} }
} }
@ -213,48 +133,56 @@ namespace DevicesService.Devices
{ {
[System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute(System.Runtime.InteropServices.CallingConvention.StdCall)] [System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute(System.Runtime.InteropServices.CallingConvention.StdCall)]
public delegate void GetTouchNumber(int number); public delegate void callback_str_receive(int type, byte[] data, byte[] path);// (int number);
[System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute(System.Runtime.InteropServices.CallingConvention.StdCall)]
public delegate void callback_signatureData(int x, int y, int p, int sn);
//0816加报点 //0816加报点
[System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute(System.Runtime.InteropServices.CallingConvention.StdCall)] [System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute(System.Runtime.InteropServices.CallingConvention.StdCall)]
public delegate void TOUCH_INFO_FUNC([MarshalAs(UnmanagedType.LPArray, SizeConst = 160)] TOUCH_INFO[] info); public delegate void TOUCH_INFO_FUNC([MarshalAs(UnmanagedType.LPArray, SizeConst = 160)] TOUCH_INFO[] info);
[DllImport("libdevice5_hid_sdk.so", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)] [DllImport("libdevice5_hid_sdk", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int ComSendPoint(int nState, [MarshalAs(UnmanagedType.FunctionPtr)] TOUCH_INFO_FUNC callback); //0816加报点 public static extern int GWQ_Init(); //1.1SDK初始化
[DllImport("libdevice5_hid_sdk.so", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int OpenComDevice([MarshalAs(UnmanagedType.FunctionPtr)] GetTouchNumber callback);
[DllImport("libdevice5_hid_sdk.so", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)] [DllImport("libdevice5_hid_sdk", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int CloseComDevice(); public static extern int GWQ_Release();//SDK释放
[DllImport("libdevice5_hid_sdk.so", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int ComSetSignBackgroundImage(string UIFile);
[DllImport("libdevice5_hid_sdk.so", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)] [DllImport("libdevice5_hid_sdk.so", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int ComSetPictureSavePath(string PicturePath, int PicturePathLen); public static extern int GWQ_DeviceOnline();//检查设备是否在线
[DllImport("libdevice5_hid_sdk.so", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)] [DllImport("libdevice5_hid_sdk", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int ComSignOK(); public static extern int GWQ_setCallback(callback_str_receive cb);
[DllImport("libdevice5_hid_sdk", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int GWQ_setSignatureData(callback_signatureData cb);
[DllImport("libdevice5_hid_sdk.so", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)] [DllImport("libdevice5_hid_sdk", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int ComSetPenStyle(int PenStyle); public static extern int GWQ_SwitchLanguage(int language);//语言切换
[DllImport("libdevice5_hid_sdk", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int GWQ_GetImage();//获取签字图片(用户点击确定后发送)
[DllImport("libdevice5_hid_sdk.so", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)] [DllImport("libdevice5_hid_sdk", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int ComGetDevSN(StringBuilder pDevSN, int iSync); public static extern int GWQ_SetImage(string uifile);//设置签字图片
[DllImport("libdevice5_hid_sdk.so", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)] [DllImport("libdevice5_hid_sdk", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int ComGetDevSN_Async(StringBuilder pDevSN); public static extern int GWQ_ShowImage();//显示设置的图片
[DllImport("libdevice5_hid_sdk.so", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)] [DllImport("libdevice5_hid_sdk", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int ComWhiteScreen(); public static extern int GWQ_OnOffScreen(int type);//亮屏熄屏 1 熄屏 0亮屏
[DllImport("libdevice5_hid_sdk.so", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)] [DllImport("libdevice5_hid_sdk", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int ComSendAdvantageImage(string UIFile); public static extern int GWQ_Reboot();//重启设备
[DllImport("libdevice5_hid_sdk", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int GWQ_ReSign();// 重新签字
[DllImport("libdevice5_hid_sdk", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int GWQ_OnOffPointReporting(int type);//开启关闭报点(同屏报点) 1 开启 0关闭
[DllImport("libdevice5_hid_sdk.so", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)] [DllImport("libdevice5_hid_sdk", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int ComSetBackGroundAdv(); public static extern int GWQ_SetStartUpLogo(string path);//设置开机logo
[DllImport("libdevice5_hid_sdk", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int GWQ_SetSigningBackground(byte[] path, int len);//发送签字背景
[DllImport("libdevice5_hid_sdk", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int GWQ_SetSigningBackground2(byte[] path, int len);//设置开机logo
} }
} }

452
CPF_Cef/MainModel.cs

@ -7,6 +7,8 @@ using CPF.Mac.AppKit;
using DevicesService.Devices; using DevicesService.Devices;
using NAudio.Wave; using NAudio.Wave;
using NAudio.Wave.SampleProviders; using NAudio.Wave.SampleProviders;
using Newtonsoft.Json.Linq;
using Newtonsoft.Json;
using SkiaSharp; using SkiaSharp;
using System; using System;
using System.Buffers.Text; using System.Buffers.Text;
@ -24,6 +26,7 @@ using System.Threading.Tasks;
using System.Web; using System.Web;
using System.Xml.Linq; using System.Xml.Linq;
using static System.Net.Mime.MediaTypeNames; using static System.Net.Mime.MediaTypeNames;
using AksWebBrowser.Devices;
namespace AKS.EnterpriseLibrary.WebBrowser namespace AKS.EnterpriseLibrary.WebBrowser
{ {
@ -35,6 +38,9 @@ namespace AKS.EnterpriseLibrary.WebBrowser
public static Process recordingProcess; public static Process recordingProcess;
public static Process Typrocess; public static Process Typrocess;
public TcpClients tcpClients = new TcpClients(); public TcpClients tcpClients = new TcpClients();
public SignDll sign = new SignDll();
public bool isStart = true;
/// <summary> /// <summary>
/// 读取身份证卡号 /// 读取身份证卡号
/// </summary> /// </summary>
@ -45,26 +51,11 @@ namespace AKS.EnterpriseLibrary.WebBrowser
{ {
try try
{ {
if (!isFuncisFuncObject("IDCardRead")) IDCard iDCard = new IDCard();
{ string result = iDCard.getIdCard();
Utils.MessagesBox("读取身份证设备未授权使用");
return "{\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + "读取身份证设备未授权使用" + "\"}";
}
else if (Parame.tcpClient == null)
{
return "{\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + "硬件服务未启动" + "\"}";
}
else
{
paramsString = "{\"callback\":\"" + callback + "\",\"type\":\"1\",\"param\":{\"data\":\"" + "" + "\"}}";
//Log.Info("读取身份证卡号: " + paramsString + "");
string base64 = str2Base64(paramsString);
string str = tcpClients.SendDataWithHeader(Parame.tcpClient.GetStream(), base64);
string result = Base64str2(str);
SubmitLogs(result, "IDCardRead"); SubmitLogs(result, "IDCardRead");
return result; return result;
} }
}
catch (Exception ex) catch (Exception ex)
{ {
Log.Error("读取身份证卡号异常: " + ex.Message + ""); Log.Error("读取身份证卡号异常: " + ex.Message + "");
@ -87,6 +78,10 @@ namespace AKS.EnterpriseLibrary.WebBrowser
{ {
try try
{ {
if (isStart)
{
return "{\"message\":\"success\",\"code\":\"200\",\"status\":true,\"data\":\"" + "打印成功" + "\"}";
}
if (!isFuncisFuncObject("SendByPrint")) if (!isFuncisFuncObject("SendByPrint"))
{ {
Utils.MessagesBox("打印排队票据设备未授权使用"); Utils.MessagesBox("打印排队票据设备未授权使用");
@ -131,6 +126,10 @@ namespace AKS.EnterpriseLibrary.WebBrowser
{ {
try try
{ {
if (isStart)
{
return "{\"message\":\"success\",\"code\":\"200\",\"status\":true,\"data\":\"" + "操作成功" + "\"}";
}
if (!isFuncisFuncObject("payleText")) if (!isFuncisFuncObject("payleText"))
{ {
Utils.MessagesBox("文字语音播报设备未授权使用"); Utils.MessagesBox("文字语音播报设备未授权使用");
@ -237,6 +236,10 @@ namespace AKS.EnterpriseLibrary.WebBrowser
{ {
try try
{ {
if (isStart)
{
return "{\"message\":\"success\",\"code\":\"200\",\"status\":true,\"data\":\"" + "操作成功" + "\"}";
}
if (!isFuncisFuncObject("SendSSM")) if (!isFuncisFuncObject("SendSSM"))
{ {
Utils.MessagesBox("发送短信设备未授权使用"); Utils.MessagesBox("发送短信设备未授权使用");
@ -276,78 +279,54 @@ namespace AKS.EnterpriseLibrary.WebBrowser
{ {
try try
{ {
if (!isFuncisFuncObject("openCamera")) if (isStart)
{ {
Utils.MessagesBox("高拍仪设备未授权使用"); return "{\"message\":\"success\",\"code\":\"200\",\"status\":true,\"data\":\"" + "操作成功" + "\"}";
return "{\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + "高拍仪设备未授权使用" + "\"}";
} }
else if (Parame.tcpClient == null)
{ else
tcpClients = new TcpClients();
if (Parame.tcpClient != null)
{
string paramsString = "{\"callback\":\"" + callback + "\",\"type\":\"5\",\"param\":{\"url\":\"" + url + "\"}}";
//Log.Info("打开高拍仪并且进行快速扫描文件: " + paramsString + "");
string base64 = str2Base64(paramsString);
string str = tcpClients.SendDataWithHeader(Parame.tcpClient.GetStream(), base64);
string data = Base64str2(str);
if (data == "400" || data.Contains("fali"))
{ {
str = tcpClients.SendDataWithHeader(Parame.tcpClient.GetStream(), base64); //获取设备信息
data = Base64str2(str); string devIndex = GetSnIndex();
if (data == "400" || data.Contains("fali")) if (string.IsNullOrEmpty(devIndex))
{ {
string result = "{\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + "扫描文件失败,请重新扫描!" + "\"}"; string result = "{\"callback\":\"" + callback + "\",\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"suffix\":\"jpg\",\"data\":\"" + "扫描仪打开失败" + "\"}";
SubmitLogs(result, "openCamera"); SubmitLogs(result, "openCamera");
return result; return result;
} }
else else
{ {
string result = "{\"callback\":\"" + callback + "\",\"message\":\"success\",\"code\":\"200\",\"status\":true,\"suffix\":\"jpg\",\"data\":\"" + str + "\"}"; //打开高拍仪
SubmitLogs(result, "openCamera"); string param = OpenSn(devIndex);
return result; if (string.IsNullOrEmpty(param))
}
}
else
{ {
string result = "{\"callback\":\"" + callback + "\",\"message\":\"success\",\"code\":\"200\",\"status\":true,\"suffix\":\"jpg\",\"data\":\"" + str + "\"}"; string result = "{\"callback\":\"" + callback + "\",\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"suffix\":\"jpg\",\"data\":\"" + "扫描仪打开失败" + "\"}";
SubmitLogs(result, "openCamera"); SubmitLogs(result, "openCamera");
return result; return result;
} }
}
else {
return "{\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + "硬件服务未启动" + "\"}";
}
}
else else
{ {
string paramsString = "{\"callback\":\"" + callback + "\",\"type\":\"5\",\"param\":{\"url\":\"" + url + "\"}}"; //拍照
//Log.Info("打开高拍仪并且进行快速扫描文件: " + paramsString + ""); param = getFrame();
string base64 = str2Base64(paramsString); if (string.IsNullOrEmpty(param))
string str = tcpClients.SendDataWithHeader(Parame.tcpClient.GetStream(), base64);
string data = Base64str2(str);
if (data == "400" || data.Contains("fali"))
{ {
str = tcpClients.SendDataWithHeader(Parame.tcpClient.GetStream(), base64); string result = "{\"callback\":\"" + callback + "\",\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"suffix\":\"jpg\",\"data\":\"" + "获取图片失败" + "\"}";
data = Base64str2(str);
if (data == "400" || data.Contains("fali"))
{
string result = "{\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + "扫描文件失败,请重新扫描!" + "\"}";
SubmitLogs(result, "openCamera"); SubmitLogs(result, "openCamera");
return result; return result;
} }
else else
{ {
string result = "{\"callback\":\"" + callback + "\",\"message\":\"success\",\"code\":\"200\",\"status\":true,\"suffix\":\"jpg\",\"data\":\"" + str + "\"}"; Task.Run(() =>
{
//关闭
StopSn(devIndex);
});
string result = "{\"callback\":\"" + callback + "\",\"message\":\"success\",\"code\":\"200\",\"status\":true,\"suffix\":\"jpg\",\"data\":\"" + param + "\"}";
SubmitLogs(result, "openCamera"); SubmitLogs(result, "openCamera");
return result; return result;
} }
} }
else
{
string result = "{\"callback\":\"" + callback + "\",\"message\":\"success\",\"code\":\"200\",\"status\":true,\"suffix\":\"jpg\",\"data\":\"" + str + "\"}";
SubmitLogs(result, "openCamera");
return result;
} }
} }
} }
@ -361,12 +340,12 @@ namespace AKS.EnterpriseLibrary.WebBrowser
} }
/// <summary> /// <summary>
/// 打开签字版 /// 打开签字版 sudo apt-get install libgdiplus
/// </summary> /// </summary>
/// <param name="paramsString"></param> /// <param name="paramsString"></param>
/// <returns></returns> /// <returns></returns>
[JSFunction] [JSFunction]
public string OpenSign(string paramsString) public string OpenSign(string paramsString, string callback)
{ {
try try
{ {
@ -375,24 +354,13 @@ namespace AKS.EnterpriseLibrary.WebBrowser
Utils.MessagesBox("签字版设备未授权使用"); Utils.MessagesBox("签字版设备未授权使用");
return "{\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + "签字版设备未授权使用" + "\"}"; return "{\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + "签字版设备未授权使用" + "\"}";
} }
else if (Parame.tcpClient == null)
{
return "{\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + "硬件服务未启动" + "\"}";
}
else else
{ {
paramsString = "{\"callback\":\"" + callback + "\",\"type\":\"6\",\"param\":{\"data\":\"" + "" + "\"}}";
//Log.Info("打开签字版: " + paramsString + ""); sign.OpenComDevice(callback);
string base64 = str2Base64(paramsString); string result = "{\"callback\":\"" + callback + "\",\"message\":\"success\",\"code\":\"200\",\"status\":true,\"suffix\":\"png\",\"data\":\"" + "成功" + "\"}";
string str = tcpClients.SendDataWithHeader(Parame.tcpClient.GetStream(), base64);
string result = Base64str2(str);
SubmitLogs(result, "OpenSign"); SubmitLogs(result, "OpenSign");
return result; return result;
//SignDll.OpenComDevice();
//string result = "{\"callback\":\"" + callback + "\",\"message\":\"success\",\"code\":\"200\",\"status\":true,\"suffix\":\"png\",\"data\":\"" + "成功" + "\"}";
//SubmitLogs(result, "OpenSign");
//return result;
} }
} }
catch (Exception ex) catch (Exception ex)
@ -425,11 +393,15 @@ namespace AKS.EnterpriseLibrary.WebBrowser
} }
else else
{ {
paramsString = "{\"callback\":\"" + callback + "\",\"type\":\"7\",\"param\":{\"data\":\"" + "" + "\"}}"; //paramsString = "{\"callback\":\"" + callback + "\",\"type\":\"7\",\"param\":{\"data\":\"" + "" + "\"}}";
//Log.Info("关闭签字版: " + paramsString + ""); ////Log.Info("关闭签字版: " + paramsString + "");
string base64 = str2Base64(paramsString); //string base64 = str2Base64(paramsString);
string str = tcpClients.SendDataWithHeader(Parame.tcpClient.GetStream(), base64); //string str = tcpClients.SendDataWithHeader(Parame.tcpClient.GetStream(), base64);
string result = Base64str2(str); //string result = Base64str2(str);
//SubmitLogs(result, "OpenSign");
//return result;
sign.ReleaseComDevice();
string result = "{\"callback\":\"" + callback + "\",\"message\":\"success\",\"code\":\"200\",\"status\":true,\"suffix\":\"png\",\"data\":\"" + "成功" + "\"}";
SubmitLogs(result, "OpenSign"); SubmitLogs(result, "OpenSign");
return result; return result;
} }
@ -443,57 +415,6 @@ namespace AKS.EnterpriseLibrary.WebBrowser
} }
} }
/// <summary>
/// 获取签字版数据
/// </summary>
/// <param name="url"></param>
/// <returns></returns>
[JSFunction]
public string GetSignData(string url)
{
try
{
if (!isFuncisFuncObject("OpenSign"))
{
Utils.MessagesBox("签字版设备未授权使用");
return "{\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + "签字版设备未授权使用" + "\"}";
}
else
{
string paramsString = "{\"callback\":\"" + callback + "\",\"type\":\"8\",\"param\":{\"url\":\"" + url + "\"}}";
//Log.Info("获取签字版数据: " + paramsString + "");
string base64 = str2Base64(paramsString);
string str = tcpClients.SendDataWithHeader(Parame.tcpClient.GetStream(), base64);
string data = Base64str2(str);
if (data == "400" || data.Contains("fali"))
{
string result = "{\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + "获取签字失败" + "\"}";
SubmitLogs(result, "OpenSign");
return result;
}
else
{
string result = "{\"callback\":\"" + callback + "\",\"message\":\"success\",\"code\":\"200\",\"status\":true,\"suffix\":\"png\",\"data\":\"" + str + "\"}";
SubmitLogs(result, "OpenSign");
return result;
}
//string result = "{\"callback\":\"" + callback + "\",\"message\":\"success\",\"code\":\"200\",\"status\":true,\"suffix\":\"png\",\"data\":\"" + "成功" + "\"}";
//SubmitLogs(result, "OpenSign");
//return result;
}
}
catch (Exception ex)
{
Log.Error("获取签字版数据异常: " + ex.Message + "");
string result = "{\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + ex.Message + "\"}";
SubmitLogs(result, "OpenSign");
return result;
}
}
/// <summary> /// <summary>
/// 开始录音、取消录音、结束录音 /// 开始录音、取消录音、结束录音
/// sudo apt-get update /// sudo apt-get update
@ -507,6 +428,10 @@ namespace AKS.EnterpriseLibrary.WebBrowser
{ {
try try
{ {
if (isStart)
{
return "{\"message\":\"success\",\"code\":\"200\",\"status\":true,\"data\":\"" + "操作成功" + "\"}";
}
if (!isFuncisFuncObject("SoundRecording")) if (!isFuncisFuncObject("SoundRecording"))
{ {
Utils.MessagesBox("录音设备未授权使用"); Utils.MessagesBox("录音设备未授权使用");
@ -591,10 +516,6 @@ namespace AKS.EnterpriseLibrary.WebBrowser
Utils.MessagesBox("打印机设备未授权使用"); Utils.MessagesBox("打印机设备未授权使用");
return "{\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + "打印机设备未授权使用" + "\"}"; return "{\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + "打印机设备未授权使用" + "\"}";
} }
else if (Parame.tcpClient == null)
{
return "{\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + "硬件服务未启动" + "\"}";
}
else else
{ {
Task.Run(async () => Task.Run(async () =>
@ -654,10 +575,6 @@ namespace AKS.EnterpriseLibrary.WebBrowser
Utils.MessagesBox("打印机设备未授权使用"); Utils.MessagesBox("打印机设备未授权使用");
return "{\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + "打印机设备未授权使用" + "\"}"; return "{\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + "打印机设备未授权使用" + "\"}";
} }
else if (Parame.tcpClient == null)
{
return "{\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + "硬件服务未启动" + "\"}";
}
else else
{ {
Task.Run(async () => Task.Run(async () =>
@ -931,6 +848,253 @@ namespace AKS.EnterpriseLibrary.WebBrowser
return result; return result;
} }
/// <summary>
/// 获取设备index
/// </summary>
/// <returns></returns>
public string GetSnIndex()
{
//获取设备信息
string param = "/GetAllDisplayInfo";
Task.Run(() => HttpResponse(param));
@event6.WaitOne();
if (string.IsNullOrEmpty(gpyStr))
{
return "";
}
else
{
JObject jo = (JObject)JsonConvert.DeserializeObject(gpyStr);
if (jo["returnCode"].ToString() == "0")
{
string result = jo["data"].ToString();
Log.Info(result);
JArray jo1 = (JArray)JsonConvert.DeserializeObject(result);
string devidx = string.Empty;
string name = string.Empty;
foreach (JObject jo2 in jo1)
{
devidx = jo2["dev_idx"].ToString();
name = jo2["name"].ToString();
Log.Info(name);
break;
}
return devidx;
}
else
{
Log.Info(jo["returnMsg"].ToString());
return "";
}
}
}
/// <summary>
/// 打开高拍仪
/// </summary>
/// <returns></returns>
public string OpenSn(string dev_idx)
{
//获取设备信息
string param = "/StartPreview?dev_idx=" + dev_idx + "&res_id=0";
Task.Run(() => HttpResponse(param));
@event6.WaitOne();
if (string.IsNullOrEmpty(gpyStr))
{
return "";
}
else
{
JObject jo = (JObject)JsonConvert.DeserializeObject(gpyStr);
if (jo["returnCode"].ToString() == "0")
{
return "200";
}
if (jo["returnCode"].ToString() == "2")
{
return "200";
}
else
{
Log.Info(jo["returnMsg"].ToString());
return "";
}
}
}
/// <summary>
/// 关闭高拍仪
/// </summary>
/// <returns></returns>
public string StopSn(string dev_idx)
{
//获取设备信息
string param = "/StopPreview?dev_idx=" + dev_idx;
Task.Run(() => HttpResponse(param));
@event6.WaitOne();
if (string.IsNullOrEmpty(gpyStr))
{
return "";
}
else
{
JObject jo = (JObject)JsonConvert.DeserializeObject(gpyStr);
if (jo["returnCode"].ToString() == "0")
{
return "200";
}
else
{
Log.Info(jo["returnMsg"].ToString());
return "";
}
}
}
/// <summary>
/// 拍照
/// </summary>
/// <returns></returns>
public string getFrame()
{
//获取设备信息
string param = "/getFrame";
Task.Run(() => HttpResponse(param));
@event6.WaitOne();
if (string.IsNullOrEmpty(gpyStr))
{
return "";
}
else
{
JObject jo = (JObject)JsonConvert.DeserializeObject(gpyStr);
if (jo["returnCode"].ToString() == "0")
{
string result = jo["data"].ToString();
JObject jo1 = (JObject)JsonConvert.DeserializeObject(result);
return jo1["img"].ToString();
}
else
{
Log.Info(jo["returnMsg"].ToString());
return "";
}
}
}
/// <summary>
/// 右转
/// </summary>
/// <returns></returns>
public string RotateRight()
{
//获取设备信息
string param = "/rotate/right";
Task.Run(() => HttpResponse(param));
@event6.WaitOne();
if (string.IsNullOrEmpty(gpyStr))
{
return "";
}
else
{
JObject jo = (JObject)JsonConvert.DeserializeObject(gpyStr);
if (jo["returnCode"].ToString() == "0")
{
return "200";
}
else
{
Log.Info(jo["returnMsg"].ToString());
return "";
}
}
}
/// <summary>
/// 左转
/// </summary>
/// <returns></returns>
public string RotateLeft()
{
//获取设备信息
string param = "/rotate/left";
Task.Run(() => HttpResponse(param));
@event6.WaitOne();
if (string.IsNullOrEmpty(gpyStr))
{
return "";
}
else
{
JObject jo = (JObject)JsonConvert.DeserializeObject(gpyStr);
if (jo["returnCode"].ToString() == "0")
{
return "200";
}
else
{
Log.Info(jo["returnMsg"].ToString());
return "";
}
}
}
/// <summary>
/// 高拍仪
/// </summary>
private string gpyStr = string.Empty;
private AutoResetEvent @event6 = new AutoResetEvent(false);
private async void HttpResponse(string param)
{
var httpClient = new HttpClient();
var uploader = new ChunkedUpload(httpClient);
gpyStr = await uploader.getReq(param);
@event6.Set();
}
/// <summary>
/// 获取签字版base64
/// </summary>
/// <returns></returns>
public string GetSignBase64()
{
//获取设备信息
Task.Run(() => HttpPostResponseBySign());
@event6.WaitOne();
if (string.IsNullOrEmpty(qzbStr))
{
return "";
}
else
{
JObject jo = (JObject)JsonConvert.DeserializeObject(qzbStr);
if (jo["code"].ToString() == "0")
{
return jo["data"].ToString();
}
else
{
Log.Info(jo["returnMsg"].ToString());
return "";
}
}
}
/// <summary>
/// 签字版
/// </summary>
private string qzbStr = string.Empty;
private AutoResetEvent @event7 = new AutoResetEvent(false);
private async void HttpPostResponseBySign()
{
var httpClient = new HttpClient();
var uploader = new ChunkedUpload(httpClient);
qzbStr = await uploader.PostSign();
@event7.Set();
}
/// <summary> /// <summary>
/// 初始文件上传 /// 初始文件上传
/// </summary> /// </summary>

2
CPF_Cef/Parame.cs

@ -19,6 +19,8 @@ namespace AksWebBrowser
public static string key = "1"; public static string key = "1";
//硬件Ip //硬件Ip
public static string Ip = "192.168.1.166"; public static string Ip = "192.168.1.166";
//高拍仪url
public static string gpyUrl = "http://127.0.0.1:6543";
} }
public struct Func public struct Func
{ {

Loading…
Cancel
Save