SlideShare une entreprise Scribd logo
1  sur  21
Comunicação Serial
em Unix usando
linguagem C
Prof. Rômulo Silva

Abr/2008
Rômulo C. Silva
Comunicação Serial
Transferência de um bit por vez
Usada em dispositivos de rede, teclados,
mouse, MODEMs e terminais
Velocidade de transmissão expressa em bps
(bits-por-segundo) ou “baud-rate”
Padrão RS-232:
Padrão elétrico definido pela EIA (Eletronic
Industries Association)
Existem 3 categorias: A, B e C, sendo RS-232C
a mais usada

Rômulo C. Silva
RS-232
DTE (Data Terminal Equipment):
equipamento que faz o processamento dos
sinais.
DCE (Data Circuit-terminating Equipment modem ): equipamento que faz a conexão
Um cabo de conexão entre dispositivos DTE
e DCE contém ligações em paralelo, não
necessitando mudanças na conexão de
pinos.

Rômulo C. Silva
RS-232C

Rômulo C. Silva
RS-232
Sinal

Significado

SG ou GND

Terra

TD ou TX

Tranmissão de dados

RD ou RX

Recepção de dados

DTR

Terminal de dados pronto

DSR

Conjunto de dados pronto

RTS

Pronto p/ enviar (computador)

CTS

Envie os dados (modem)

DCD

Portadora detectada

RI

Indicador de telefone tocando

FG

Frame Ground
Rômulo C. Silva
RS-232 C

Rômulo C. Silva
RS-232
Especifica um conector de 9 ou 25 pinos

Rômulo C. Silva
RS-232
Os sinais de temporização de transmissão e
recepção são utilizados somente quando o
protocolo de transmissão utilizado for
síncrono.
Para protocolos assíncronos, padrão 8 bits,
os sinais de temporização externos são
desnecessários.

Rômulo C. Silva
Etapas da Comunicação Serial
Abertura da porta de comunicação
Configuração da porta
Transmissão de dados
Recepção de dados

Rômulo C. Silva
Comunicação Serial em Unix
Como todos os dispositivos, a porta serial é
tratada como um arquivo (diretório padrão
/dev)

Rômulo C. Silva
Abertura da Porta Serial
fd = open(arquivoPorta, flags);
Função retorna um file descriptor que
permite o acesso à porta.
Flags:
O_NOCTTY : programa não será um terminal
controlador da porta. Evita que o processo seja
afetado por interrupção via teclado.
O_NDELAY : programa não irá cuidar da linha do
sinal DCD. Evita que o processo seja colocado
para “dormir” até haja sinal na linha DCD
O_RDWR : porta será aberta para leitura e
gravação
Rômulo C. Silva
Abertura da Porta Serial em Unix
#include
#include
#include
#include
#include
#include

<stdio.h> /* Standard input/output definitions */
<string.h> /* String function definitions */
<unistd.h> /* UNIX standard function definitions */
<fcntl.h> /* File control definitions */
<errno.h> /* Error number definitions */
<termios.h> /*POSIX terminal control definitions */

