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