diff --git a/CPF_Cef/FrmMain.cs b/CPF_Cef/FrmMain.cs index 8f8af94..f498beb 100644 --- a/CPF_Cef/FrmMain.cs +++ b/CPF_Cef/FrmMain.cs @@ -90,7 +90,6 @@ namespace AKS.EnterpriseLibrary.WebBrowser //关闭事件 private void MainWindow_Closing(object sender, ClosingEventArgs e) { - new MainModel().CLoseCOM(); MainModel.KillProcessByName("AksWebBrowser"); } bool showDev = false; diff --git a/CPF_Cef/MainModel.cs b/CPF_Cef/MainModel.cs index bbb3a85..6a569a1 100644 --- a/CPF_Cef/MainModel.cs +++ b/CPF_Cef/MainModel.cs @@ -33,16 +33,13 @@ namespace AKS.EnterpriseLibrary.WebBrowser { public class MainModel : CPF.CpfObject { - public COMUtils com; public string callback = string.Empty; public string PrinterName = "Lexmark-MS430-Series"; public static Process recordingProcess; public static Process Typrocess; - public TcpClients tcpClients = new TcpClients(); - public SignDll sign = new SignDll(); - public bool isStart = true; + private string srpath = string.Empty; /// - /// 读取身份证卡号 + /// 读取身份证卡号(已国产化) /// /// /// @@ -67,7 +64,7 @@ namespace AKS.EnterpriseLibrary.WebBrowser } /// - /// 打印排队票据 + /// 打印排队票据(已国产化) /// /// 排号 /// 等待人数 @@ -112,7 +109,7 @@ namespace AKS.EnterpriseLibrary.WebBrowser } /// - /// 文字语音播报 + /// 文字语音播报(已国产化) /// apt install sox /// apt install libsox-fmt-all /// @@ -126,94 +123,47 @@ namespace AKS.EnterpriseLibrary.WebBrowser { try { - if (isStart) - { - return "{\"message\":\"success\",\"code\":\"200\",\"status\":true,\"data\":\"" + "操作成功" + "\"}"; - } if (!isFuncisFuncObject("payleText")) { 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\":\"3\",\"param\":{\"text\":\"" + text + "\",\"ispaye\":\"" + ispaye + "\"}}"; - //Log.Info("文字语音播报: " + paramsString + ""); - string base64 = str2Base64(paramsString); - //if (base64.Length > 1024) - //{ - // //形成临时文件 - // DateTime dateTime = DateTime.Now; - // string time = DateTime.Now.ToString( - // "yyyyMMddHHmmss", DateTimeFormatInfo.InvariantInfo); - // var dirpath = System.IO.Path.Combine(Environment.CurrentDirectory, "wwwroot", "TempFile"); - // if (!Directory.Exists(dirpath)) - // { - // Directory.CreateDirectory(dirpath); - // } - // var filepath = System.IO.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 + ""); - // string id = Guid.NewGuid().ToString(); - // //通过文件发送数据 - // com.NewMethod(path, ".txt"); - - // //正式执行命令 - // string url = "http://192.168.0.34:92/api/UploadFP/UploadFP"; - // Regex re = new Regex(@"(((?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+(:[0-9]+)?|(?:ww‌​w.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?‌​(?:[\w]*))?)"); - // MatchCollection mc = re.Matches(url);//获取的是一个数组 - // string pdfurl = mc[0].ToString() + "://" + mc[1].ToString() + urlpath; - // paramsString = "{\"callback\":\"" + callback + "\",\"bsid\":\"" + id + "\",\"type\":\"3\",\"param\":{\"text\":\"" + pdfurl + "\",\"ispaye\":\"" + ispaye + "\"}}"; - // //Log.Info("文字语音播报: " + paramsString + ""); - // base64 = str2Base64(paramsString); - //} - string str = tcpClients.SendDataWithHeader(Parame.tcpClient.GetStream(), base64); - return Base64str2(str); - //if (ispaye) - //{ - // Task.Run(() => - // { - // if (Typrocess != null) - // { - // // 如果进程还在运行 - // if (!Typrocess.HasExited) - // { - // // 发送SIGTERM信号来停止进程 - // Typrocess.Kill(); - // // 等待进程真正停止 - // Typrocess.WaitForExit(); - // } - // } - // }); - // string result = "{\"callback\":\"" + callback + "\",\"message\":\"success\",\"code\":\"200\",\"status\":true,\"data\":" + "停止播放成功" + "}"; - // SubmitLogs(result, "payleText"); - // return result; - //} - //else - //{ - // Task.Run(() => - // { - // //形成语音 - // tempWav = GenerateWavFromText(text); - // //开始播放 - // string command = $"sox {tempWav} -d"; - // ShllCommad(command); - // }); - // string result = "{\"callback\":\"" + callback + "\",\"message\":\"success\",\"code\":\"200\",\"status\":true,\"data\":" + "开始播放" + "}"; - // SubmitLogs(result, "payleText"); - // return result; - //} + if (ispaye) + { + Task.Run(() => + { + if (Typrocess != null) + { + // 如果进程还在运行 + if (!Typrocess.HasExited) + { + // 发送SIGTERM信号来停止进程 + Typrocess.Kill(); + // 等待进程真正停止 + Typrocess.WaitForExit(); + } + } + }); + string result = "{\"callback\":\"" + callback + "\",\"message\":\"success\",\"code\":\"200\",\"status\":true,\"data\":" + "停止播放成功" + "}"; + SubmitLogs(result, "payleText"); + return result; + } + else + { + Task.Run(() => + { + //形成语音 + tempWav = GenerateWavFromText(text); + //开始播放 + string command = $"sox {tempWav} -d"; + ShllCommad(command); + }); + string result = "{\"callback\":\"" + callback + "\",\"message\":\"success\",\"code\":\"200\",\"status\":true,\"data\":" + "开始播放" + "}"; + SubmitLogs(result, "payleText"); + return result; + } } } catch (Exception ex) @@ -226,51 +176,7 @@ namespace AKS.EnterpriseLibrary.WebBrowser } /// - /// 发送短信 - /// - /// - /// - /// - [JSFunction] - public string SendSSM(string content, string phone) - { - try - { - if (isStart) - { - return "{\"message\":\"success\",\"code\":\"200\",\"status\":true,\"data\":\"" + "操作成功" + "\"}"; - } - if (!isFuncisFuncObject("SendSSM")) - { - 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\":\"4\",\"param\":{\"content\":\"" + content + "\",\"phone\":\"" + phone + "\"}}"; - //Log.Info("发送短信: " + paramsString + ""); - string base64 = str2Base64(paramsString); - string str = tcpClients.SendDataWithHeader(Parame.tcpClient.GetStream(), base64); - string result = Base64str2(str); - SubmitLogs(result, "SendSSM"); - return result; - } - } - catch (Exception ex) - { - Log.Error("发送短信异常: " + ex.Message + ""); - string result = "{\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + ex.Message + "\"}"; - SubmitLogs(result, "SendSSM"); - return result; - } - } - - /// - /// 打开高拍仪并且进行快速扫描文件 + /// 打开高拍仪并且进行快速扫描文件 (已国产化) /// /// /// @@ -279,16 +185,18 @@ namespace AKS.EnterpriseLibrary.WebBrowser { try { - if (isStart) + string devIndex = GetSnIndex(); + if (string.IsNullOrEmpty(devIndex)) { - return "{\"message\":\"success\",\"code\":\"200\",\"status\":true,\"data\":\"" + "操作成功" + "\"}"; + string result = "{\"callback\":\"" + callback + "\",\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"suffix\":\"jpg\",\"data\":\"" + "扫描仪打开失败" + "\"}"; + SubmitLogs(result, "openCamera"); + return result; } - else { - //获取设备信息 - string devIndex = GetSnIndex(); - if (string.IsNullOrEmpty(devIndex)) + //打开高拍仪 + string param = OpenSn(devIndex); + if (string.IsNullOrEmpty(param)) { string result = "{\"callback\":\"" + callback + "\",\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"suffix\":\"jpg\",\"data\":\"" + "扫描仪打开失败" + "\"}"; SubmitLogs(result, "openCamera"); @@ -296,37 +204,26 @@ namespace AKS.EnterpriseLibrary.WebBrowser } else { - //打开高拍仪 - string param = OpenSn(devIndex); + //拍照 + param = getFrame(); if (string.IsNullOrEmpty(param)) { - string result = "{\"callback\":\"" + callback + "\",\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"suffix\":\"jpg\",\"data\":\"" + "扫描仪打开失败" + "\"}"; + string result = "{\"callback\":\"" + callback + "\",\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"suffix\":\"jpg\",\"data\":\"" + "获取图片失败" + "\"}"; SubmitLogs(result, "openCamera"); return result; } else { - //拍照 - param = getFrame(); - if (string.IsNullOrEmpty(param)) - { - string result = "{\"callback\":\"" + callback + "\",\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"suffix\":\"jpg\",\"data\":\"" + "获取图片失败" + "\"}"; - SubmitLogs(result, "openCamera"); - return result; - } - else + Task.Run(() => { - Task.Run(() => - { - //关闭 - StopSn(devIndex); - }); - string result = "{\"callback\":\"" + callback + "\",\"message\":\"success\",\"code\":\"200\",\"status\":true,\"suffix\":\"jpg\",\"data\":\"" + param + "\"}"; - SubmitLogs(result, "openCamera"); - return result; - } - + //关闭 + StopSn(devIndex); + }); + string result = "{\"callback\":\"" + callback + "\",\"message\":\"success\",\"code\":\"200\",\"status\":true,\"suffix\":\"jpg\",\"data\":\"" + param + "\"}"; + SubmitLogs(result, "openCamera"); + return result; } + } } } @@ -340,7 +237,7 @@ namespace AKS.EnterpriseLibrary.WebBrowser } /// - /// 打开签字版 sudo apt-get install libgdiplus + /// 打开签字版 sudo apt-get install libgdiplus (已国产化) /// /// /// @@ -372,78 +269,72 @@ namespace AKS.EnterpriseLibrary.WebBrowser } /// - /// 指纹 + /// 关闭签字版 (已国产化) /// /// /// [JSFunction] - public string Finger(string paramsString, string callback) + public string CloseSign(string paramsString) { try { - if (false)//!isFuncisFuncObject("Finger") + if (!isFuncisFuncObject("OpenSign")) { - Utils.MessagesBox("指纹设备未授权使用"); - return "{\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + "指纹设备未授权使用" + "\"}"; + Utils.MessagesBox("签字版设备未授权使用"); + return "{\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + "签字版设备未授权使用" + "\"}"; } else { - string result = Fingerprint.LIVESCANFinger(callback); - SubmitLogs(result, "Finger"); + + 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 + ""); + Log.Error("关闭签字版异常: " + ex.Message + ""); string result = "{\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + ex.Message + "\"}"; - SubmitLogs(result, "Finger"); + SubmitLogs(result, "OpenSign"); return result; } } /// - /// 关闭签字版 + /// 指纹 (已国产化,未完成测试) /// /// /// [JSFunction] - public string CloseSign(string paramsString) + public string ReadFingerData(string callback) { try { - if (!isFuncisFuncObject("OpenSign")) + if (false)//!isFuncisFuncObject("Finger") { - Utils.MessagesBox("签字版设备未授权使用"); - return "{\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + "签字版设备未授权使用" + "\"}"; + Utils.MessagesBox("指纹设备未授权使用"); + return "{\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + "指纹设备未授权使用" + "\"}"; } else { - //paramsString = "{\"callback\":\"" + callback + "\",\"type\":\"7\",\"param\":{\"data\":\"" + "" + "\"}}"; - ////Log.Info("关闭签字版: " + paramsString + ""); - //string base64 = str2Base64(paramsString); - //string str = tcpClients.SendDataWithHeader(Parame.tcpClient.GetStream(), base64); - //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"); + + string result = Fingerprint.LIVESCANFinger(callback); + SubmitLogs(result, "Finger"); return result; } } catch (Exception ex) { - Log.Error("关闭签字版异常: " + ex.Message + ""); + Log.Error("指纹异常: " + ex.Message + ""); string result = "{\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + ex.Message + "\"}"; - SubmitLogs(result, "OpenSign"); + SubmitLogs(result, "Finger"); return result; } } /// - /// 开始录音、取消录音、结束录音 + /// 开始录音、取消录音、结束录音 (已国产化) /// sudo apt-get update /// sudo apt-get install alsa-utils /// @@ -455,67 +346,69 @@ namespace AKS.EnterpriseLibrary.WebBrowser { try { - if (isStart) - { - return "{\"message\":\"success\",\"code\":\"200\",\"status\":true,\"data\":\"" + "操作成功" + "\"}"; - } if (!isFuncisFuncObject("SoundRecording")) { 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\":\"11\",\"param\":{\"isopen\":\"" + isopen + "\",\"url\":\"" + url + "\"}}"; - //Log.Info("开始录音、取消录音、结束录音: " + paramsString + ""); - string base64 = str2Base64(paramsString); - string str = tcpClients.SendDataWithHeader(Parame.tcpClient.GetStream(), base64); //结束录音上传文件 if (!string.IsNullOrEmpty(url) && !isopen) { - string tt = Base64str2(str); - //Log.Info("结束录音上传文件" + tt); - //下载文件 - DateTime dateTime = DateTime.Now; - string time = DateTime.Now.ToString( - "yyyyMMddHHmmss", DateTimeFormatInfo.InvariantInfo); - var dirpath = System.IO.Path.Combine(Environment.CurrentDirectory, "wwwroot", "RecordFile"); - if (!Directory.Exists(dirpath)) + if (StopRecording()) { - Directory.CreateDirectory(dirpath); + Task.Run(async () => + { + UploadInfo(url, srpath); + }); + @event2.WaitOne(); + Regex re = new Regex(@"(((?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+(:[0-9]+)?|(?:ww‌​w.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?‌​(?:[\w]*))?)"); + MatchCollection mc = re.Matches(url);//获取的是一个数组 + string reurl = mc[0].ToString() + "://" + mc[1].ToString() + urlpath; + string result = "{\"callback\":\"" + callback + "\",\"message\":\"success\",\"code\":\"200\",\"status\":true,\"suffix\":\"wav\",\"data\":\"" + reurl + "\"}"; + SubmitLogs(result, "SoundRecording"); + return result; } - var filepath = System.IO.Path.Combine(dirpath, time); - string path = dirpath + @"/" + time + ".wav"; - WebRequest request = WebRequest.Create(tt); - WebResponse response = request.GetResponse(); - using (Stream stream = response.GetResponseStream()) + else { - using (FileStream fileStream = new FileStream(path, FileMode.Create)) - { - stream.CopyTo(fileStream); - } + string result = "{\"callback\":\"" + callback + "\",\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"suffix\":\"wav\",\"data\":\"" + "结束录音失败" + "\"}"; + SubmitLogs(result, "SoundRecording"); + return result; } - response.Close(); - //上传文件 - Task.Run(async () => { UploadInfo(url, path); }); - @event2.WaitOne(); - Regex re = new Regex(@"(((?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+(:[0-9]+)?|(?:ww‌​w.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?‌​(?:[\w]*))?)"); - MatchCollection mc = re.Matches(url);//获取的是一个数组 - string wavurl = mc[0].ToString() + "://" + mc[1].ToString() + urlpath; - string result = "{\"message\":\"success\",\"code\":\"200\",\"status\":true,\"suffix\":\"wav\",\"data\":\"" + wavurl + "\"}"; - //Log.Info(result); - SubmitLogs(result, "SoundRecording"); - return result; } - else + else if (isopen)//开始录音 { - string result = Base64str2(str); - SubmitLogs(result, "SoundRecording"); - return result; + if (StartRecording()) + { + string result = "{\"callback\":\"" + callback + "\",\"message\":\"success\",\"code\":\"200\",\"status\":true,\"suffix\":\"wav\",\"data\":\"" + "开始录音" + "\"}"; + SubmitLogs(result, "SoundRecording"); + return result; + } + else + { + string result = "{\"callback\":\"" + callback + "\",\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"suffix\":\"wav\",\"data\":\"" + "录音失败" + "\"}"; + SubmitLogs(result, "SoundRecording"); + return result; + } + } + else //取消录音 + { + if (StopRecording()) + { + srpath = string.Empty; + string result = "{\"callback\":\"" + callback + "\",\"message\":\"success\",\"code\":\"200\",\"status\":true,\"suffix\":\"wav\",\"data\":\"" + "取消录音" + "\"}"; + SubmitLogs(result, "SoundRecording"); + return result; + } + else + { + srpath = string.Empty; + string result = "{\"callback\":\"" + callback + "\",\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"suffix\":\"wav\",\"data\":\"" + "取消录音失败" + "\"}"; + SubmitLogs(result, "SoundRecording"); + return result; + } + } } } @@ -529,7 +422,7 @@ namespace AKS.EnterpriseLibrary.WebBrowser } /// - /// 根据文件地址在线打印 + /// 根据文件地址在线打印 (已国产化) /// /// /// @@ -587,7 +480,7 @@ namespace AKS.EnterpriseLibrary.WebBrowser } /// - /// 根据文件base64打印 + /// 根据文件base64打印 (已国产化) /// /// /// @@ -625,26 +518,6 @@ namespace AKS.EnterpriseLibrary.WebBrowser string command = $"lp -d {PrinterName} {path}"; ShllCommad(command); }); - //string id = Guid.NewGuid().ToString(); - ////通过文件发送数据 - //com.NewMethod(path, ext); - //Regex re = new Regex(@"(((?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+(:[0-9]+)?|(?:ww‌​w.|[-;:&=\+\$,\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 = "{\"callback\":\"" + callback + "\",\"bsid\":\"" + id + "\",\"type\":\"9\",\"param\":{\"url\":\"" + pdfurl + "\",\"ext\":\"" + ext + "\"}}"; - // //Log.Info("根据文件base64打印: " + paramsString + ""); - // string base64_1 = str2Base64(paramsString); - // string str = com.SendData(base64_1, callback); - // return Base64str2(str); - //} - //catch (Exception ex) - //{ - // Log.Error("根据文件base64打印异常: " + ex.Message + ""); - // return "{\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + ex.Message + "\"}"; - //} string result = "{\"callback\":\"" + callback + "\",\"message\":\"success\",\"code\":\"200\",\"status\":true,\"data\":\"" + "打印成功" + "\"}"; SubmitLogs(result, "PrintBase64"); return result; @@ -658,8 +531,8 @@ namespace AKS.EnterpriseLibrary.WebBrowser } } - /// - /// 播放音频文件 + /// + /// 播放音频文件 (已国产化) /// /// /// @@ -749,60 +622,6 @@ namespace AKS.EnterpriseLibrary.WebBrowser } } - /// - /// 播放音频公共方法 - /// - /// - private void NewMethod(string url) - { - Uri uri = new Uri(url); - //返回 123.xlsx - var filename = HttpUtility.UrlDecode(uri.Segments.Last()); - //获取文件后缀 - string ext = System.IO.Path.GetExtension(filename); - DateTime dateTime = DateTime.Now; - string time = DateTime.Now.ToString( - "yyyyMMddHHmmss", DateTimeFormatInfo.InvariantInfo); - var dirpath = System.IO.Path.Combine(Environment.CurrentDirectory, "wwwroot", "WaveOutFile"); - if (!Directory.Exists(dirpath)) - { - Directory.CreateDirectory(dirpath); - } - string path = dirpath + @"/" + time + "." + ext; - WebRequest request = WebRequest.Create(url); - WebResponse response = request.GetResponse(); - using (Stream stream = response.GetResponseStream()) - { - using (FileStream fileStream = new FileStream(WaveOutPath, FileMode.Create)) - { - stream.CopyTo(fileStream); - } - } - response.Close(); - - - using (player = new WaveOutEvent()) - { - player.PlaybackStopped += waveOut_PlaybackStopped; - using (audioFileReader = new AudioFileReader(WaveOutPath)) - { - // 创建一个增益效果器对象 - var volumeProvider = new VolumeSampleProvider(audioFileReader.ToSampleProvider()); - // 将音频文件添加到WaveOutEvent对象中 - player.Init(volumeProvider); - // 设置音量增益为2倍 - volumeProvider.Volume = 2.0f; - // 开始播放音频 - player.Play(); - while (player.PlaybackState == PlaybackState.Playing) - { - Thread.Sleep(1000); - } - } - } - //Log.Info("开始播放"); - } - /// /// 播放完成 /// @@ -827,7 +646,7 @@ namespace AKS.EnterpriseLibrary.WebBrowser } /// - /// 唤醒键盘 + /// 唤醒键盘 (已国产化) /// /// /// @@ -1080,7 +899,6 @@ namespace AKS.EnterpriseLibrary.WebBrowser @event6.Set(); } - /// /// 签字版 /// @@ -1155,12 +973,6 @@ namespace AKS.EnterpriseLibrary.WebBrowser } } - //关闭串口 - public void CLoseCOM() - { - com.ClosePort(); - } - /// /// 开始录音 /// @@ -1236,97 +1048,6 @@ namespace AKS.EnterpriseLibrary.WebBrowser } } - - public static WaveFileWriter writer; - public static StreamWriter mStreamWriter; - public static WaveInEvent waveIn = null; - private string srpath = string.Empty; - //开启录音 - private bool StateSoundRecor() - { - if (waveIn != null) - { - waveIn.StopRecording(); - waveIn.Dispose(); - writer.Close(); - mStreamWriter.Close(); - waveIn = null; - } - // 录音对象 - waveIn = new WaveInEvent(); - int sampleRate = 48000; //采样率 - int channels = 2; //录音通道数 - int bitsPerSample = 16; //位深 - WaveFormat waveFormat = new WaveFormat(sampleRate, bitsPerSample, channels); - waveIn.WaveFormat = waveFormat; //设置录音格式 - DateTime dateTime = DateTime.Now; - string time = DateTime.Now.ToString( - "yyyyMMddHHmmss", DateTimeFormatInfo.InvariantInfo); - var dirpath = System.IO.Path.Combine(Environment.CurrentDirectory, "wwwroot", "Record"); - if (!Directory.Exists(dirpath)) - { - Directory.CreateDirectory(dirpath); - } - srpath = dirpath + "/" + time + ".wav"; - string pathfile = dirpath + "/" + time + ".txt"; - // 创建WaveFileWriter对象来保存录音数据 路径在bin文件下 - writer = new WaveFileWriter(srpath, waveFormat); - //编写器 - mStreamWriter = new StreamWriter(pathfile, false, new System.Text.UTF8Encoding(false)); - // 设置录音回调函数 - int bitIndex = bitsPerSample / 8; - waveIn.DataAvailable += (sender, e) => - { - // 将录音数据写入文件 - writer.Write(e.Buffer, 0, e.BytesRecorded); - for (int i = 0; i < e.BytesRecorded / bitIndex; i++) - { - //24bit,导出的数据 - //int sample = (int)((e.Buffer[i * bitIndex + 2] << 16) | (e.Buffer[i * bitIndex + 1] << 8) | e.Buffer[i * bitIndex]); - //16bit 将两个byte数据组合成一个short数据 - short sample = (short)((e.Buffer[i * bitIndex + 1] << 8) | e.Buffer[i * bitIndex]); - mStreamWriter.Write("{0},", sample); - } - }; - try - { - //尝试打开录音设备,如果设备支持设置的WaveFormat,则能够成功打开 - waveIn.StartRecording(); - return true; - } - catch (Exception ex) - { - //Log.Info("录音开启失败:" + ex.Message); - srpath = ""; - return false; - } - } - - /// - /// 停止录音、取消录音 - /// - /// - private bool StopSoundRecor() - { - - try - { - //停止录音 - waveIn.StopRecording(); - waveIn.Dispose(); - writer.Close(); - mStreamWriter.Close(); - waveIn = null; - return true; - } - catch (Exception ex) - { - //Log.Info("停止录音、取消录音失败:" + ex.Message); - srpath = ""; - return false; - } - } - /// /// 执行命令 ///