/* * 'open_port()' - Open serial port 1. * * Returns the
file descriptor on success or -1 on error. */
int open_port(void) {
int fd; /* File descriptor for
fd = open("/dev/ttyS0", O_RDWR
O_NDELAY);
if (fd == -1) { /* * Could not
perror("open_port: Unable to
}
else fcntl(fd, F_SETFL, 0);
return (fd);
}

the port */
| O_NOCTTY |
open the port. */
open /dev/ttyS0 - ");

Rômulo C. Silva
Escrever na Porta Serial
Uso da chamada de sistema write:
n = write(fd, "ATZr", 4);
if (n < 0)
fputs("write() of 4 bytes failed!n", stderr);

Rômulo C. Silva
Leitura de dados da Porta Serial
Uso da chamada de sistema read
Retorna a quantidade de bytes disponíveis
no buffer da porta serial
Se não há bytes disponíveis, o programa
fica bloqueado até haja dados disponíveis
O comportamento da função read pode ser
alterado para retornar imediatamente
quando não houver dados através da
chamada:
fcntl(fd, F_SETFL, FNDELAY);

P/ restaurar o comportamento de read:
fcntl(fd, F_SETFL, 0);
Rômulo C. Silva
Leitura da Porta Serial
n=read(fd, buf, 5); /*tenta 5 bytes colocando
na variável buf */
if(n < 0) {
perror(“Sem dadosn”);
}

Rômulo C. Silva
Fechar a porta Serial
Chamda de sistema close.
close(fd);

Rômulo C. Silva
Configuração da Porta Serial
No arquivo <termios.h> encontra-se
definida uma estrutura (struct) que guarda
informações de configuração da porta serial
As funções tcgetattr e tcsetattr permite
ler e atribuir uma configuração à porta
serial, respectivamente

Rômulo C. Silva
Configuração da Porta Serial –
struct termios

Rômulo C. Silva
Configuração da Porta Serial
Em difentes SOs, a taxa de transmissão e
recepção (baud-rate) é armazenada em
locais diferentes.
As funções cfsetospeed e cfsetispeed
permitem configurar a taxas de
transmissão e recepção, independente do
SO.

Rômulo C. Silva
Configuração da Porta Serial
struct termios options;
/* * Get the current options for the port... */
tcgetattr(fd, &options);
/* * Set the baud rates to 19200... */
cfsetispeed(&options, B19200);
cfsetospeed(&options, B19200);
/* * Enable the receiver and set local mode... */
options.c_cflag |= (CLOCAL | CREAD);
/* * Set the new options for the port... */
tcsetattr(fd, TCSANOW, &options);
Rômulo C. Silva
Configuração da Porta Serial
Flags para função tcsetattr:

Rômulo C. Silva

Contenu connexe

Tendances

Implatação de Sistemas de Segurança com Linux
Implatação de Sistemas de Segurança com LinuxImplatação de Sistemas de Segurança com Linux
Implatação de Sistemas de Segurança com LinuxAlvaro Gomes
 
Aula 6 emu8086
Aula 6   emu8086Aula 6   emu8086
Aula 6 emu8086LCCIMETRO
 
Linux network administration | Curso de Redes | 3Way Networks
Linux network administration | Curso de Redes | 3Way NetworksLinux network administration | Curso de Redes | 3Way Networks
Linux network administration | Curso de Redes | 3Way Networks3Way Networks
 
Assembly para pc-25paginas
Assembly para pc-25paginasAssembly para pc-25paginas
Assembly para pc-25paginasMikeNandes
 
Processador CISC RISC SET de instruções
Processador CISC RISC SET de instruçõesProcessador CISC RISC SET de instruções
Processador CISC RISC SET de instruçõesCarlos Pereira
 
Arquitetura pentium
Arquitetura pentiumArquitetura pentium
Arquitetura pentiumEMSNEWS
 
Pentium pro trabalho
Pentium pro   trabalhoPentium pro   trabalho
Pentium pro trabalhoRafael Cruz
 

Tendances (19)

Assembly
AssemblyAssembly
Assembly
 
Profibus s7
Profibus s7Profibus s7
Profibus s7
 
Pic16f628a
Pic16f628aPic16f628a
Pic16f628a
 
Implatação de Sistemas de Segurança com Linux
Implatação de Sistemas de Segurança com LinuxImplatação de Sistemas de Segurança com Linux
Implatação de Sistemas de Segurança com Linux
 
Configuração
ConfiguraçãoConfiguração
Configuração
 
Unix Sockets
Unix SocketsUnix Sockets
Unix Sockets
 
Instalacao roip
Instalacao roipInstalacao roip
Instalacao roip
 
Aula 6 emu8086
Aula 6   emu8086Aula 6   emu8086
Aula 6 emu8086
 
Programando microcontroladores pic março
Programando microcontroladores pic marçoProgramando microcontroladores pic março
Programando microcontroladores pic março
 
Linux network administration | Curso de Redes | 3Way Networks
Linux network administration | Curso de Redes | 3Way NetworksLinux network administration | Curso de Redes | 3Way Networks
Linux network administration | Curso de Redes | 3Way Networks
 
Assembly para pc-25paginas
Assembly para pc-25paginasAssembly para pc-25paginas
Assembly para pc-25paginas
 
ARM
ARMARM
ARM
 
Linguagem Assembly
Linguagem AssemblyLinguagem Assembly
Linguagem Assembly
 
Aula 15 processadores
Aula 15 processadoresAula 15 processadores
Aula 15 processadores
 
Pic18xx
Pic18xxPic18xx
Pic18xx
 
Processador CISC RISC SET de instruções
Processador CISC RISC SET de instruçõesProcessador CISC RISC SET de instruções
Processador CISC RISC SET de instruções
 
Ficha de trabalho 1
Ficha de trabalho 1Ficha de trabalho 1
Ficha de trabalho 1
 
Arquitetura pentium
Arquitetura pentiumArquitetura pentium
Arquitetura pentium
 
Pentium pro trabalho
Pentium pro   trabalhoPentium pro   trabalho
Pentium pro trabalho
 

Similaire à Comunicação Serial em C

Similaire à Comunicação Serial em C (20)

Java Comunicação Serial
Java Comunicação SerialJava Comunicação Serial
Java Comunicação Serial
 
Ac.m4 tarefa video-emil
Ac.m4 tarefa video-emilAc.m4 tarefa video-emil
Ac.m4 tarefa video-emil
 
Exer ic prova
Exer ic provaExer ic prova
Exer ic prova
 
Linux lpi 101
Linux lpi 101Linux lpi 101
Linux lpi 101
 
Glossário de Termos Técnicos em Redes de Computadores
Glossário de Termos Técnicos em Redes de ComputadoresGlossário de Termos Técnicos em Redes de Computadores
Glossário de Termos Técnicos em Redes de Computadores
 
Introdução a Redes de Computadores
Introdução a Redes de ComputadoresIntrodução a Redes de Computadores
Introdução a Redes de Computadores
 
Ac15 entrada e saída
Ac15   entrada e saídaAc15   entrada e saída
Ac15 entrada e saída
 
Estrutura básica de um computador
Estrutura básica de um computadorEstrutura básica de um computador
Estrutura básica de um computador
 
Estrutura Básica de um
Estrutura Básica de um Estrutura Básica de um
Estrutura Básica de um
 
Entrada e saida cap 05 (iii unidade)
Entrada e saida  cap 05 (iii unidade)Entrada e saida  cap 05 (iii unidade)
Entrada e saida cap 05 (iii unidade)
 
Cartao referencia ccs
Cartao referencia ccsCartao referencia ccs
Cartao referencia ccs
 
Configuração
ConfiguraçãoConfiguração
Configuração
 
Camadas de Transporte
Camadas de TransporteCamadas de Transporte
Camadas de Transporte
 
Redes Camadas de Transporte
Redes Camadas de TransporteRedes Camadas de Transporte
Redes Camadas de Transporte
 
Redes aula13
Redes aula13Redes aula13
Redes aula13
 
Ko 7 kdp-06
Ko 7 kdp-06Ko 7 kdp-06
Ko 7 kdp-06
 
io
ioio
io
 
Treinamento arduino (1).pptx
Treinamento arduino (1).pptxTreinamento arduino (1).pptx
Treinamento arduino (1).pptx
 
Dispositivos [Entrada E SaíDa]
Dispositivos [Entrada E SaíDa]Dispositivos [Entrada E SaíDa]
Dispositivos [Entrada E SaíDa]
 
Aula 8 – Componentes de um computador
Aula 8 – Componentes de um computadorAula 8 – Componentes de um computador
Aula 8 – Componentes de um computador
 

Dernier

Família de palavras.ppt com exemplos e exercícios interativos.
Família de palavras.ppt com exemplos e exercícios interativos.Família de palavras.ppt com exemplos e exercícios interativos.
Família de palavras.ppt com exemplos e exercícios interativos.Susana Stoffel
 
QUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptx
QUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptxQUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptx
QUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptxIsabellaGomes58
 
Investimentos. EDUCAÇÃO FINANCEIRA 8º ANO
Investimentos. EDUCAÇÃO FINANCEIRA 8º ANOInvestimentos. EDUCAÇÃO FINANCEIRA 8º ANO
Investimentos. EDUCAÇÃO FINANCEIRA 8º ANOMarcosViniciusLemesL
 
Intolerância religiosa. Trata-se de uma apresentação sobre o respeito a diver...
Intolerância religiosa. Trata-se de uma apresentação sobre o respeito a diver...Intolerância religiosa. Trata-se de uma apresentação sobre o respeito a diver...
Intolerância religiosa. Trata-se de uma apresentação sobre o respeito a diver...LizanSantos1
 
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptxSlides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptxLuizHenriquedeAlmeid6
 
O Universo Cuckold - Compartilhando a Esposas Com Amigo.pdf
O Universo Cuckold - Compartilhando a Esposas Com Amigo.pdfO Universo Cuckold - Compartilhando a Esposas Com Amigo.pdf
O Universo Cuckold - Compartilhando a Esposas Com Amigo.pdfPastor Robson Colaço
 
Educação São Paulo centro de mídias da SP
Educação São Paulo centro de mídias da SPEducação São Paulo centro de mídias da SP
Educação São Paulo centro de mídias da SPanandatss1
 
William J. Bennett - O livro das virtudes para Crianças.pdf
William J. Bennett - O livro das virtudes para Crianças.pdfWilliam J. Bennett - O livro das virtudes para Crianças.pdf
William J. Bennett - O livro das virtudes para Crianças.pdfAdrianaCunha84
 
Aula 13 8º Ano Cap.04 Revolução Francesa.pptx
Aula 13 8º Ano Cap.04 Revolução Francesa.pptxAula 13 8º Ano Cap.04 Revolução Francesa.pptx
Aula 13 8º Ano Cap.04 Revolução Francesa.pptxBiancaNogueira42
 
cartilha-pdi-plano-de-desenvolvimento-individual-do-estudante.pdf
cartilha-pdi-plano-de-desenvolvimento-individual-do-estudante.pdfcartilha-pdi-plano-de-desenvolvimento-individual-do-estudante.pdf
cartilha-pdi-plano-de-desenvolvimento-individual-do-estudante.pdfIedaGoethe
 
Modelos de Desenvolvimento Motor - Gallahue, Newell e Tani
Modelos de Desenvolvimento Motor - Gallahue, Newell e TaniModelos de Desenvolvimento Motor - Gallahue, Newell e Tani
Modelos de Desenvolvimento Motor - Gallahue, Newell e TaniCassio Meira Jr.
 
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdf
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdfBRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdf
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdfHenrique Pontes
 
Prática de interpretação de imagens de satélite no QGIS
Prática de interpretação de imagens de satélite no QGISPrática de interpretação de imagens de satélite no QGIS
Prática de interpretação de imagens de satélite no QGISVitor Vieira Vasconcelos
 
HORA DO CONTO3_BECRE D. CARLOS I_2023_2024
HORA DO CONTO3_BECRE D. CARLOS I_2023_2024HORA DO CONTO3_BECRE D. CARLOS I_2023_2024
HORA DO CONTO3_BECRE D. CARLOS I_2023_2024Sandra Pratas
 
Bingo da potenciação e radiciação de números inteiros
Bingo da potenciação e radiciação de números inteirosBingo da potenciação e radiciação de números inteiros
Bingo da potenciação e radiciação de números inteirosAntnyoAllysson
 
ABRIL VERDE.pptx Slide sobre abril ver 2024
ABRIL VERDE.pptx Slide sobre abril ver 2024ABRIL VERDE.pptx Slide sobre abril ver 2024
ABRIL VERDE.pptx Slide sobre abril ver 2024Jeanoliveira597523
 
A galinha ruiva sequencia didatica 3 ano
A  galinha ruiva sequencia didatica 3 anoA  galinha ruiva sequencia didatica 3 ano
A galinha ruiva sequencia didatica 3 anoandrealeitetorres
 
trabalho wanda rocha ditadura
trabalho wanda rocha ditaduratrabalho wanda rocha ditadura
trabalho wanda rocha ditaduraAdryan Luiz
 
Habilidades Motoras Básicas e Específicas
Habilidades Motoras Básicas e EspecíficasHabilidades Motoras Básicas e Específicas
Habilidades Motoras Básicas e EspecíficasCassio Meira Jr.
 

Dernier (20)

Família de palavras.ppt com exemplos e exercícios interativos.
Família de palavras.ppt com exemplos e exercícios interativos.Família de palavras.ppt com exemplos e exercícios interativos.
Família de palavras.ppt com exemplos e exercícios interativos.
 
QUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptx
QUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptxQUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptx
QUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptx
 
Investimentos. EDUCAÇÃO FINANCEIRA 8º ANO
Investimentos. EDUCAÇÃO FINANCEIRA 8º ANOInvestimentos. EDUCAÇÃO FINANCEIRA 8º ANO
Investimentos. EDUCAÇÃO FINANCEIRA 8º ANO
 
Intolerância religiosa. Trata-se de uma apresentação sobre o respeito a diver...
Intolerância religiosa. Trata-se de uma apresentação sobre o respeito a diver...Intolerância religiosa. Trata-se de uma apresentação sobre o respeito a diver...
Intolerância religiosa. Trata-se de uma apresentação sobre o respeito a diver...
 
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptxSlides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
 
O Universo Cuckold - Compartilhando a Esposas Com Amigo.pdf
O Universo Cuckold - Compartilhando a Esposas Com Amigo.pdfO Universo Cuckold - Compartilhando a Esposas Com Amigo.pdf
O Universo Cuckold - Compartilhando a Esposas Com Amigo.pdf
 
Educação São Paulo centro de mídias da SP
Educação São Paulo centro de mídias da SPEducação São Paulo centro de mídias da SP
Educação São Paulo centro de mídias da SP
 
William J. Bennett - O livro das virtudes para Crianças.pdf
William J. Bennett - O livro das virtudes para Crianças.pdfWilliam J. Bennett - O livro das virtudes para Crianças.pdf
William J. Bennett - O livro das virtudes para Crianças.pdf
 
Aula 13 8º Ano Cap.04 Revolução Francesa.pptx
Aula 13 8º Ano Cap.04 Revolução Francesa.pptxAula 13 8º Ano Cap.04 Revolução Francesa.pptx
Aula 13 8º Ano Cap.04 Revolução Francesa.pptx
 
Em tempo de Quaresma .
Em tempo de Quaresma                            .Em tempo de Quaresma                            .
Em tempo de Quaresma .
 
cartilha-pdi-plano-de-desenvolvimento-individual-do-estudante.pdf
cartilha-pdi-plano-de-desenvolvimento-individual-do-estudante.pdfcartilha-pdi-plano-de-desenvolvimento-individual-do-estudante.pdf
cartilha-pdi-plano-de-desenvolvimento-individual-do-estudante.pdf
 
Modelos de Desenvolvimento Motor - Gallahue, Newell e Tani
Modelos de Desenvolvimento Motor - Gallahue, Newell e TaniModelos de Desenvolvimento Motor - Gallahue, Newell e Tani
Modelos de Desenvolvimento Motor - Gallahue, Newell e Tani
 
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdf
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdfBRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdf
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdf
 
Prática de interpretação de imagens de satélite no QGIS
Prática de interpretação de imagens de satélite no QGISPrática de interpretação de imagens de satélite no QGIS
Prática de interpretação de imagens de satélite no QGIS
 
HORA DO CONTO3_BECRE D. CARLOS I_2023_2024
HORA DO CONTO3_BECRE D. CARLOS I_2023_2024HORA DO CONTO3_BECRE D. CARLOS I_2023_2024
HORA DO CONTO3_BECRE D. CARLOS I_2023_2024
 
Bingo da potenciação e radiciação de números inteiros
Bingo da potenciação e radiciação de números inteirosBingo da potenciação e radiciação de números inteiros
Bingo da potenciação e radiciação de números inteiros
 
ABRIL VERDE.pptx Slide sobre abril ver 2024
ABRIL VERDE.pptx Slide sobre abril ver 2024ABRIL VERDE.pptx Slide sobre abril ver 2024
ABRIL VERDE.pptx Slide sobre abril ver 2024
 
A galinha ruiva sequencia didatica 3 ano
A  galinha ruiva sequencia didatica 3 anoA  galinha ruiva sequencia didatica 3 ano
A galinha ruiva sequencia didatica 3 ano
 
trabalho wanda rocha ditadura
trabalho wanda rocha ditaduratrabalho wanda rocha ditadura
trabalho wanda rocha ditadura
 
Habilidades Motoras Básicas e Específicas
Habilidades Motoras Básicas e EspecíficasHabilidades Motoras Básicas e Específicas
Habilidades Motoras Básicas e Específicas
 

Comunicação Serial em C

  • 1. Comunicação Serial em Unix usando linguagem C Prof. Rômulo Silva Abr/2008 Rômulo C. Silva
  • 2. Comunicação Serial Transferência de um bit por vez Usada em dispositivos de rede, teclados, mouse, MODEMs e terminais Velocidade de transmissão expressa em bps (bits-por-segundo) ou “baud-rate” Padrão RS-232: Padrão elétrico definido pela EIA (Eletronic Industries Association) Existem 3 categorias: A, B e C, sendo RS-232C a mais usada Rômulo C. Silva
  • 3. RS-232 DTE (Data Terminal Equipment): equipamento que faz o processamento dos sinais. DCE (Data Circuit-terminating Equipment modem ): equipamento que faz a conexão Um cabo de conexão entre dispositivos DTE e DCE contém ligações em paralelo, não necessitando mudanças na conexão de pinos. Rômulo C. Silva
  • 5. RS-232 Sinal Significado SG ou GND Terra TD ou TX Tranmissão de dados RD ou RX Recepção de dados DTR Terminal de dados pronto DSR Conjunto de dados pronto RTS Pronto p/ enviar (computador) CTS Envie os dados (modem) DCD Portadora detectada RI Indicador de telefone tocando FG Frame Ground Rômulo C. Silva
  • 7. RS-232 Especifica um conector de 9 ou 25 pinos Rômulo C. Silva
  • 8. RS-232 Os sinais de temporização de transmissão e recepção são utilizados somente quando o protocolo de transmissão utilizado for síncrono. Para protocolos assíncronos, padrão 8 bits, os sinais de temporização externos são desnecessários. Rômulo C. Silva
  • 9. Etapas da Comunicação Serial Abertura da porta de comunicação Configuração da porta Transmissão de dados Recepção de dados Rômulo C. Silva
  • 10. Comunicação Serial em Unix Como todos os dispositivos, a porta serial é tratada como um arquivo (diretório padrão /dev) Rômulo C. Silva
  • 11. Abertura da Porta Serial fd = open(arquivoPorta, flags); Função retorna um file descriptor que permite o acesso à porta. Flags: O_NOCTTY : programa não será um terminal controlador da porta. Evita que o processo seja afetado por interrupção via teclado. O_NDELAY : programa não irá cuidar da linha do sinal DCD. Evita que o processo seja colocado para “dormir” até haja sinal na linha DCD O_RDWR : porta será aberta para leitura e gravação Rômulo C. Silva
  • 12. Abertura da Porta Serial em Unix #include #include #include #include #include #include <stdio.h> /* Standard input/output definitions */ <string.h> /* String function definitions */ <unistd.h> /* UNIX standard function definitions */ <fcntl.h> /* File control definitions */ <errno.h> /* Error number definitions */ <termios.h> /*POSIX terminal control definitions */ /* * 'open_port()' - Open serial port 1. * * Returns the file descriptor on success or -1 on error. */ int open_port(void) { int fd; /* File descriptor for fd = open("/dev/ttyS0", O_RDWR O_NDELAY); if (fd == -1) { /* * Could not perror("open_port: Unable to } else fcntl(fd, F_SETFL, 0); return (fd); } the port */ | O_NOCTTY | open the port. */ open /dev/ttyS0 - "); Rômulo C. Silva
  • 13. Escrever na Porta Serial Uso da chamada de sistema write: n = write(fd, "ATZr", 4); if (n < 0) fputs("write() of 4 bytes failed!n", stderr); Rômulo C. Silva
  • 14. Leitura de dados da Porta Serial Uso da chamada de sistema read Retorna a quantidade de bytes disponíveis no buffer da porta serial Se não há bytes disponíveis, o programa fica bloqueado até haja dados disponíveis O comportamento da função read pode ser alterado para retornar imediatamente quando não houver dados através da chamada: fcntl(fd, F_SETFL, FNDELAY); P/ restaurar o comportamento de read: fcntl(fd, F_SETFL, 0); Rômulo C. Silva
  • 15. Leitura da Porta Serial n=read(fd, buf, 5); /*tenta 5 bytes colocando na variável buf */ if(n < 0) { perror(“Sem dadosn”); } Rômulo C. Silva
  • 16. Fechar a porta Serial Chamda de sistema close. close(fd); Rômulo C. Silva
  • 17. Configuração da Porta Serial No arquivo <termios.h> encontra-se definida uma estrutura (struct) que guarda informações de configuração da porta serial As funções tcgetattr e tcsetattr permite ler e atribuir uma configuração à porta serial, respectivamente Rômulo C. Silva
  • 18. Configuração da Porta Serial – struct termios Rômulo C. Silva
  • 19. Configuração da Porta Serial Em difentes SOs, a taxa de transmissão e recepção (baud-rate) é armazenada em locais diferentes. As funções cfsetospeed e cfsetispeed permitem configurar a taxas de transmissão e recepção, independente do SO. Rômulo C. Silva
  • 20. Configuração da Porta Serial struct termios options; /* * Get the current options for the port... */ tcgetattr(fd, &options); /* * Set the baud rates to 19200... */ cfsetispeed(&options, B19200); cfsetospeed(&options, B19200); /* * Enable the receiver and set local mode... */ options.c_cflag |= (CLOCAL | CREAD); /* * Set the new options for the port... */ tcsetattr(fd, TCSANOW, &options); Rômulo C. Silva
  • 21. Configuração da Porta Serial Flags para função tcsetattr: Rômulo C. Silva