Docstoc

Comunica o Serial e Paralela(1)

Document Sample
Comunica  o Serial e Paralela(1) Powered By Docstoc
					PUCRS – PONTIFÍCIA UNIVERSIDADE CATÓLICA DO RIO GRANDE DO SUL




               TRABALHO FINAL




                   IGOR KRAMER PINOTTI
                VINíCIUS SANTOS DA SILVA


                   Programação de Periféricos



                            Turma 590




                          Eduardo Bezerra




                 Porto Alegre – 05 de Dezembro 2007
                                       ESPECIFICAÇÃO



                    “O telefone celular como dispositivo periferico”
       O trabalho consiste em um implementação de um sistema que defina o celular como
dispositivo periférico. A principal sugestão é de desenvolver um Sistema de controle de frequência,
como especificado na figura abaixo, porém sem o uso da placa e sim de um computador.




                               Figura 1. Attendance system block diagram
                                         INTRODUÇÃO




       A idéia do projeto era seguir a sugestão principal passada pelo professor, fazermos uma
chamada eletrônica baseada em troca de mensagens SMS, mas decidimos analisar a viabilidade do
projeto e vimos que seria inviável financeiramente para os alunos esta chamada, sem contar o fato
de o aluno poder estar em qualquer lugar sem ser a sala de aula e ter como enviar a mensagem ao
servidor ganhando presença como se estivesse em sala de aula.

       Assim decidimos fazer o processo inverso, mandar uma mensagem de um computador para
um aparelho celular. Programas como este são utilizados principalmente em alarmes, tanto
residenciais como de automóveis, além de utilizados em servidores, pois podem ser programados
para em caso de alguma anormalidade enviar uma notificação no celular do administrador do
sistema sobre o status de determinadas tarefa.
                             DESENVOLVIMENTO DO PROJETO




       Para o desenvolvimento do projeto, foi utilizado o laboratório de redes da FACIN, com
acesso “ROOT” no sistema LINUX – UBUNTU. Com isso, tínhamos livre acesso ao computador,
para assim fazer os testes necessários para a criação do software.

       Para implementar este programa utilizamos a idéia de montar a string http gerada pelo botão
submit do site das próprias operadoras de telefonia celular que oferecem o serviço de torpedo WEB.
Desenvolvemos assim um o programa em C++ chamando o navegador em modo texto (lynx)
usando como endereço a string criada pelo programa. Para este programa utilizamos somente o site
da operadora Claro.
                                MODELAGEM DO SISTEMA




       O sistema funciona em computadores que utilizam o Sistema Operacional LINUX.

       Para o desenvolvimento foi utilizado o software Kate (Linux).

       A implementação inicial do Sistema foi baseada em construir um método que fizesse o
procedimento de enviar as informações necessárias ao site de torpedo web. Para enviar a
mensagem, devemos preencher os campos obrigatório: DDD, número do telefone destinatário, o
nome do remetente e a mensagem.

Para este método criamos a função:
string envioClaro(string mDDD, string mNumero, string mNome, string mMSG) {
      string mRet;

       int i, limite, usado;
       limite = 135;

       usado = mNome.size()+mMSG.size();
       std::cout <<"Tamanho da Mensagem:"<< usado << " Caracteres" << std::endl;
       limite = limite - usado;

      mRet = "lynx -dump -accept_all_cookies \42";
      // Novo site da Claro, agora o site não funciona corretamente!
      mRet = mRet +
"http://clarotorpedoweb.claro.com.br/ClaroTorpedoWeb/pwdForm.jsp?ddd_para="; //
Novo
      // Antigo site da claro, nesse funcionava perfeitamente o programa
      //mRet = mRet +
"http://www2.claro.com.br/torpedoweb/popup_senderJava.asp?ddd_para="; // Antigo

      mRet = mRet + mDDD + "&telefone_para=" + mNumero + "&nome_de=" + mNome;
      mRet = mRet + "&ddd_de=&telefone_de=&msg=" + mMSG + "&caract=" +
IntToString(limite) + "\42";
      return mRet;
}

       Essa função recebe os valores necessários ao envio da mensagem, são eles: DDD, número
