/// <summary> /// 查找服务器上的声卡设备 /// </summary> public void SearchSoundDevice() { cycleSoundFile = IEGInterface.Properties.Settings.Default.CycleSound; try { DevicesCollection devColl = new DevicesCollection(); Form frm = new Form(); //正常情况下,服务器自带一个声卡设备,故设备号从1开始 for (int i = 1; i < devColl.Count; i++) { DeviceInformation info = (DeviceInformation)devColl[i]; if (string.IsNullOrEmpty(info.ModuleName)) { continue; } CWSException.WriteLog("声卡-" + (i - 1).ToString() + " 描述:" + info.Description, 4); Guid Dguid = info.DriverGuid; Device dev = new Device(Dguid); dev.SetCooperativeLevel(frm, CooperativeLevel.Normal); devs.Add(dev); } } catch (Exception ex) { CWSException.WriteError(ex.ToString()); } }
/// <summary> /// 刷卡操作 /// </summary> public void ICCardRead() { try { uint ICCardNo = 0; if (isConn) { int nback = 1; Int16 nICType = 0; nback = moICCard.RequestICCard(ref nICType); //寻卡 if (nback == 0) { nback = moICCard.SelectCard(ref ICCardNo); //选择卡 if (nback == 0) { //将读取的IC卡号传送到Web服务器上 Program.mng.DealCardMessage(mHallID, ICCardNo.ToString()); //记录 CWSException.WriteLog(mHallID.ToString() + " " + ICCardNo.ToString(), 3); } } } else { this.ConnectCom(); } } catch (Exception ex) { throw new Exception("函数ICCardRead异常:" + ex.ToString()); } }
private void btnStop_Click(object sender, EventArgs e) { btnStart.Enabled = true; try { #region isStart = false; bool isStop = true; try { isStop = isStop && DealMessageThread.Join(500); } catch (Exception ex) { CWSException.WriteError(ex.ToString()); } try { isStop = isStop && ICCardH1Thread.Join(500); } catch (Exception ex) { CWSException.WriteError(ex.ToString()); } try { isStop = isStop && ICCardH2Thread.Join(500); } catch (Exception ex) { CWSException.WriteError(ex.ToString()); } try { isStop = isStop && ICCardH3Thread.Join(500); } catch (Exception ex) { CWSException.WriteError(ex.ToString()); } try { isStop = isStop && ICCardH4Thread.Join(500); } catch (Exception ex) { CWSException.WriteError(ex.ToString()); } try { isStop = isStop && SoundH1Thread.Join(500); } catch (Exception ex) { CWSException.WriteError(ex.ToString()); } try { isStop = isStop && SoundH2Thread.Join(500); } catch (Exception ex) { CWSException.WriteError(ex.ToString()); } try { isStop = isStop && SoundH3Thread.Join(500); } catch (Exception ex) { CWSException.WriteError(ex.ToString()); } try { isStop = isStop && SoundH4Thread.Join(500); } catch (Exception ex) { CWSException.WriteError(ex.ToString()); } try { isStop = isStop && LogThread.Join(500); } catch (Exception ex) { CWSException.WriteError(ex.ToString()); } //日志 if (isStop == true) { CWSException.WriteLog("服务已经停止!", 4); btnStop.Enabled = false; } else { CWSException.WriteLog("服务未全停止!", 4); } #endregion } catch (Exception ex) { CWSException.WriteError("windows服务停止异常:" + ex.ToString()); } }
/// <summary> /// 发送数据至相应的声卡设备 /// </summary> /// <param name="hallID">车厅号</param> /// <param name="soundCom">声卡端口</param> public void MakeSound(int hallID, int soundCom) { try { if (devs.Count >= soundCom) { int idx = hallID - 11; //从Web服务上获取相应车厅的声音文件,待写 string soundFile = Program.mng.GetCurrentSound(hallID); //声音归类 if (soundFile != null) { hallsSound[idx] = soundFile; //将各个车厅的声音进行集合 } else { if (hallsSound[idx] == null) //各个车厅没有要播放的声音 { return; } //循环播放的声音文件 string[] sounds = cycleSoundFile.Split(new char[] { ',' }); if (!sounds.Contains(hallsSound[idx].Substring(0, hallsSound[idx].Length - 4))) { return; } else { Thread.Sleep(12000); //循环播放的间隔 } } //强制结束语音 if (hallsSound[idx] == "end") { hallsSound[idx] = null; return; } try { //播放语音 string path = Application.StartupPath + @"\sound\" + hallsSound[idx]; if (File.Exists(path)) { if (buf != null) { buf.Stop(); buf.Dispose(); buf = null; } using (BufferDescription desc = new BufferDescription()) { desc.Flags = BufferDescriptionFlags.GlobalFocus; buf = new SecondaryBuffer(path, desc, devs[soundCom]); //向指定声卡号soundCom播放语音 buf.Play(0, BufferPlayFlags.Default); CWSException.WriteLog(hallID.ToString() + " " + "声卡-" + soundCom.ToString() + " 语音:" + hallsSound[idx], 2); Thread.Sleep(1000); } } else { CWSException.WriteError("缺少音频文件:" + path); } } catch (Exception e1) { string mess = "异常1:" + e1.ToString(); try { buf.Dispose(); buf = null; } catch (Exception e2) { mess += " 异常2:" + e2.ToString(); } throw new Exception(mess); } } } catch (Exception ex) { CWSException.WriteError("车厅-" + hallID.ToString() + " 发声时异常:" + ex.ToString()); } }
protected override void OnStart(string[] args) { if (isStart == false) { #region isStart = true; cmsgif = new CMessageInterface(); icrdOne = new ICCardReader(11, Convert.ToInt32(hall1Com)); icrdTwo = new ICCardReader(12, Convert.ToInt32(hall2Com)); icrdThree = new ICCardReader(13, Convert.ToInt32(hall3Com)); icrdFour = new ICCardReader(14, Convert.ToInt32(hall4Com)); //消息线程 try { DealMessageThread = new Thread(new ThreadStart(DealMessage)); DealMessageThread.Start(); } catch (Exception ex) { CWSException.WriteError("PLC线程启动异常:" + ex.ToString()); } //刷卡器1线程 try { ICCardH1Thread = new Thread(new ThreadStart(DealH1ICCardAction)); ICCardH1Thread.Start(); } catch (Exception ex) { CWSException.WriteError("刷卡器1线程启动异常:" + ex.ToString()); } //刷卡器2线程 try { ICCardH2Thread = new Thread(new ThreadStart(DealH2ICCardAction)); ICCardH2Thread.Start(); } catch (Exception ex) { CWSException.WriteError("刷卡器2线程启动异常:" + ex.ToString()); } //刷卡器3线程 try { ICCardH3Thread = new Thread(new ThreadStart(DealH3ICCardAction)); ICCardH3Thread.Start(); } catch (Exception ex) { CWSException.WriteError("刷卡器3线程启动异常:" + ex.ToString()); } //刷卡器4线程 try { ICCardH4Thread = new Thread(new ThreadStart(DealH4ICCardAction)); ICCardH4Thread.Start(); } catch (Exception ex) { CWSException.WriteError("刷卡器4线程启动异常:" + ex.ToString()); } //车厅1声音线程 try { SoundH1Thread = new Thread(new ThreadStart(DealHall1Sound)); SoundH1Thread.Start(); } catch (Exception ex) { CWSException.WriteError("车厅1声音线程启动异常:" + ex.ToString()); } //车厅2声音线程 try { SoundH2Thread = new Thread(new ThreadStart(DealHall2Sound)); SoundH2Thread.Start(); } catch (Exception ex) { CWSException.WriteError("车厅2声音线程启动异常:" + ex.ToString()); } //车厅3声音线程 try { SoundH3Thread = new Thread(new ThreadStart(DealHall3Sound)); SoundH3Thread.Start(); } catch (Exception ex) { CWSException.WriteError("车厅3声音线程启动异常:" + ex.ToString()); } //车厅4声音线程 try { SoundH4Thread = new Thread(new ThreadStart(DealHall4Sound)); SoundH4Thread.Start(); } catch (Exception ex) { CWSException.WriteError("车厅4声音线程启动异常:" + ex.ToString()); } //故障记录 try { LogThread = new Thread(new ThreadStart(DealRecordLog)); LogThread.Start(); } catch (Exception ex) { CWSException.WriteError("故障记录线程启动异常:" + ex.ToString()); } CWSException.WriteLog("服务已经启动!", 4); #endregion } }
protected override void OnStop() { #region isStart = false; bool isStop = true; try { isStop = isStop && DealMessageThread.Join(500); } catch (Exception ex) { CWSException.WriteError(ex.ToString()); } try { isStop = isStop && ICCardH1Thread.Join(500); } catch (Exception ex) { CWSException.WriteError(ex.ToString()); } try { isStop = isStop && ICCardH2Thread.Join(500); } catch (Exception ex) { CWSException.WriteError(ex.ToString()); } try { isStop = isStop && ICCardH3Thread.Join(500); } catch (Exception ex) { CWSException.WriteError(ex.ToString()); } try { isStop = isStop && ICCardH4Thread.Join(500); } catch (Exception ex) { CWSException.WriteError(ex.ToString()); } try { isStop = isStop && SoundH1Thread.Join(500); } catch (Exception ex) { CWSException.WriteError(ex.ToString()); } try { isStop = isStop && SoundH2Thread.Join(500); } catch (Exception ex) { CWSException.WriteError(ex.ToString()); } try { isStop = isStop && SoundH3Thread.Join(500); } catch (Exception ex) { CWSException.WriteError(ex.ToString()); } try { isStop = isStop && SoundH4Thread.Join(500); } catch (Exception ex) { CWSException.WriteError(ex.ToString()); } try { isStop = isStop && LogThread.Join(500); } catch (Exception ex) { CWSException.WriteError(ex.ToString()); } //日志 if (isStop == true) { CWSException.WriteLog("服务已经停止!", 4); } else { CWSException.WriteLog("服务未全停止!", 4); } #endregion }