Konfigurera serieport

Goran Hasse gorhas at raditex.nu
Mon Mar 7 16:10:51 CET 2022


Hej!

Jag håller på att konfigurera en serieport - lite den "hårda vägen"

-------------------------------------------------------------
bzero(&(handle->t), sizeof(handle->t));

handle->t.c_cflag |= (CS8|CREAD|CLOCAL);
handle->t.c_cflag |= PARENB;
handle->t.c_cc[VMIN]  = 0;
handle->t.c_cc[VTIME] = 10;

cfsetispeed(&(handle->t), B9600);
cfsetospeed(&(handle->t), B9600);

tcsetattr(handle->fd, TCSANOW, &(handle->t));
-------------------------------------------------------------

Men så hittade jag denna utsaga (i något forum)

-------------------------------------------------------------
You must call cfmakeraw on a tty obtained from tcgetattr. You cannot zero-out a struct termios, configure it, and then set the tty with tcsetattr. If you use the zero-out method, then you will experience unexplained intermittent failures, especially on the BSDs and OS X. "Unexplained intermittent failures" include hanging in read(3).”
------------------------------------------------------------

Men cfmakeraw, om jag förstått manualen rätt, sätter väl bara allt till rimliga värden?

Om man _måste_ använda cfmakeraw så betyder det att det finns "hemliga" parametrar som man inte vet något om?

Någon som har en synpunkt?

// GH

-- 
Göran Hasse
Raditex Control AB
Boo 229, 715 91 ODENSBACKEN, SWEDEN
Mob +46 70 5530148
gorhas at raditex.nu


More information about the BUS mailing list