do celular, nome do remetente e a própria mensagem.

       A variável usado recebe a quantidade de caracteres da mensagem, pois o envio do site tem
um limite de 135 caracteres.

       Os valores recebidos são colocados em uma String que é a usada para o envio pelo site.
      Foram criadas duas versões deste programa:

      A primeira versão (TrabPPv1.cpp) possui a entrada por parâmetros que são recebidos pela
main (int main (int argc, char** argv))

      Atraves destes parâmetros recebidos em argv, os atributos são preenchidos
lDDD = argv[1];
      std::cout << "DDD: " << lDDD << std::endl;

      lNumero = argv[2];
      std::cout << "NUMERO: " << lNumero << std::endl;

      lNome = argv[3];
      std::cout << "SEU NOME: " << lNome << std::endl;
      replace(lNome.begin(),lNome.end(), ' ', '+');

      lMSG = argv[4];
      std::cout << "MENSAGEM: " << lMSG << std::endl;
      replace(lMSG.begin(),lMSG.end(), ' ', '+');


      e então é chamada a função de envioClaro - executa(envioClaro(lDDD, lNumero, lNome,
lMSG));.

      A segunda versão (TrabPPv2.cpp) possui a entrada digitada pelo usuário na main (int
main ())

std::cout << "\t.:::::::::::::::::::::::::::::::::::::::::::." << std::endl;
      std::cout << "\t::                                         ::" <<
std::endl;
      std::cout << "\t::                                         ::" <<
std::endl;
      std::cout << "\t::           Digite a opcao desejada       ::" <<
std::endl;
      std::cout << "\t::                                         ::" <<
std::endl;
      std::cout << "\t::                                         ::" <<
std::endl;
      std::cout << "\t::            [1] Enviar SMS Claro         ::" <<
std::endl;
      std::cout << "\t::            [9] Sair                     ::" <<
std::endl;
      std::cout << "\t::                                         ::" <<
std::endl;
      std::cout << "\t:::::::::::::::::::::::::::::::::::::::::::::" <<
std::endl << std::endl << std::endl;

      cin >> op;

      if (op == 1 || op == 9) {
            if (op == 1) {    //Envia mensagem SMS da Operadora Claro
                        std::cout << "\tDigite o DDD: ";
                        std::cin >> lDDD;

                           std::cout << "\tDigite o NUMERO: ";
                           std::cin >> lNumero;

                           std::cout << "\tDigite o seu NOME: ";
                           std::cin >> lNome;
                             std::cout << "\tDigite a MENSAGEM: ";
                             cin >> lMSG;
                             getline(cin, linha);
                             lMSG = lMSG + linha;

                             std::cout << "DDD: " << lDDD << std::endl;

                             std::cout << "NUMERO: " << lNumero << std::endl;

                             std::cout << "NOME: " << lNome << std::endl;
                             replace(lNome.begin(), lNome.end(), ' ' ,'+');

                             std::cout << "MSG: " << lMSG << std::endl;
                             replace(lMSG.begin(), lMSG.end(), ' ', '+');

                             executa(envioClaro(lDDD, lNumero, lNome, lMSG));

                     }else { // Sair do programa
                           std::cout << "\tSaindo do Programa.... " << std::endl;
                           return 0;
           }         // opcao invalida!
     } else {
           std::cout << "\tOpcao Invalida " << std::endl;
           return 1;
     }

     Quando a opção é valida é perguntado ao usuário as informações e elas são armazenadas.
Após é chamado o método envioClaro - executa(envioClaro(lDDD, lNumero, lNome,
lMSG));.

     Foi criado tratamento para exceção no sistema:

     - Controle da opção digitada pelo usuário;

          Porém não foram criados controles quanto aos parâmetros que são recebidos pela main
           nem pelos digitados pelo usuário.
                                           PROBLEMAS ENFRENTADOS



       Durante a implementação deste sistema encontramos alguns problemas:

    Problemas com a string do novo site da Claro, pois utilizamos como base um programa criado
por um integrante do grupo que funcionava no antigo site da claro que foi desenvolvido em ASP, o
novo site esta em JSP.




                                            SOLUÇÕES ENCONTRADAS



Analisamos o código da pagina da Claro, desenvolvido em JSP
<!-- *********************** Inicio Torpedos ******************************** -->

<form action="http://clarotorpedoweb.claro.com.br/ClaroTorpedoWeb/pwdForm.jsp" method="post" name="Main" target="pwdwindow">


<tr>
        <td valign="top">
                <table border="0" cellpadding="0" cellspacing="0" width="294">
                <tr>
                                 <td height="8"><img src="/portal/beans/moduloclaroideiaslivrehome/jsp/imagens/_pixel.gif" width="1"
height="8" alt=""></td>
<!--            <td width="104" rowspan="2">&nbsp;</td>-->
                </tr>
                         <tr>
                   <td background="/portal/beans/moduloclaroideiaslivrehome/jsp/imagens/home_bg_torpedo.gif" valign="top"
bgcolor="#F2F2F2">
                                 <table border="0" cellpadding="0" cellspacing="0" width="100%">


                        <tr>
                                <td colspan="4" bgcolor="E3E2E3"><img
src="/portal/beans/moduloclaroideiaslivrehome/jsp/imagens/_pixel.gif" width="1" height="1" alt=""></td>
                        </tr>
                                                <tr>
                                <td width="20" class="servicos-texto3"><p><img
src="/portal/beans/moduloclaroideiaslivrehome/jsp/imagens/_pixel.gif" width="20" height="10"></p></td>
                        <td width="130" valign="top" class="verdana9Cinza"><br>
                                  <img src="/portal/beans/moduloclaroideiaslivrehome/jsp/imagens/home_tit_torpedoweb.gif" width="68"
height="44"><BR><img src="/portal/beans/moduloclaroideiaslivrehome/jsp/imagens/_pixel.gif" width="100" height="3" alt=""><br>
                          Envie Torpedos gratuitamente para qualquer celular Claro.</td>


                            <td width="10" valign="top" class="verdana9Cinza"><img
src="/portal/beans/moduloclaroideiaslivrehome/jsp/imagens/_pixel.gif" width="10" height="10"></td>
                            <td align="center">
                                <table border="0" cellpadding="0" cellspacing="3">
                                    <tr>
                                      <td class="verdana9" style="color:#D65D5D"> Para: </td>
                                    </tr>
                                    <tr>
                                      <td class="verdana9"><input type="Text" name="ddd_para" class="verdana9" style="background-
color:#D8D8D8;color:#666666;" size="3" maxlength="2" value="DDD" onkeyup="twdddpara_pula()" onfocus="twlimpa_dddPara();"
>&nbsp;<input type="Text" name="telefone_para" class="verdana9" style="background-color:#D8D8D8;color:#666666;" size="13"
maxlength="8" value="Celular Claro" onFocus="twlimpa_telefonePara();" ></td>


                                    </tr>
                                    <tr>
                                       <td class="verdana9" style="color:#D65D5D"> De: </td>
                                    </tr>
                                    <tr>
                                       <td class="verdana9"><input type="Text" name="nome_de" class="verdana9" style="background-
color:#D8D8D8; width:111px;color:#666666;" size="19" maxlength="8" value="Seu Nome"
onfocus="twlimpa_nomeDe();twVerificaTamanho(msg);" onChange="twVerificaTamanho(msg)" onKeyDown="twVerificaTamanho(msg)"
onKeyUp="twVerificaTamanho(msg)"></td>
                                    </tr>
                                    <tr>


                                      <td class="verdana9"><input type="Text" name="ddd_de" class="verdana9" style="background-
color:#D8D8D8;color:#666666;" size="3" maxlength="2" value="DDD" onChange="twVerificaTamanho(msg)"
onFocus="twlimpa_dddDe();twVerificaTamanho(msg);" onKeyDown="twVerificaTamanho(msg)"
onKeyUp="twVerificaTamanho(msg);twdddde_pula();">&nbsp;<input type="Text" name="telefone_de" class="verdana9" style="background-
color:#D8D8D8;color:#666666;" size="13" maxlength="8" value="Seu telefone" onChange="twVerificaTamanho(msg)"
onFocus="twlimpa_telefoneDe();twVerificaTamanho(msg);" onKeyDown="twVerificaTamanho(msg)" onKeyUp="twVerificaTamanho(msg)"></td>
                                    </tr>
                                </table>
                            </td>
                                                </tr>
                </table>
                            <br></td>
            </tr>
        </table>


        </td>


<!--<td><img src="/portal/beans/moduloclaroideiaslivrehome/jsp/imagens/_pixel.gif" width="1" height="1" alt=""></td>-->
        <td valign="top" colspan="2">
                <img src="/portal/beans/moduloclaroideiaslivrehome/jsp/imagens/_pixel.gif" width="1" height="8" alt=""><br>
                <table background="/portal/beans/moduloclaroideiaslivrehome/jsp/imagens/home_bg_torpedo.gif" border="0"
cellpadding="0" cellspacing="0" height="100%" width="287">
                        <tr>
                                <td bgcolor="E3E2E3" height="1"><img
src="/portal/beans/moduloclaroideiaslivrehome/jsp/imagens/_pixel.gif" width="1" height="1" alt=""></td>
                        </tr>
                        <!--<tr>
                                <td valign="top" height="36"><img
src="/portal/beans/moduloclaroideiaslivrehome/jsp/imagens/home_tit_torpedoweb.gif" alt="" width="95" height="36" border="0"></td>
                        </tr>-->


                        <tr>
                <td valign="top">
                                <table border="0" cellpadding="0" cellspacing="0">
                        <tr>
                                                <!--
                                <td><img src="/portal/beans/moduloclaroideiaslivrehome/jsp/imagens/_pixel.gif" width="4" height="1"
alt=""></td>
                                                        <td valign="top">
                                                                <table border="0" cellpadding="0" cellspacing="3">
                                                                         <tr>
                                                                                 <td class="verdana9" style="color:#D65D5D">
                                                                                         Para:
                                                                                 </td>
                                                                         </tr>
                                                                         <tr>
                                                                                 <td class="verdana9">
                                                                                         <input type="Text" name="ddd_para"
class="verdana9" style="background-color:#D8D8D8;color:#666666;" size="3" maxlength="2" value="DDD"
onChange="VerificaTamanho(this.form)" onFocus="limpa_dddPara(this.form);VerificaTamanho(this.form);"
onKeyDown="VerificaTamanho(this.form)" onKeyUp="VerificaTamanho(this.form);dddpara_pula(this.form);">&nbsp;
                                                                                         <input type="Text" name="telefone_para"
class="verdana9" style="background-color:#D8D8D8;color:#666666;" size="13" maxlength="8" value="Celular Claro"
onChange="VerificaTamanho(this.form)" onFocus="limpa_telefonePara(this.form);VerificaTamanho(this.form);"
onKeyDown="VerificaTamanho(this.form)" onKeyUp="VerificaTamanho(this.form)"><br>
                                                                                 </td>
                                                                         </tr>
                                                                         <tr>
                                        <td><img src="/portal/beans/moduloclaroideiaslivrehome/jsp/imagens/_pixel.gif" width="1"
height="4" alt=""></td>
                                    </tr>
                                                                         <tr>
                                                                                 <td class="verdana9" style="color:#D65D5D">
                                                                                         De:
                                                                                 </td>
                                                                         </tr>
                                                                         <tr>
                                                                                 <td class="verdana9">
                                                                                         <input type="Text" name="nome_de"
class="verdana9" style="background-color:#D8D8D8; width:111px;color:#666666;" size="19" maxlength="8" value="Seu nome"
onFocus="limpa_nomeDe(this.form);VerificaTamanho(this.form);" onChange="VerificaTamanho(this.form)"
onKeyDown="VerificaTamanho(this.form)" onKeyUp="VerificaTamanho(this.form)"><br>
                                                                                 </td>
                                                                         </tr>
                                                                         <tr>
                                                                                 <td class="verdana9">
                                                                                         <input type="Text" name="ddd_de"
class="verdana9" style="background-color:#D8D8D8;color:#666666;" size="3" maxlength="2" value="DDD"
onChange="VerificaTamanho(this.form)" onFocus="limpa_dddDe(this.form);VerificaTamanho(this.form);"
onKeyDown="VerificaTamanho(this.form)" onKeyUp="VerificaTamanho(this.form);dddde_pula(this.form);">&nbsp;
                                                                                         <input type="Text" name="telefone_de"
class="verdana9" style="background-color:#D8D8D8;color:#666666;" size="13" maxlength="8" value="Seu telefone"
onChange="VerificaTamanho(this.form)" onFocus="limpa_telefoneDe(this.form);VerificaTamanho(this.form);"
onKeyDown="VerificaTamanho(this.form)" onKeyUp="VerificaTamanho(this.form)"><br>
                                                                                 </td>
                                                                         </tr>
                                                                         <tr>
                                        <td><img src="/portal/beans/moduloclaroideiaslivrehome/jsp/imagens/_pixel.gif" width="1"
height="10" alt=""></td>
                                    </tr>
                                                                         <tr>
                                                                                 <td class="verdana9">
                                                                                         <a
href="JavaScript:reset(document.getElementById('Main'))"><img
src="/portal/beans/moduloclaroideiaslivrehome/jsp/imagens/home_bt_limpar.gif" width="40" height="18" alt="" border="0"></a>&nbsp;
                                                                                         <a
href="JavaScript:envia(document.getElementById('Main'));"><img
src="/portal/beans/moduloclaroideiaslivrehome/jsp/imagens/home_bt_enviar.gif" alt="" width="40" height="18" border="0"></a>
                                                                                 </td>
                                                                         </tr>
                                                                </table>
                                                        </td>-->
                                                        <td><img
src="/portal/beans/moduloclaroideiaslivrehome/jsp/imagens/_pixel.gif" width="5" height="1" alt=""></td>
                                                        <td valign="top">
                                                                <table border="0" cellpadding="0" cellspacing="3">
                                                                         <tr>


                                                                                <td colspan="2" class="verdana9"
style="color:#D65D5D">
                                                                                        Mensagem:
</td>
                                                                        </tr>
                                                                        <tr>
                                                                                <td colspan="2" class="verdana9">
                                                                                        <textarea name="msg" id="value"
class="verdana9" onChange="twVerificaTamanho(this)" onFocus="twlimpa_msg();twVerificaTamanho(this)"
onKeyDown="twVerificaTamanho(this)" onKeyUp="twVerificaTamanho(this)" style="background-color:#D8D8D8; width:220px;
height:58px;color:#666666;overflow:hidden" wrap="PHYSICAL" rows="6">Digite seu Torpedo Web aqui...</textarea></td>
                                                                        </tr>
                                                                           <tr>
                                                                                <td class="verdana9Cinza">
                                                                                        <input type="Text" class="verdana9"
style="background-color:#D8D8D8;color:#666666;" size="3" value="89" onKeyDown="return false;" onKeyUp="return false;" name="caract">
Caracteres<br></td>
                                                                                <td class="verdana9">
                                                                                        <a
href="JavaScript:reset(document.getElementById('Main'))"><img
src="/portal/beans/moduloclaroideiaslivrehome/jsp/imagens/home_bt_limpar.gif" width="40" height="18" border="0"></a>&nbsp;<a
href="JavaScript:twenvia();"><img src="/portal/beans/moduloclaroideiaslivrehome/jsp/imagens/home_bt_enviar.gif" width="40"
height="18" border="0"></a></td>
                                                                        </tr>
                                                                </table>


                                                       </td>
                       </tr>
                 </table>
                               </td>
           </tr>
               </table>
  </td>
</tr>
<!-- fim linha 2 -->
</form>


<!-- *********************** Fim Torpedos ***************************** -->




         E assim tentamos resolver o problema relacionado a mudança o site, porém não
conseguimos realizar as mudanças necessárias, o que resultou na implementação parcial do
programa.




                       INSTRUÇÕES DE USO DAS TECNOLOGIAS ENVOLVIDAS



         Códigos necessários para a execução do sistema:

# Para o programa TrabPPv1.cpp ():

Comando para Compilar: g++ TrabPPv1.cpp -o envioSMSv1 -Wno-deprecated
Recebe os valores digitados pelo Usuário
Comando para Executar: ./envioSMSv1 DDD NUMERO "REMETENTE" "MENSAGEM"



# Para o programa TrabPPv2.cpp ():

Comando para Compilar: g++ TrabPPv2.cpp -o envioSMSv2 -Wno-deprecated
Recebe os valores digitados pelo Usuário
Comando para Executar: ./envioSMSv2
                                                RESULTADOS



       Com a finalização do nosso sistema, nossos resultados não foram os esperados, por não
conseguir corrigir os erros encontrados na implementação em relação a mudança do site da claro.

       Erro gerado com o site antigo,
       [1]PUCRS

                     Pontifícia Universidade Católica

                        do Rio Grande do Sul

        A página [2]http://www2.claro.com.br/torpedoweb/popup_senderJava.asp? não

        está acessível pelo seguinte motivo :

         * Tempo de espera excedido. O site remoto pode estar atravessando

           dificuldades técnicas. Tente mais tarde.



        Maiores informações: e-mail [3]acesso@pucrs.br.

        Todos os erros de acesso são registrados e verificados.

         _________________________________________________________________




         Generated Wed, 05 Dec 2007 18:41:11 GMT by proxy4.pucrs.br

         (squid/2.5.STABLE14)



       Referências



        1. http://www.pucrs.br/

        2. http://www2.claro.com.br/torpedoweb/popup_senderJava.asp?

        3. mailto:acesso@pucrs.br




       Que é simplesmente por não encontrar a página, pois ela não existe mais.

       Tentamos corrigir as diferenças porém com a mudança da ASP para JSP, não descobrimos o
que esta diferente na string de envio. O programa executa mas a mensagem não é enviada.
                                        CONCLUSÃO


      O uso de celulares é um fenômeno mundial, onde não só os celulares, mas todos dispositivos
moveis estão cada vez mais presentes na vida das pessoas.
       O mercado de desenvolvimento de software já está de olho neste mercado que é um dos
mais promissores atualmente e continuará assim por um longo tempo.
       Neste embalo tecnológico se insere o nosso trabalho onde seu funcionamento é bem simples
mas de grande utilidade, principalmente no uso de alarmes e monitoramentos de todos os tipos.
Infelizmente nossos resultados não foram os esperados, pois acabamos por não implementar
completamente o programa devido a dificuldade em geral a string de envio.




                                       REFERÊNCIAS



       - Material do Prof. Eduardo Bezerra

       www.inf.pucrs.br/~eduardob

				
DOCUMENT INFO
Shared By:
Categories:
Stats:
views:22
posted:3/16/2010
language:
pages:12
Jun Wang Jun Wang Dr
About Some of Those documents come from internet for research purpose,if you have the copyrights of one of them,tell me by mail vixychina@gmail.com.Thank you!