+ Responder ao Tópico



  1. #1
    Avatar de striker07
    Ingresso
    Dec 2010
    Localização
    Santa Rita do Sapucaí - MG
    Posts
    6

    Padrão 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?

  2. #2

    Padrão 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.

  3. #3
    Avatar de striker07
    Ingresso
    Dec 2010
    Localização
    Santa Rita do Sapucaí - MG
    Posts
    6

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

  4. #4

    Padrão 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.

  5. #5
    Avatar de striker07
    Ingresso
    Dec 2010
    Localização
    Santa Rita do Sapucaí - MG
    Posts
    6

    Padrão 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.

  6. #6

  7. #7
    Avatar de striker07
    Ingresso
    Dec 2010
    Localização
    Santa Rita do Sapucaí - MG
    Posts
    6

    Padrão Re: Programação na porta Serial

    Grato! =)