Página 1 de 2 12 ÚltimoÚltimo
+ Responder ao Tópico



  1. 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?

  2. 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.



  3. 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;
     
    //...
    Última edição por osmano807; 28-12-2010 às 10:13.

  4. 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.



  5. Realmente, acho que não fui claro. A minha dúvida é como configurar stop bits, paridade e flow control na struct.






Tópicos Similares

  1. MiniImpressora cupom não Fiscal na porta serial
    Por To-Doido no fórum Servidores de Rede
    Respostas: 3
    Último Post: 11-12-2005, 22:33
  2. Kazaa na porta 80
    Por no fórum Servidores de Rede
    Respostas: 3
    Último Post: 22-07-2003, 10:11
  3. Problemas na porta 25
    Por PandaAzul no fórum Servidores de Rede
    Respostas: 4
    Último Post: 27-03-2003, 08:17
  4. problemas na porta 21......
    Por no fórum Servidores de Rede
    Respostas: 1
    Último Post: 21-02-2003, 18:19
  5. ativar porta serial
    Por Fernando_SC no fórum Servidores de Rede
    Respostas: 0
    Último Post: 17-01-2003, 17:42

Visite: BR-Linux ·  VivaOLinux ·  Dicas-L