Escolar Documentos
Profissional Documentos
Cultura Documentos
PMR2300 ComunicacaoSerialI
PMR2300 ComunicacaoSerialI
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.
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.
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.
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
Computador DTE
Computador DTE
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)
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)
Metodos:
CommPort
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);
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
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}
11