/// <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; } }
private void FrmServer_Load(object sender, EventArgs e) { try { LED_Operate.DeleteFile_Log("错误日志"); LED_Operate.DeleteFile_Log("操作日志"); FileVersionInfo myFileVersionInfo = FileVersionInfo.GetVersionInfo(Constant.ApplicationDirectory + "\\" + "LED_RemotingServer.exe"); this.Text = "LED服务端 版本:" + myFileVersionInfo.FileMajorPart + "." + myFileVersionInfo.FileMinorPart + "." + myFileVersionInfo.FileBuildPart + "." + myFileVersionInfo.FilePrivatePart; TcpServerChannel server = new TcpServerChannel(8080); string se = server.GetChannelUri(); ChannelServices.RegisterChannel(server, false); RemotingConfiguration.RegisterWellKnownServiceType(typeof(LedShow), "LED", WellKnownObjectMode.Singleton); //RemotingObj.UsersInfo.SendEventArgs += new RemotingObj.UsersInfo.SendEventHandler(ListBox_Add); //RemotingObj.UsersInfo.SendEventArgs += delegate(string s) { MessageBox.Show(s); }; LedShow.LedShowedEvent += new ICommon.LedShowEventHandler(LedShowMothed); listBox1.Items.Add("服务器TCP地址:" + se); listBox1.Items.Add("服务器开启时间:" + DateTime.Now.ToString()); strs = showwindowstring.Split('|'); if (strs != null) { for (int i = 0; i < strs.Length; i++) { WindowsInfo window = new WindowsInfo(i.ToString()); window.WinName = strs[i]; window.CallTime = DateTime.Now; windows.Add(window); listBox1.Items.Add("窗口" + i.ToString() + ":" + window.WinName); } } this.toolStripStatusLabel1.Text = "服务启动成功!"; if (sentens == "") { //sentens = "谢谢惠顾"; } //清屏时间 if (TrasenClasses.GeneralClasses.Convertor.IsInteger(LED_Operate.qingpingshijian)) { int qingpingshijian = int.Parse(LED_Operate.qingpingshijian); if (qingpingshijian >= 1) { _qingpingshijian = qingpingshijian; } } this.WindowState = FormWindowState.Normal; myTimer = new System.Timers.Timer(1000 * 30);//(30000); myTimer.Elapsed += Timer_Tick; myTimer.Enabled = true; myTimer.Start(); } catch (Exception ex) { this.toolStripStatusLabel1.Text = ex.Message; } }
/// <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(); } }