/// <summary> /// 语音呼叫 /// </summary> /// <param name="source"></param> /// <param name="e"></param> private void SpeechCalled_thread(object callstring) { if (callstring == null || callstring.ToString() == "") { return; } #region 语音 呼叫 try { //toText(name, deptname); int cs = calltimes;//释放资源 if (cs <= 0) { cs = 1; } string callString = callstring.ToString(); LED_Operate.toText("操作日志", "SpeechCalled_thread:begin "); for (int i = 0; i < cs - 1; i++) { callString += "," + callstring.ToString(); } SpeechCalled(callString); LED_Operate.toText("操作日志", "SpeechCalled_thread:end "); } catch (Exception ex) { LED_Operate.toText("错误日志", "叫号错误:" + ex.Message); } #endregion }
/// <summary> /// 计时器 /// </summary> /// <param name="source"></param> /// <param name="e"></param> private void Timer_Tick(object source, System.Timers.ElapsedEventArgs e) { while (state == 1) { } lock ((object)state) { state = 1; try { for (int i = 0; i < windows.Count; i++) { TimeSpan sp = DateTime.Now - windows[i].CallTime; if (sp.TotalMinutes > _qingpingshijian) { windows[i].CallTime = DateTime.Now; ledOper.Display(sentens, Convert.ToInt32(windows[i].WinCode)); break; } } } catch (Exception err) { LED_Operate.toText("错误日志", "显示报错:" + err.Message); } state = 0; } }
/// <summary> /// 操作 /// </summary> /// <param name="name"></param> /// <param name="winname"></param> /// <param name="wincode"></param> /// <param name="deptid"></param> private void LedShowMothed(string name, string winname, string wincode, string deptid) { LED_Operate.toText("操作日志", "LedShowMothed:while begin "); while (state == 1) { } lock ((object)state) { LED_Operate.toText("操作日志", "lock:begin "); state = 1; //System.Threading.Thread.Sleep(1000); //MessageBox.Show("ddddd"); string showstring = "请" + name + "取药"; //string callstring = "请" + name + "到" + winname + "来取药"; string callstring = "请" + name.Trim() + "" + winname.Trim() + "取药"; // jianqg 2014-6-11 先显示,再呼叫 #region 语音 呼叫 try { //改线程 LED_Operate.toText("操作日志", "语音:begin "); System.Threading.Thread thread = new System.Threading.Thread(new System.Threading.ParameterizedThreadStart(SpeechCalled_thread)); thread.Start(callstring); ////toText(name, deptname); //int cs = calltimes;//释放资源 //if (cs <= 0) cs = 1; //for (int i = 0; i < cs - 1; i++) //{ // SpeechCalled(callstring); //} } catch (Exception ex) { LED_Operate.toText("错误日志", "叫号错误:" + ex.Message); } #endregion #region //输出显示 try { //一个窗口叫同一个人姓名,则不再往已叫号队列中插入该人姓名 for (int i = 0; i < windows.Count; i++) { //if (windows[i].WinCode == wincode && windows[i].Calling == name) // return; if (windows[i].WinCode == wincode && windows[i].Calling != name) { //MessageBox.Show(name); windows[i].Calling = name; windows[i].CallTime = DateTime.Now;//记录叫号时间 ledOper.Display(showstring.Trim(), Convert.ToInt32(wincode)); //int j = List.IndexOf(name); //if (j == -1) // List.Add(name); //MessageBox.Show(i.ToString() + windows[i].WinCode + windows[i].Calling + showstring); break; } } //ShowCalled(showstring, winname); //释放资源 //ShiFangZiYuan(); } catch (Exception ex) { LED_Operate.toText("错误日志", "显示错误:" + ex.Message); } #endregion #region //配置了未发药窗口的编号,就执行叫号未发药的流程 try { //配置了未发药窗口的编号,就执行叫号未发药的流程 if (orderwindows != "") { string orderShow = CallOrder(deptid); ledOper.Display(orderShow, Convert.ToInt32(orderwindows)); } } catch (Exception err) { LED_Operate.toText("错误日志", "排序错误:" + err.Message); } #endregion LED_Operate.toText("操作日志", "LedShowMothed:end "); state = 0; //释放资源 LED_Operate.ShiFangZiYuan(); } }