Você está na página 1de 11

Comunicao Serial

Motivao Diversos dispositivos eletrnicos usam portas seriais para se comunicar com outros dispositivos eletrnicos. Para muitos a nica forma de comunicao. A integrao de equipamentos antigos aos sistemas automatizados muitas vezes pode ser resumida incluso destes dispositivos simples nas redes de comunicao.

Comunicao Serial RS232


Padro RS232C:

Criado em 1969 Implementaes atuais no suportam o padro original completo. Os sinais implementados atualmente e sua forma de utilizao so muito pouco semelhantes especificao original. O estudo apenas do padro, sem levar em conta a evoluo (darwiniana) das implementaes, seria infrutfero.

Comunicao Serial RS232 UART (Universal Asynchronous Receiver Transmitter): Componente essencial nos subsistemas de comunicao serial de dispositivos. Pega bytes de dados e transmite os bits, individualmente, de forma sequncial. No destino, um outro UART remonta os bits em bytes. Trabalham com nvel de tenso TTL (Transistor to Transistor Logic), ou seja, 5V.

Comunicao Serial Sincrona x Assincrona Comunicao Serial Sincrona: Transmissor e receptor devem utilizar um clock compartilhado:
Alm do sinal de dados, o transmissor deve enviar um sinal de strobe para que o receptor saiba quando ler o prximo bit de dados.

Mais eficiente Mais cara: circuitos e cabeamento para compartilhamento de clock.

Comunicao Serial Sincrona x Assincrona


Comunicao Serial Assincrona: Transmisso de dados sem utilizao de sinal de clock. Bits especiais so adicionados aos dados para sincronizar o transmissor e o receptor:
Start Bit: Adicionado ao incio da word que ser transmitida. Usado para sincronizar clocks do receptor e do transmissor. (drift mximo entre clocks de 10%). Bit de dados: os bits da word de dados so enviados, com o Bit menos significativo antes (LSB). A sinalizao de cada bit realizada em perodo constante, e o receptor l (amostra) o meio fsico no meio deste perodo.
Ex: T =2s, receptor l o sinal (0 ou 1), depois de 1 segundo e vai aguardar mais 2 segundo para realizar nova leitura.

Bit de paridade: o transmissor adiciona este bit depois de enviar toda a palavra de dados. O receptor pode utilizar este bit para verificar erros. Stop Bit: o transmissor envia pelo menos um bit de parada.

Comunicao Serial Sincrona x Assincrona Comunicao Serial Assincrona: O receptor, ao receber toda o pacote de bits (Start Bit, Data Bits, Parity Bit, Stop Bit):
Pode verificar o bit de paridade (previamente configurado entre transmissor e receptor paridade par, impar ou nenhuma). Deve verificar o Stop Bit, se no o encontrar, ento houve um erro de transmisso e o UART deve avisar que ocorreu um Framing Error, isto , h um problema de sincronia entre transmissor e receptor. O UART receptor descarta os bits de controle (Start, Paridade, Stop) e envia ao microcontrolador host apenas os dados/palavra.

Comunicao Serial RS 232 - Sinalizao Sinalizao por tenso:


Nvel lgico 0: +3V at +25V (Space) Nvel lgico 1: -3V at 25V (Mark)

Voltage Pump (TTL at nveis RS232):


Transceivers: Ex: MAX232 (Dalsemi): +5V +10V e 5V 10V

Comunicao Serial RS 232C - Equipamentos Segundo o padro, dois equipamentos:


DCE (Data Communication Equipment). Exemplo: modem DTE (Data Terminal Equipment). Exemplo: PC Normalmente trabalhamos com DTE.

Comunicao Serial RS 232C Pinagem DB9


Pinagem do conector serial DB-9 DTE: Pino Sinal
1 2 3 4 5 6 7 8 9 CD (Carrier Detect) RD (Receive Data) TD (Transmit Data) DTR (Data Terminal Ready) Signal Ground DSR (Data Set Ready) RTS (Request to Send) CTS (Clear to Send) RI (Ring Indicator) Entrada Sada Entrada Entrada DCE avisa quando conseguiu estabelecer canal de comunicao DTE pede permisso para enviar dados DCE permite que DTE envie dados DCE avisa que telefone est tocando

Sentido Descrio
Entrada Entrada Sada Sada DCE avisa quando receve sinal de que dados esto a caminho Recebe dados enviados pelo DCE Transmite dados para o DCE DTE avisa quando est pronto para comunicar

Comunicao Serial Conexo DTE -DTE


Padro especifica conexo DTE DCE.
Computador DTE Modem DCE RS232 cabo direto Linha discada Modem DCE Computador DTE

No so raros os casos em que precisamos realizar conexes DTE-DTE.


Utilizamos um cabo null modem

Computador DTE

Computador DTE

Comunicao Serial Cabo Null Modem

Pino 1 2 3 4 5 6 7 8 9

Sinal CD (Carrier Detect) RD (Receive Data) TD (Transmit Data) DTR (Data Terminal Ready) Signal Ground DSR (Data Set Ready) RTS (Request to Send) CTS (Clear to Send) RI (Ring Indicator)

