public bool bFimLigacao() { bool bRespostaOK = false; try { if (m_bModemInicializado) { enviaMensagem("+++" + System.Environment.NewLine); System.Threading.Thread.Sleep(2000); lock (m_strResposta) { while (m_strResposta.Trim() != "OK" && m_strResposta.Trim() != "ERROR") { m_strResposta = m_SysIOStreamReader.ReadLine(); if (m_strResposta.Trim().ToUpper() == "NO CARRIER") { return(false); } } } System.Threading.Monitor.Exit(m_strResposta); enviaMensagem("ATH1" + System.Environment.NewLine); lock (m_strResposta) { while (m_strResposta.Trim() != "OK" && m_strResposta.Trim() != "ERROR") { m_strResposta = m_SysIOStreamReader.ReadLine(); if (m_strResposta.Trim().ToUpper() == "NO ANSWER") { return(false); } } } System.Threading.Monitor.Exit(m_strResposta); if (m_strResposta == "OK") { m_dtFimLigacao = System.DateTime.Now; bRespostaOK = true; m_bModemInicializado = false; m_SysIOStreamWriter.Close(); m_SysIOStreamReader.Close(); m_clsSerialStream.Close(); m_SysIOStreamWriter = null; m_SysIOStreamReader = null; m_clsSerialStream = null; } } } catch (Exception err) { Object erro = err; m_cls_ter_tratamentoErro.trataErro(ref erro); } return(bRespostaOK); }
private void pesquisaModemPortasComm() { try { bool bResultado = true; m_clsSerialStream = new clsSerialStream(); m_clsSerialStream.eCallSetaWaitHandle += new clsSerialStream.delCallSetaWaitHandle(setaHandle); m_clsSerialStream.Open(m_strPortaCOMModem + m_nPortaCOMModem.ToString()); // Configura porta m_clsSerialStream.SetPortSettings(9600); // Seta timeout, leitura termina após 20ms de silêncio após uma resposta m_clsSerialStream.SetTimeouts(0, 0, 20, 0, 20); // Cria o StreamWriter para enviar os comandos m_SysIOStreamWriter = new StreamWriter(m_clsSerialStream, System.Text.Encoding.ASCII); m_SysIOStreamReader = new StreamReader(m_clsSerialStream, System.Text.Encoding.ASCII); enviaMensagem("AT" + System.Environment.NewLine); lock (m_strResposta) { while ((m_strResposta != null) && (m_strResposta.Trim() == "")) { m_strResposta = m_SysIOStreamReader.ReadLine(); } if ((m_strResposta == null) || (m_strResposta.Trim().ToUpper() != "OK")) { m_nPortaCOMModem++; bResultado = false; } m_strResposta = ""; } System.Threading.Monitor.Exit(m_strResposta); if ((bResultado == false) && (m_nPortaCOMModem < 5)) { pesquisaModemPortasComm(); } } catch (Exception err) { Object erro = err; m_cls_ter_tratamentoErro.trataErro(ref erro); } }
private void criaComunicacao() { try { if (m_clsSerialStream == null) { m_clsSerialStream = new clsSerialStream(); m_clsSerialStream.eCallSetaWaitHandle += new clsSerialStream.delCallSetaWaitHandle(setaHandle); m_clsSerialStream.Open(m_strPortaCOMModem + m_nPortaCOMModem.ToString()); } // Configura porta m_clsSerialStream.SetPortSettings(9600); // Seta timeout, leitura termina após 20ms de silêncio após uma resposta m_clsSerialStream.SetTimeouts(20, 0, 0, 0, 0); if (m_SysIOStreamWriter == null) { // Cria o StreamWriter para enviar os comandos m_SysIOStreamWriter = new StreamWriter(m_clsSerialStream, System.Text.Encoding.ASCII); } if (m_SysIOStreamReader == null) { m_SysIOStreamReader = new StreamReader(m_clsSerialStream, System.Text.Encoding.ASCII); } // Cria a Thread para ler as respostas // m_ThreadLeitorResposta = new Thread(new ThreadStart(ThreadLeResposta)); // m_ThreadLeitorResposta.Name = "Thread de Leitura"; // m_ThreadLeitorResposta.Start(); } catch (Exception err) { Object erro = err; m_cls_ter_tratamentoErro.trataErro(ref erro); } }