采用串口方式连接
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

491 lines
20 KiB

using AksWebBrowser.Common;
using AKSWebBrowser.Commen;
using AKSWebBrowser.Common;
using CPF.Cef;
using System;
using System.Diagnostics;
using System.Globalization;
using System.IO;
using System.Net.Http;
using System.Text.RegularExpressions;
using System.Threading;
using System.Threading.Tasks;
using static System.Net.Mime.MediaTypeNames;
namespace AKS.EnterpriseLibrary.WebBrowser
{
public class MainModel : CPF.CpfObject
{
public COMUtils com = new COMUtils();
/// <summary>
/// 读取身份证卡号
/// </summary>
/// <param name="paramsString"></param>
/// <returns></returns>
[JSFunction]
public string IDCardRead(string paramsString)
{
try
{
paramsString = "{\"type\":\"1\",\"param\":{\"data\":\"" + "" + "\"}}";
Log.Info("读取身份证卡号: " + paramsString + "");
string base64 = str2Base64(paramsString);
string str = com.SendData(base64);
if (string.IsNullOrEmpty(str))
{
return "{\"message\":\"success\",\"code\":\"400\",\"status\":false,\"data\":\"" + "获取数据失败" + "\"}";
}
else
{
return Base64str2(str);
}
}
catch (Exception ex)
{
Log.Error("读取身份证卡号异常: " + ex.Message + "");
return "{\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + ex.Message + "\"}";
}
}
/// <summary>
/// 打印排队票据
/// </summary>
/// <param name="ph">排号</param>
/// <param name="ddrs">等待人数</param>
/// <param name="qrcode">二维码</param>
/// <param name="ywmc">办理业务名称</param>
/// <returns></returns>
[JSFunction]
public string SendByPrint(string ph, string ddrs, string qrcode, string ywmc)
{
try
{
string paramsString = "{\"type\":\"2\",\"param\":{\"ph\":\"" + ph + "\",\"ddrs\":\"" + ddrs + "\",\"qrcode\":\"" + qrcode + "\",\"ywmc\":\"" + ywmc + "\"}}";
Log.Info("打印排队票据: " + paramsString + "");
string base64 = str2Base64(paramsString);
string str = com.SendData(base64);
if (string.IsNullOrEmpty(str))
{
return "{\"message\":\"success\",\"code\":\"400\",\"status\":false,\"data\":\"" + "打印排队票据失败" + "\"}";
}
else
{
return Base64str2(str);
}
}
catch (Exception ex)
{
Log.Error("打印排队票据异常: " + ex.Message + "");
return "{\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + ex.Message + "\"}";
}
}
/// <summary>
/// 文字语音播报
/// </summary>
/// <param name="text"></param>
/// <param name="ispaye"></param>
/// <returns></returns>
[JSFunction]
public string payleText(string text, bool ispaye)
{
try
{
if (text.Length > 65535)
{
return "{\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":" + "文字太长" + "}";
}
string paramsString = "{\"type\":\"3\",\"param\":{\"text\":\"" + text + "\",\"ispaye\":\"" + ispaye + "\"}}";
Log.Info("文字语音播报: " + paramsString + "");
string base64 = str2Base64(paramsString);
if (base64.Length > 1024)
{
string url = "http://192.168.0.34:92/api/UploadFP/UploadFP";
Task.Run(async () =>
{
DateTime dateTime = DateTime.Now;
string time = DateTime.Now.ToString(
"yyyyMMddHHmmss", DateTimeFormatInfo.InvariantInfo);
var dirpath = Path.Combine(Environment.CurrentDirectory, "wwwroot", "TempFile");
if (!Directory.Exists(dirpath))
{
Directory.CreateDirectory(dirpath);
}
var filepath = Path.Combine(dirpath, time);
string path = dirpath + @"/" + time + ".txt";
base64 = str2Base64(text);
byte[] bytes = Convert.FromBase64String(base64);
System.IO.FileStream stream = new System.IO.FileStream(path, System.IO.FileMode.CreateNew);
System.IO.BinaryWriter writer = new System.IO.BinaryWriter(stream);
writer.Write(bytes, 0, bytes.Length);
writer.Close();
Log.Info("文字语音播报临时文件: " + path + "");
UploadInfo(url, path);
});
@event2.WaitOne();
Regex re = new Regex(@"(((?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+(:[0-9]+)?|(?:www.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[\w]*))?)");
MatchCollection mc = re.Matches(url);//获取的是一个数组
string pdfurl = mc[0].ToString() + "://" + mc[1].ToString() + urlpath;
paramsString = "{\"type\":\"3\",\"param\":{\"text\":\"" + pdfurl + "\",\"ispaye\":\"" + ispaye + "\"}}";
Log.Info("文字语音播报: " + paramsString + "");
base64 = str2Base64(paramsString);
}
string str = com.SendData(base64);
if (string.IsNullOrEmpty(str))
{
return "{\"message\":\"success\",\"code\":\"400\",\"status\":false,\"data\":\"" + "文字语音播报失败" + "\"}";
}
else
{
return Base64str2(str);
}
}
catch (Exception ex)
{
Log.Error("文字语音播报异常: " + ex.Message + "");
return "{\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + ex.Message + "\"}";
}
}
/// <summary>
/// 发送短信
/// </summary>
/// <param name="content"></param>
/// <param name="phone"></param>
/// <returns></returns>
[JSFunction]
public string SendSSM(string content, string phone)
{
try
{
string paramsString = "{\"type\":\"4\",\"param\":{\"content\":\"" + content + "\",\"phone\":\"" + phone + "\"}}";
Log.Info("发送短信: " + paramsString + "");
string base64 = str2Base64(paramsString);
string str = com.SendData(base64);
if (string.IsNullOrEmpty(str))
{
return "{\"message\":\"success\",\"code\":\"400\",\"status\":false,\"data\":\"" + "发送短信失败" + "\"}";
}
else
{
return Base64str2(str);
}
}
catch (Exception ex)
{
Log.Error("发送短信异常: " + ex.Message + "");
return "{\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + ex.Message + "\"}";
}
}
/// <summary>
/// 打开高拍仪并且进行快速扫描文件
/// </summary>
/// <param name="url"></param>
/// <returns></returns>
[JSFunction]
public string openCamera(string url)
{
try
{
string paramsString = "{\"type\":\"5\",\"param\":{\"url\":\"" + url + "\"}}";
Log.Info("打开高拍仪并且进行快速扫描文件: " + paramsString + "");
string base64 = str2Base64(paramsString);
string str = com.SendData(base64);
if (string.IsNullOrEmpty(str))
{
return "{\"message\":\"success\",\"code\":\"400\",\"status\":false,\"data\":\"" + "打开高拍仪并且进行快速扫描文件失败" + "\"}";
}
else
{
return Base64str2(str);
}
}
catch (Exception ex)
{
Log.Error("打开高拍仪并且进行快速扫描文件异常: " + ex.Message + "");
return "{\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + ex.Message + "\"}";
}
}
/// <summary>
/// 打开签字版
/// </summary>
/// <param name="paramsString"></param>
/// <returns></returns>
[JSFunction]
public string OpenSign(string paramsString)
{
try
{
paramsString = "{\"type\":\"6\",\"param\":{\"data\":\"" + "" + "\"}}";
Log.Info("打开签字版: " + paramsString + "");
string base64 = str2Base64(paramsString);
string str = com.SendData(base64);
if (string.IsNullOrEmpty(str))
{
return "{\"message\":\"success\",\"code\":\"400\",\"status\":false,\"data\":\"" + "打开签字版失败" + "\"}";
}
else
{
return Base64str2(str);
}
}
catch (Exception ex)
{
Log.Error("打开签字版异常: " + ex.Message + "");
return "{\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + ex.Message + "\"}";
}
}
/// <summary>
/// 关闭签字版
/// </summary>
/// <param name="paramsString"></param>
/// <returns></returns>
[JSFunction]
public string CloseSign(string paramsString)
{
try
{
paramsString = "{\"type\":\"7\",\"param\":{\"data\":\"" + "" + "\"}}";
Log.Info("关闭签字版: " + paramsString + "");
string base64 = str2Base64(paramsString);
string str = com.SendData(base64);
if (string.IsNullOrEmpty(str))
{
return "{\"message\":\"success\",\"code\":\"400\",\"status\":false,\"data\":\"" + "关闭签字版失败" + "\"}";
}
else
{
return Base64str2(str);
}
}
catch (Exception ex)
{
Log.Error("关闭签字版异常: " + ex.Message + "");
return "{\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + ex.Message + "\"}";
}
}
/// <summary>
/// 获取签字版数据
/// </summary>
/// <param name="url"></param>
/// <returns></returns>
[JSFunction]
public string GetSignData(string url)
{
try
{
string paramsString = "{\"type\":\"8\",\"param\":{\"url\":\"" + url + "\"}}";
Log.Info("获取签字版数据: " + paramsString + "");
string base64 = str2Base64(paramsString);
string str = com.SendData(base64);
if (string.IsNullOrEmpty(str))
{
return "{\"message\":\"success\",\"code\":\"400\",\"status\":false,\"data\":\"" + "获取签字版数据失败" + "\"}";
}
else
{
return Base64str2(str);
}
}
catch (Exception ex)
{
Log.Error("获取签字版数据异常: " + ex.Message + "");
return "{\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + ex.Message + "\"}";
}
}
/// <summary>
/// 开始录音、取消录音、结束录音
/// </summary>
/// <param name="isopen"></param>
/// <param name="url"></param>
/// <returns></returns>
[JSFunction]
public string SoundRecording(bool isopen, string url)
{
try
{
string paramsString = "{\"type\":\"11\",\"param\":{\"isopen\":\"" + isopen + "\",\"url\":\"" + url + "\"}}";
Log.Info("开始录音、取消录音、结束录音: " + paramsString + "");
string base64 = str2Base64(paramsString);
string str = com.SendData(base64);
if (string.IsNullOrEmpty(str))
{
return "{\"message\":\"success\",\"code\":\"400\",\"status\":false,\"data\":\"" + "开始录音、取消录音、结束录音失败" + "\"}";
}
else
{
return Base64str2(str);
}
}
catch (Exception ex)
{
Log.Error("开始录音、取消录音、结束录音异常: " + ex.Message + "");
return "{\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + ex.Message + "\"}";
}
}
/// <summary>
/// 根据文件地址在线打印
/// </summary>
/// <param name="filename"></param>
/// <returns></returns>
[JSFunction]
public string PrintFile(string url, string ext)
{
try
{
string paramsString = "{\"type\":\"9\",\"param\":{\"url\":\"" + url + "\",\"ext\":\"" + ext + "\"}}";
Log.Info("根据文件地址在线打印: " + paramsString + "");
string base64_1 = str2Base64(paramsString);
string str = com.SendData(base64_1);
if (string.IsNullOrEmpty(str))
{
return "{\"message\":\"success\",\"code\":\"400\",\"status\":false,\"data\":\"" + "根据文件地址在线打印失败" + "\"}";
}
else
{
return Base64str2(str);
}
}
catch (Exception ex)
{
Log.Error("根据文件地址在线打印异常: " + ex.Message + "");
return "{\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + ex.Message + "\"}";
}
}
/// <summary>
/// 根据文件base64打印
/// </summary>
/// <param name="base64"></param>
/// <param name="ext"></param>
/// <returns></returns>
[JSFunction]
public string PrintBase64(string url, string base64, string ext)
{
try
{
Task.Run(async () =>
{
DateTime dateTime = DateTime.Now;
string time = DateTime.Now.ToString(
"yyyyMMddHHmmss", DateTimeFormatInfo.InvariantInfo);
var dirpath = Path.Combine(Environment.CurrentDirectory, "wwwroot", "PrintFile");
if (!Directory.Exists(dirpath))
{
Directory.CreateDirectory(dirpath);
}
var filepath = Path.Combine(dirpath, time);
string path = dirpath + @"/" + time + "." + ext;
byte[] bytes = Convert.FromBase64String(base64);
System.IO.FileStream stream = new System.IO.FileStream(path, System.IO.FileMode.CreateNew);
System.IO.BinaryWriter writer = new System.IO.BinaryWriter(stream);
writer.Write(bytes, 0, bytes.Length);
writer.Close();
Log.Info("根据文件base64打印: " + path + "");
UploadInfo(url, path);
});
@event2.WaitOne();
Regex re = new Regex(@"(((?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+(:[0-9]+)?|(?:www.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[\w]*))?)");
MatchCollection mc = re.Matches(url);//获取的是一个数组
string pdfurl = mc[0].ToString() + "://" + mc[1].ToString() + urlpath;
Log.Info("根据文件base64打印: " + pdfurl + "");
try
{
string paramsString = "{\"type\":\"9\",\"param\":{\"url\":\"" + pdfurl + "\",\"ext\":\"" + ext + "\"}}";
Log.Info("根据文件base64打印: " + paramsString + "");
string base64_1 = str2Base64(paramsString);
string str = com.SendData(base64_1);
if (string.IsNullOrEmpty(str))
{
return "{\"message\":\"success\",\"code\":\"400\",\"status\":false,\"data\":\"" + "根据文件base64打印失败" + "\"}";
}
else
{
return Base64str2(str);
}
}
catch (Exception ex)
{
Log.Error("根据文件base64打印异常: " + ex.Message + "");
return "{\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + ex.Message + "\"}";
}
}
catch (Exception ex)
{
return "{\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + ex.Message + "\"}";
}
}
/// <summary>
/// 初始文件上传
/// </summary>
private string urlpath = string.Empty;
private AutoResetEvent @event2 = new AutoResetEvent(false);
private async void UploadInfo(string url, string srpath)
{
var httpClient = new HttpClient();
var uploader = new ChunkedUpload(httpClient);
urlpath = await uploader.UploadFileAsync(url, srpath);
@event2.Set();
}
/// <summary>
/// string 转换为 base64
/// </summary>
/// <returns></returns>
public static string str2Base64(string str)
{
byte[] b = System.Text.Encoding.UTF8.GetBytes(str);
string result = Convert.ToBase64String(b);
return result;
}
/// <summary>
/// base64 转换为 string
/// </summary>
/// <param name="data"></param>
public static string Base64str2(string data)
{
byte[] c = Convert.FromBase64String(data);
string result = System.Text.Encoding.UTF8.GetString(c);
Log.Info("接收返回数据:" + result);
return result;
}
/// <summary>
/// 根据程序名称杀死进程
/// </summary>
/// <param name="processName"></param>
public static void KillProcessByName(string processName)
{
Process[] processes = Process.GetProcessesByName(processName);
foreach (Process process in processes)
{
try
{
process.Kill();
process.WaitForExit(); // 等待进程退出
}
catch (Exception ex) { }
}
}
/// <summary>
/// 关闭串口
/// </summary>
public void CLoseCOM()
{
com.ClosePort();
}
}
}