http://www.zago.eti.br/hyperterminal-fonte_c.txt Use CTRL+F para refinar a pesquisa. Linha de: **************** separa mensagens ou tópicos. ******************************************************** Zago http://www.zago.eti.br/menu.html FAQ e artigos sobre Linux ******************************************************** De:  Marcos Pitanga Para:  Claudio Polegato Jr. , favoretto@cpqconcorde.com.br, pessin@bigfer-rs.com.br, linux-br@bazar2.conectiva.com.br Assunto:  Re: (linux-br)HyperTerminal :: Linux Data:  Fri, 25 Jun 2004 18:08:43 -0300 HyperTerminal :: Linux > Olá Marcos Pitanga, >   Li seu e-mail e gostaria também de uma cópia para dar uma olhada, pode > ser? Obrigado. Ai vai os programas... **************** Header de código fonte C (meuinclude.h) #include #include #include #include #include #include #include #include #include **************** Código Fonte C (mestre.c) #include "meuinclude.h" main(int argc, char *argv[]) {    char buffer[255]; //defino buffer da porta    char buftamanho[100];    int  wb,nb,fdarq1,confportafd,abreportafd;    struct termios configuracao;    struct stat minhaestrutura;    /* Verifico a sintaxe correta */     if (argc<3)       {         printf("A sintaxe correta:\n\n");         printf("./ \n");         exit (1);       } /* Abre o arquivo */    fdarq1=open(argv[2], O_RDONLY);    if (fdarq1<0)    {       perror ("Arquivo inexistente");       return -1;    } /* Abre a Porta */    abreportafd = open(argv[1], O_RDWR);     if (abreportafd <0)     {         perror ("Nao consegui abrir a porta serial" );         exit (-1);     }     else       fcntl (abreportafd, F_SETFL,0); // leio dado da porta     printf("Abri a porta\n"); /* Pegar a configuracao corrente */     tcgetattr (confportafd, &configuracao); /* Setando a velocidade em Baud Rate */     cfsetispeed(&configuracao, B38400);     cfsetospeed(&configuracao, B38400); /* Configura a entrada com timeout de 1 segundo */     configuracao.c_cflag &= ~CRTSCTS; // Opcao de Controle     configuracao.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG); // Opcao de Linha     configuracao.c_oflag &= ~OPOST; //Opcao de saida     configuracao.c_cc[VMIN] = 0;     configuracao.c_cc[VTIME] = 50;     configuracao.c_iflag &= ~(IXON | IXOFF | IXANY); /* Configura as opcoes */    tcsetattr(confportafd, TCSANOW, &configuracao); /* Verifico a quantidade de bytes do arquivo */     stat(argv[2],&minhaestrutura);     write(abreportafd,minhaestrutura.st_size,4);     printf ("%d\n",minhaestrutura.st_size); /* Le arquivo */     while (nb=read(fdarq1,buffer,200))     { /*Verifico o time out*/     if (nb==0)     {      printf("Tempo Expirado\n");      exit (-1);        }     write(abreportafd,buffer,nb);     }        close(fdarq1);     close(abreportafd);     }   **************** Código Fonte C (escravo.c) #include "meuinclude.h" main(int argc, char *argv[]) {    char buffer[255]; //defino buffer da porta    int nb,fdarq2,tam_arquivo;    int abreportafd, confportafd;    unsigned int tam;    unsigned char buf[3];    struct termios configuracao; /* Verifico a sintaxe correta */        if (argc<3){         printf("A sintaxe correta:\n\n");         printf("./ \n");         exit (1);     } /* Abre o arquivo */    fdarq2=open(argv[2], O_WRONLY|O_CREAT, 0644);       switch (errno) {        case ENOENT: printf("Diretorio Invalido %d\n");        exit (-1);    }           /* Abre a Porta */    abreportafd = open(argv[1], O_RDWR);     if (abreportafd == -1) {         perror ("Nao consegui abrir a porta serial" );     }     else       fcntl (abreportafd, F_SETFL,0); // leio dado da porta /* Configurando a Porta */     tcgetattr (confportafd, &configuracao);     cfsetispeed(&configuracao, B38400);     cfsetospeed(&configuracao, B38400);     configuracao.c_cflag &= ~CRTSCTS; // Opcao de Controle     configuracao.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG); // Opcao de Linha     configuracao.c_oflag &= ~OPOST; //Opcao de saida     configuracao.c_cc[VMIN] = 0;     configuracao.c_cc[VTIME] = 50;     configuracao.c_iflag &=~(IXON|IXOFF|IXANY);     tcsetattr(confportafd, TCSANOW, &configuracao); /* Ler Porta com tamanho do arquivo */     tam_arquivo=read(abreportafd,&tam,4);         printf("O tamanho do arquivo tem %d bytes\n",tam);             buf[0]=tam;     buf[1]=(tam<<8);     buf[2]=(tam<<16);     buf[3]=(tam<<24);         tam=(buf[3]>>24)+(buf[2]>>16)+(buf[1]>>8)+(buf[0]);         printf("O tamanho do arquivo tem %d bytes\n",tam);         if (tam_arquivo==0){             printf("Tempo Expirado\n");             exit (-1);     }                 while (nb=read(abreportafd,buffer,200))     {            if (nb==0) {             printf("Tempo Expirado\n");             exit (-1);         }               write(fdarq2,buffer,nb);         close(fdarq2);     close(abreportafd); }    } **************** ****************