Avatar billede krukken Juniormester
12. november 2004 - 13:28 Der er 1 kommentar og
1 løsning

Skriv og læsning på COM-port(Interrupted system call)

Hej,

Jeg sidder og arbejder med Linux maskin.

Jeg forsøger at få den til at vente på at der kommer data, også behandle disse data, og sende nogle data tilbage via COM-porten.

FOr at vente på at der kommer da har jeg en sigaction(ref: http://www.eksperten.dk/spm/560612)

Problemet er nu bare. Jeg kan godt få maskinen til at sende noget tilbage efter der er læse på COM-porten, men læsningen går galt. errno er sat til 4 og perror indeholder beskrivelsen: Interrupted system call.

Nogle som her en ide om hvad jeg gør galt?
Avatar billede krukken Juniormester
12. november 2004 - 13:40 #1
Jeg initiere COM-porten på denne måde:
      fd = open(devicename, O_RDWR | O_NOCTTY | O_NONBLOCK);
      if (fd < 0)
      {
        perror(devicename);
      }
      //install the serial handler before making the device asynchronous
      saio.sa_handler =  Serialhandler::signal_handler_IO;
      sigemptyset(&saio.sa_mask);  //saio.sa_mask = 0;
      saio.sa_flags = 0;
      saio.sa_restorer = NULL;
      sigaction(SIGIO,&saio,NULL);

      // allow the process to receive SIGIO
      fcntl(fd, F_SETOWN, getpid());
      // Make the file descriptor asynchronous (the manual page says only
      // O_APPEND and O_NONBLOCK, will work with F_SETFL...)
      fcntl(fd, F_SETFL, FASYNC);
     
      tcgetattr(fd,&oldtio); // save current port settings
      // set new port settings for canonical input processing
      newtio.c_cflag = BAUD | CRTSCTS | DATABITS | STOPBITS | PARITYON | PARITY | CLOCAL | CREAD;
      newtio.c_iflag = IGNPAR;
      newtio.c_oflag = 0;
      newtio.c_lflag = 0;      //ICANON;
      newtio.c_cc[VMIN]=1;
      newtio.c_cc[VTIME]=0;
      tcflush(fd, TCIFLUSH);
      tcsetattr(fd,TCSANOW,&newtio);
Avatar billede krukken Juniormester
13. november 2004 - 12:40 #2
Jeg har vist fået det løst. Da jeg prøvede en ande computer virkede det fint.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester