Trabalho Prático Nº4 Porta Série 1. OBJECTIVOS - Desenvolver aplicações sobre a porta série em Ambiente Windows 32 bits 2. INTRODUÇÃO Este trabalho prático é baseado no artigo “Use P/Invoke to Develop a .NET Base Class Library for Serial Device Communications” de John Hind, que pode ser obtido em: http://msdn.microsoft.com/msdnmag/issues/02/10/NETSerialComm/. A FCL (Framework Class Library), da Microsoft .NET não contempla a comunicação série RS232. Por isso devem ser utilizada as API do WIN32 utilizando a tecnologia .NET, invocação de serviços de plataforma (P/INVOKE). São invocados métodos de DLL não gerida, que implementam API do WIN32, utilizando os serviços de invocação de plataforma “Plataform Invocation services". // Exemplifica chamada de MessageBoxA de user32.dll using System; //DllImport using System.Runtime.InteropServices; using System.Runtime.InteropServices; class PInvoke1App { [DllImport("user32.dll")] static extern int MessageBoxA (int hWnd, string msg,string caption, int type); public static void Main() { MessageBoxA (0, "Hello, World!", "This is called from a C# app!", 0); } } Microprocessadores III – ano lectivo 2004/2005 – Página 1 Trabalho Prático Nº4 Podemos dar um nome local ao método por exemplo da forma: [DllImport("user32.dll",EntryPoint="MessageBoxA" )] static extern int Msg(int hWnd, string msg,string caption, int type); Em que o nome do método MessageBoxA é definido localmente na classe como Msg() A primeira classe da livraria commBase não faz assumpção sobre o formato de dados e disponibiliza funções para abrir e fechar o porto de comunicação, enviar e receber bytes de dados e interagir com o controlo de entradas e saídas. A segunda classe da livraria, CommLine, inerente de CommBase assume que o código dos bytes enviados e recebidos é ASCII. 3. TRABALHO 3.1 Serviço de mensagens escritas SMS na rede GSM. Modos de Envio. Pretende-se escrever uma aplicação que possibilite o envio e recepção de mensagens curtas (SMS) para telefones GSM. O serviço de mensagens curtas, não funciona directamente do emissor para o receptor mas via um entreposto designado centro de mensagens (SMSC/SC SMS Center ou Service Center). Cada equipamento GSM dispõe de pelo menos um numero referente ao SMSC do serviço de mensagens curtas. Caso seja solicitado o SMSC pode enviar uma mensagem de retorno confirmando a entrega da mesma no destinatário. Vodafone +351911616161 Optimus +35193121314 TMN +351962100000 Tabela 3.1: Números dos centros de mensagens para os operadores da rede GSM em Portugal. Microprocessadores III – ano lectivo 2004/2005 – Página 2 Trabalho Prático Nº4 O serviço de mensagens curtas é perfeitamente definido nas normas GSM 900/1800/1900, (para a realização da aplicação é mandatório consultar a norma GSM Technical Specifications GSM 07.05). Uma única mensagem pode ter até 160 caracteres de texto, se for codificada em 7 bits ou 140 caracteres se for codificada em 8 bits. Os 140/160 caracteres podem compreender números ou combinações alfanuméricas. As mensagens curtas também suportam mensagens não baseadas em texto (formato binário). Existem dois modos para enviar e receber mensagens curtas, o modo de TEXTO e o modo PDU (Protocol Description Unit). A aplicação deverá permitir a selecção do modo de envio, Texto ou PDU. Figura 3.1: Utilitário docklight, para a monitorização da porta série.(http://www.docklight.de) São mostradas seguidamente exemplo de envio de mensagens curtas em modo PDU e em modo Texto. A mensagem a enviar é “TESTE AO ENVIO DE SMS”, e o número de destino é 917811845, como neste caso o envio é efectuado a partir de um cartão Vodafone o número do centro de mensagens é +351911616161. A configuração do número do centro obriga sempre à utilização do código de país. Microprocessadores III – ano lectivo 2004/2005 – Página 3 Trabalho Prático Nº4 AT+CMGF=0 <CR> - define o modo PDU AT+CMGS=33<CR> - Tamanho da mensagem em formato PDU 079153911116161611000C915391711881540000A715D4E2945A04059FA0A2D39A7C828 845D0B43905<CTRL+Z> - string formatada em modo PDU que inclui o numero do SMSC, o numero de destino e a mensagem Figura 3.2: Exemplo de envio de SMS (“TESTE AO ENVIO DE SMS”) em modo PDU, <CTRL+Z> correspondem ao caractere decimal 26 e 13 respectivamente. e <CR> Exemplo de envio de sms em modo texto da mensagem: “TESTE AO ENVIO DE SMS” AT+CMGF=1 <CR> - define o modo TEXTO AT+CSCA=”+351911616161” <CR> - configura o numero do centro de mensagens AT+CMGS=”917811845”<CR>TESTE AO ENVIO DE SMS<CTRL+Z> - envia a mensagem Figura 3.3: Exemplo de envio de SMS (“TESTE AO ENVIO DE SMS”) em modo de Texto. <CTRL+Z> e <CR> correspondem ao caractere decimal 26 e 13 respectivamente. 3.2 Enunciado do Trabalho Conforme referido acima e utilizando a norma, escreva o programa para o envio de SMS. A aplicação deve permitir: − Seleccionar o modo de envio (Texto ou PDU) − Configurar o número do centro de mensagens − Numero do destinatário da mensagem Microprocessadores III – ano lectivo 2004/2005 – Página 4 Trabalho Prático Nº4 3.3 Questão Extra Complemente a aplicação de 3.2, introduzindo a função de leitura de SMS. Microprocessadores III – ano lectivo 2004/2005 – Página 5 Trabalho Prático Nº4 Microprocessadores III – ano lectivo 2004/2005 – Página 6 Trabalho Prático Nº4