[LUGOS-PROG] Serial port problem

Marko Bevc fonzie at kibla.org
Sun Sep 14 20:53:03 CEST 2003


Zdravo!

Kot je kolega že omenil se tukaj odpre fd(file descriptor), s katerim se 
dela. Najprej ti priporočam Linux Serial Programming Guide. Drugače pa 
potem bereš dol z read/write funkcijama. Samo čakanje pa je odvisno od 
inicialicacije fd-ja ob odprtju. No v primeru večih ali pa da te zanima 
kdaj so podatki na voljo lahko uporabiš select() oz while(1) in nastavič 
čakanje na podatke(blocking mode). no seveda navsezadnje odvisno od potreb 
aplikacije...

lp,
Marko
On Fri, 12 Sep 2003 15062262 at users.siol.net wrote:

> 
> Pozdravljeni.
> 
> Prenašam kodo iz Win na Linux in imam naslednji problem. 
> Problem je v tem,da metoda read čaka dokler ne dobi podatkov.
> Na Win obstaja funkcija SetCommMask(), ki prepreči, da metoda read čaka
> v neskončnost ali obstaja kaj podobnega na Linuxu oz. kako se to doseže.
> 
> Hvala, lep pozdrav Goran
> Koda:
> ***************************************************************************=
> **************************
> BOOL CSerialPort::blWaitCommEventLinux (BYTE btAFlag)
> {
>     int inRes;
>     BYTE btBuf;
>     BOOL STOP=FALSE;
>     while (STOP==FALSE ) {
> 
>         usleep(300);=20
> 
>         // after receiving SIGO, wait_flagFrom_ComPort=3DFALSE, input is av=
> ailable and can be read
>         if ( wait_flagFrom_ComPort==FALSE ) {
>             printf("CSerialPort::blWaitCommEventLinux :wait_flagFrom_ComPor=
> t=3D=3DFALSE\n");
>             inRes =3D read(intDeviceHandle,&btBuf, 1); // TU FUNKCIJA NE VR=
> NE
>             printf("CSerialPort::blWaitCommEventLinux :wait_flagFrom_ComPor=
> t==FALSE za read\n");
>             if(inRes==1){
>                 wait_flagFrom_ComPort=TRUE;
>                 if( btBuf==btAFlag) {
>                     return TRUE;
>                 }
>                 STOP=TRUE;
>                 return FALSE;
>             }
>         }
>     }
> 
>     return FALSE;
> 
> 
> }
> 
> ***************************************************************************=
> *********************
> 




More information about the lugos-prog mailing list