Comunicao Serial Interface de Loopback

Pino 1 2 3 4 5 6 7 8 9

Sinal CD (Carrier Detect) RD (Receive Data) TD (Transmit Data) DTR (Data Terminal Ready) Signal Ground DSR (Data Set Ready) RTS (Request to Send) CTS (Clear to Send) RI (Ring Indicator)

Comunicao Serial Java Pacote de Comunicao:


javax.comm

Metodos:

CommPort

Configurao de portas Obter streams para leitura e escrita de dados

SerialPort

Comunicao Serial Java Classe CommPortIdentifier Possui um mtodo esttico sobrecarregado que devolve um objeto da classe CommPortIdentifier:
public static CommPortIdentifier getPortIdentifier(String portName) throws NoSuchPortException public static CommPortIdentifier getPortIdentifier(CommPort port) throws NoSuchPortException

Comunicao Serial Java Classe CommPortIdentifier Possui um mtodo esttico que devolve uma enumerao de portas:
public static Enumeration getPortIdentifiers()
import java.util.Enumeration; import javax.comm.CommPortIdentifier; class PortLister{ public static void main(String args[]){ Enumeration ports = CommPortIdentifier.getPortIdentifiers(); while (ports.hasMoreElements()){ System.out.println(((CommPortIdentifier)(ports.nextElement())).getName()); } } }

Comunicao Serial Java Classe CommPortIdentifier Possui um mtodo que devolve uma CommPort:
public synchronized CommPort open(String appname,int timeout) throws PortInUseException Chamada ao mtodo bloqueada, isto , o mtodo somente retorna quando:
Consegue acesso exclusivo porta devolve a CommPort requisitada. Quando o tempo (timeout ms) expira PortInUseException.

Para utilizar uma porta serial, devemos realizar um cast: SerialPort sp;
sp=(SerialPort)CommPortIdentifier.getCommPortIdentifier(com1.)open (App,1000);

Para liberar a porta, devemos chamar: sp.close()

Comunicao Serial Java Configurao da Porta Serial (SerialPort) Possui um mtodo para configurao de:
Baud rate: {1200,2400,...,9600,...,19200,...,38400,...,115200} Nmero de DataBits
SerialPort.{DATABITS_5,DATABITS_6,DATABITS_7,DATABITS_8}

Nmero de StopBits
SerialPort.{STOPBITS_1,STOPBITS_1_5,STOPBITS_2}

Tipo de paridade:
SerialPort.{PARITY_EVEN,PARITY_MARK,PARITY_NONE,PARITY_ODD,PARITY_SPACE}

public void setSerialPortParams(int baudrate, int dataBits, int stopBits, int parity) throws UnsupportedCommOperationException

Comunicao Serial Java Configurao da Porta Serial (SerialPort) Controle de Fluxo (handshake)
Mecanismo que permite que o receptor interrompa o envio de dados pelo transmissor quando seu buffer de entrada estiver prximo de sua capacidade mxima (evita perda de dados por overflow do buffer) Modos de controle de fluxo:
None (sem controle de fluxo, terminais enviam dados quando assim o desejarem) RTS/CTS (hardware flow control) XON/XOFF (software flow control)

Comunicao Serial Java Configurao da Porta Serial (SerialPort) Controle de Fluxo: XON/XOFF
B
Dados Envia caracter XOFF (0x13) Para de enviar dados Envia caracter XON (0x11) Continua a enviar dados

A
Buffer de recepo quase cheio Processa dados e esvazia buffer de recepo

Dados

Vantagem: Controla overflow e utiliza apenas linhas 2(RD), 3(TD) e 5(GND) Desvantagem: os caracteres 0x11 e 0x13 precisam de tratamento especial para serem enviados, quando fazem parte dos dados.

Comunicao Serial Java Configurao da Porta Serial (SerialPort) Controle de Fluxo: RTS/CTS
B
1.Deseja enviar dados RTS = 1

A
2.Pronto para receber CTS = 1

3.Envia dados enquanto CTS = 1

Dados 4.Buffer de recepo quase cheio CTS = 0

5.Para de enviar dados 6.Pronto para receber


7.Envia dados enquanto CTS = 1

CTS = 1

Dados

Vantagem: Controla overflow sem interferir nos dados Desvantagem: Utiliza linhas 2(RD)/3(TD), 5(GND) e 7(RTS)/8(CTS)

10

Comunicao Serial Java Configurao da Porta Serial (SerialPort) Possui um mtodo para configurao de Controle de Fluxo:
Tipo de controle de fluxo:
SerialPort.{FLOWCONTROL_NONE,FLOWCONTROL_ RTSCTS_IN,FLOWCONTROL_ RTSCTS_OUT,FLOWCONTROL_ XONXOFF_IN,FLOWCONTROL_ XONXOFF_OUT}

public void setFlowControlMode(int flowcontrol) throws UnsupportedCommOperationException public int getFlowControlMode()

11

Você também pode gostar