Пример #1
0
        /// <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
        }
Пример #2
0
 /// <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;
     }
 }
Пример #3
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;
            }
        }
Пример #4
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();
            }
        }