/// <summary> /// 建立数据库连接. /// </summary> public bool CreateConnection() { UnityModule.DebugPrint("正在创建数据库连接..."); try { //数据库连接到打开时需要断开重新连接 if (DataBaseConnection != null && DataBaseConnection.State == ConnectionState.Open) { CloseConnection(); } string ConnectionString = "server=localhost;user id=root;password=987412365;database=iot"; DataBaseConnection = new MySqlConnection(ConnectionString); DataBaseCommand = new MySqlCommand() { Connection = DataBaseConnection }; DataBaseConnection.Open(); UnityModule.DebugPrint("数据库连接创建成功!数据库状态:" + DataBaseConnection.State.ToString()); return(DataBaseConnection.State == ConnectionState.Open); } catch (Exception ex) { //throw new Exception("创建MySql数据库连接时失败!"+ex.Message); UnityModule.DebugPrint("创建MySql数据库连接时失败!" + ex.Message); return(false); } }
/// <summary> /// 执行数据库命令 /// </summary> /// <param name="SQLCommand">数据库命令</param> /// <returns>执行结果</returns> public bool ExecuteNonQuery(string SQLCommand) { if (DataBaseConnection == null) { UnityModule.DebugPrint("数据库连接未创建,无法执行SQL:" + SQLCommand); return(false); } if (DataBaseConnection.State != ConnectionState.Open) { UnityModule.DebugPrint("数据库状态为:" + DataBaseConnection.State.ToString() + ";无法执行SQL:" + SQLCommand); return(false); } try { DataBaseCommand.CommandText = SQLCommand; DataBaseCommand.ExecuteNonQuery(); UnityModule.DebugPrint("命令执行成功:" + SQLCommand); return(true); } catch (Exception ex) { UnityModule.DebugPrint("执行SQL遇到错误:\n\t" + SQLCommand + "\n\t" + ex.Message); return(false); } }
/// <summary> /// 读取数据库返回值第一列第一行 /// </summary> /// <param name="SQLCommand">数据库读取命令</param> /// <returns>读取结果</returns> public object ExecuteScalar(string SQLCommand) { if (DataBaseConnection == null) { UnityModule.DebugPrint("数据库连接未创建,无法读取SQL:" + SQLCommand); return(null); } if (DataBaseConnection.State != ConnectionState.Open) { UnityModule.DebugPrint("数据库状态为:" + DataBaseConnection.State.ToString() + ";无法读取SQL:" + SQLCommand); return(null); } try { DataBaseCommand.CommandText = SQLCommand; object DataValue = DataBaseCommand.ExecuteScalar(); UnityModule.DebugPrint("命令执行成功:" + SQLCommand); return(DataValue); } catch (Exception ex) { UnityModule.DebugPrint("读取SQL遇到错误:\n\t\t\t" + SQLCommand + "\n\t\t\t" + ex.Message); return(null); } }
/// <summary> /// 当 SpeechRecognitionEngine 采用与其加载启用的 Grammar 对象匹配的输入的时候引发 /// </summary> private void UnitySREngine_SpeechRecognized(object sender, SpeechRecognizedEventArgs e) { //语音识别结束 UnityModule.DebugPrint(" $ 识别到语音指令:{0}", e.Result.Text); //触发事件,转入外部处理 SpeechRecognized(sender, e.Result.Text); }
void IDisposable.Dispose() { if (UnitySpeechRecognitionEngine != null) { try { UnitySpeechRecognitionEngine.RecognizeAsyncStop(); UnitySpeechRecognitionEngine.Dispose(); UnitySpeechRecognitionEngine = null; } catch (Exception ex) { UnityModule.DebugPrint("注销语音识别引擎时遇到错误:{0}", ex.Message); } } if (UnitySpeechSynthesizer != null) { try { UnitySpeechSynthesizer.SpeakAsyncCancelAll(); UnitySpeechRecognitionEngine.Dispose(); UnitySpeechRecognitionEngine = null; } catch (Exception ex) { UnityModule.DebugPrint("注销语音朗读引擎时遇到错误:{0}", ex.Message); } } GC.SuppressFinalize(this); }
public void LoadGrammar(Grammar CustomGrammar) { if (CustomGrammar == null) { return; } if (UnitySpeechRecognitionEngine == null) { return; } try { UnitySpeechRecognitionEngine.LoadGrammar(CustomGrammar); } catch (Exception ex) { UnityModule.DebugPrint("为语音识别引擎导入语法 [{0}] 时遇到错误:{1}", ex.Message); //try //{ // //导入语法出错时,使用系统默认识别语法 // UnitySpeechRecognitionEngine.LoadGrammar(new DictationGrammar()); //} //catch (Exception ex1) { // UnityModule.DebugPrint("导入默认语法遇到错误:{0}", ex1.Message); //} } }
/// <summary> /// 启动语音识别引擎 /// </summary> /// <param name="PreferredCulture">语言区域(默认为 中文/"zh-CN")</param> /// <returns>是否启动成功</returns> public bool StartUpSREngine() { try { //检测一次,如果语音识别引擎为null,使用默认参数创建一次,并再次检测为null时,结束函数 if (UnitySpeechRecognitionEngine == null) { UnityModule.DebugPrint("语音识别引擎为 null,使用默认参数创建语音识别引擎..."); CreateSREngine(); if (UnitySpeechRecognitionEngine == null) { return(false); } } //开始启动执行一个或多个异步语音识别操作 UnitySpeechRecognitionEngine.RecognizeAsync(RecognizeMode.Multiple); } catch (Exception ex) { UnityModule.DebugPrint("启动语音识别引擎时遇到错误:{0}", ex.Message); return(false); } return(true); }
/// <summary> /// 创建语音识别引擎 /// </summary> /// <param name="PreferredCulture">优先</param> /// <returns></returns> public bool CreateSREngine(string PreferredCulture = "zh-CN") { System.Collections.ObjectModel.ReadOnlyCollection <RecognizerInfo> RecognizerInfoArray; try { //返回系统中所有语音识别器信息 RecognizerInfoArray = SpeechRecognitionEngine.InstalledRecognizers(); UnityModule.DebugPrint("获取系统所有语言识别器信息集合成功"); //语音识别器集合格式小于1,无法创建语音识别器 if (RecognizerInfoArray.Count < 1) { UnityModule.DebugPrint("语音识别器集合包含的识别器个数为 {0} ,无法创建语音识别引擎!", RecognizerInfoArray.Count.ToString()); return(false); } //查询匹配的语音识别引擎信息 RecognizerInfo PreferredRecognizer = null; try { PreferredRecognizer = RecognizerInfoArray.First <RecognizerInfo>(preferredRecognizer => preferredRecognizer.Culture.ToString() == PreferredCulture); UnityModule.DebugPrint("查询匹配的语音识别引擎信息成功 {0}", PreferredRecognizer.Description); } catch (Exception exIn) { UnityModule.DebugPrint("未查询到匹配的首选语音识别引擎信息:{0}", exIn.Message); PreferredRecognizer = RecognizerInfoArray.First(); UnityModule.DebugPrint("将使用系统第一语音识别引擎:{0} ({1}) / {2}", PreferredRecognizer.Name, PreferredRecognizer.Culture.ToString(), PreferredRecognizer.Description); } if (PreferredRecognizer == null) { UnityModule.DebugPrint("语音识别器信息为 null,无法创建语音识别引擎"); return(false); } UnitySpeechRecognitionEngine = new SpeechRecognitionEngine(PreferredRecognizer); UnityModule.DebugPrint("创建语音识别引擎成功!"); //为语音识别引擎注册事件 UnitySpeechRecognitionEngine.AudioLevelUpdated += new EventHandler <AudioLevelUpdatedEventArgs>(UnitySREngine_AudioLevelUpdated); UnitySpeechRecognitionEngine.SpeechRecognized += new EventHandler <SpeechRecognizedEventArgs>(UnitySREngine_SpeechRecognized); UnitySpeechRecognitionEngine.AudioStateChanged += new EventHandler <AudioStateChangedEventArgs>(UnitySREngine_AudioStateChanged); UnityModule.DebugPrint("语音识别引擎注册事件成功"); //使用系统默认音频输入设备 UnitySpeechRecognitionEngine.SetInputToDefaultAudioDevice(); UnityModule.DebugPrint("使用默认音频输入设备"); } catch (Exception ex) { UnityModule.DebugPrint("启动语音识别引擎时遇到错误:{0}", ex.Message); return(false); } return(true); }
/// <summary> /// 停止语音识别引擎 /// </summary> public void StopSREngine() { UnityModule.DebugPrint("停止语音识别引擎..."); try { if (UnitySpeechRecognitionEngine == null) { return; } UnitySpeechRecognitionEngine.RecognizeAsyncStop(); } catch (Exception ex) { UnityModule.DebugPrint("关闭语音识别引擎时出错:{0}" + ex.Message); } }
public void CloseConnection() { UnityModule.DebugPrint("正在关闭数据库连接..."); try { if (DataBaseConnection == null) { return; } DataBaseConnection.Close(); DataBaseConnection = null; DataBaseCommand = null; } catch (Exception ex) { UnityModule.DebugPrint("关闭数据库连接时遇到错误:", ex.Message); } UnityModule.DebugPrint("已经关闭数据库连接"); }
/// <summary> /// 创建语音朗读引擎 /// </summary> /// <returns></returns> public bool CreateSpeechSynthesizer() { try { UnitySpeechSynthesizer = new SpeechSynthesizer(); UnityModule.DebugPrint("创建语音朗读引擎成功"); UnitySpeechSynthesizer.SpeakStarted += new EventHandler <SpeakStartedEventArgs>(delegate(object s, SpeakStartedEventArgs e) { UnityModule.DebugPrint("<<<开始语音朗读,暂时停止监听语音指令."); try { if (UnitySpeechRecognitionEngine != null) { UnitySpeechRecognitionEngine.RecognizeAsyncStop(); } } catch (Exception ex) { UnityModule.DebugPrint("暂时停止监听语音指令时遇到错误:{0}", ex.Message); } }); UnitySpeechSynthesizer.SpeakCompleted += new EventHandler <SpeakCompletedEventArgs>(delegate(object s, SpeakCompletedEventArgs e) { UnityModule.DebugPrint(">>>语音朗读结束,重新开始监听语音指令..."); try { if (UnitySpeechRecognitionEngine != null) { UnitySpeechRecognitionEngine.RecognizeAsync(RecognizeMode.Multiple); } } catch (Exception ex) { UnityModule.DebugPrint("重新监听语音指令时遇到错误:{0}", ex.Message); } }); UnityModule.DebugPrint("语音朗读引擎事件绑定成功"); } catch (Exception ex) { UnityModule.DebugPrint("创建语音朗读引擎遇到错误:{0}", ex.Message); return(false); } return(true); }
/// <summary> /// 语音播报信息 /// </summary> /// <param name="Message">需要语音播报的信息</param> public void VoiceSpeak(string Message) { try { //检测一次,如果语朗读别引擎为null,使用默认参数创建一次,并再次检测为null时,结束函数 if (UnitySpeechSynthesizer == null) { UnityModule.DebugPrint("语音朗读引擎为 null,使用默认参数创建语音识别引擎..."); CreateSpeechSynthesizer(); if (UnitySpeechSynthesizer == null) { return; } } UnityModule.DebugPrint("开始语音播报:{0}", Message); UnitySpeechSynthesizer.SpeakAsync(Message); } catch (Exception ex) { UnityModule.DebugPrint("语音朗读时遇到错误:{0}", ex.Message); } }
private void UnitySREngine_AudioStateChanged(object sender, AudioStateChangedEventArgs e) { UnityModule.DebugPrint("语音状态改变:{0}", e.AudioState.ToString()); //语音状态改变 }