Programação na porta Serial
	
	
		Olá pessoal! Estou tentando programar uma aplicação pra escrever na porta serial. Pra isso, estou utilizando a struct termios. A minha dúvida está na hora de aplicar as configurações do dispositivo. A configuração de baud rate e data bits eu consegui encontrar (as constantes BXXX para Baud Rate e CSX para Data Bits, devendo ser aplicados ao campo c_cflag da struct. Minha dúvida é na hora de configurar a paridade (parity) - par, ímpar, nenhuma, space ou mark -, configurar stop bits - 1, 1,5 ou 2 bits - e o controle de fluxo (flow control) - software, hardware, nenhum ou xon/xoff. Alguém poderia me ajudar?
	 
	
	
	
		Re: Programação na porta Serial
	
	
		Você deve consultar a especificação técnica do dispositivo, pois estas configurações dependem do dispositivo com o qual a aplicação irá se comunicar.
- A paridade serve para detectar erros de comunicação.
- Os stop bits são usados para sincronização entre o transmissor e o receptor.
- O flow control é utilizado para determinar quando a transmissão deve iniciar ou parar (start-stop), etc. Isto evita que o dispositivo receptor perca informações por não ter capacidade de processar os dados recebidos tão rapidamente quanto o transmissor os envia.
Sendo assim, transmissor e receptor precisam usar as mesmas configurações.
	 
	
	
	
		Re: Programação na porta Serial
	
	
		Sim, sim. Minha dúvida reside em "como" aplicar estas configurações na  programação, pois ela poderá comunicar-se com dispositivos seriais  diversos. Como disse, durante a pesquisa que fiz, consegui descobrir  como configurar baud rate e data bits da serial.
                Código c:
                
struct termios config;
int fd;
 
// Aqui abro a serial, obtenho a struct a partir das configurações atuais, etc.
config.c_oflag = 0;
config.c_iflag = 0;
config.c_lflag = 0;
 
// Supondo 9600bps de baud rate
config.c_cflag = B9600;
 
// E 6 data bits
config.c_cflag |= CS6;
 
//...
  
	 
	
	
	
		Re: Programação na porta Serial
	
	
		Para "aplicar" as configurações:
                Código :
                
tcsetattr(fd, TCSANOW, &config);
  
Se não for isto, não compreendi seu problema.
Como não há uma configuração que funcionará para todos dispositivos, é interessante você permitir que o usuário configure tudo no momento da utilização. Caso você saiba a configuração de alguns dispositivos que serão utilizados, permita que o usuário selecione o dispositivo (de uma lista, por exemplo). Se for uma aplicação console, você ainda pode aceitar parametros como:
a) --device=name1 (ajusta todas configs para o device especificado)
b) --baudrate=[2400|4800|9600,etc], --ignore-parity, --flow-control=[xon|xoff|etc], e assim por diante.
	 
	
	
	
		Re: Programação na porta Serial
	
	
		Realmente, acho que não fui claro. A minha dúvida é como configurar stop bits, paridade e flow control na struct.
	 
	
	
	
		Re: Programação na porta Serial
	
	
	
	
	
		Re: Programação na porta Serial