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

Sentido Descrio

CD (Carrier Detect)

Entrada

DCE avisa quando receve sinal de que


dados esto a caminho

RD (Receive Data)

Entrada

Recebe dados enviados pelo DCE

TD (Transmit Data)

Sada

Transmite dados para o DCE

DTR (Data Terminal


Ready)

Sada

DTE avisa quando est pronto para


comunicar

Signal Ground

DSR (Data Set Ready)

Entrada

DCE avisa quando conseguiu


estabelecer canal de comunicao

RTS (Request to Send)

Sada

DTE pede permisso para enviar dados

CTS (Clear to Send)

Entrada

DCE permite que DTE envie dados

RI (Ring Indicator)

Entrada

DCE avisa que telefone est tocando

Comunicao Serial Conexo DTE -DTE

Padro especifica conexo DTE DCE.


Computador
DTE

Modem
DCE

Modem
DCE

Computador
DTE

RS232 cabo direto


Linha discada

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

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

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

A
Dados
Envia caracter XOFF (0x13)

Para de
enviar dados
Envia caracter XON (0x11)
Continua a
enviar dados

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

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  CTS = 1
7.Envia dados enquanto 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