Gast
#2809332
Bei einer kontinuierlichen Ausgabe von 150 Byte Bloecken auf
/dev/ttyUSB0 mit 57600,8,n,1 und anschliessender Pause ist mir folgendes
aufgefallen:
Vatiante1: (length=150)
while(42)
{
if ( write ( fd, s, length) != length)
{
printf ( "send failed" );
exit(2);
}
while ((tcdrain(fd) < 0) && (errno == EINTR));
usleep(50000);
}
Variante2:
while(42)
{
for(i=0;i<150;i++)
{
if ( write ( fd, &c, 1) != 1)
{
printf ( "send failed" );
exit(2);
}
}
while ((tcdrain(fd) < 0) && (errno == EINTR));
usleep(50000);
}
Variante1 funktioniert wie erwartet:
150Bytes 50ms Pause 150Bytes 50ms Pause
ssssssssssssssssssssss--------------ssssssssssssssssssssss--------------
...
Variante2 hat fast keine Pause:
150Bytes 150Bytes
ssssssssssssssssssssss--ssssssssssssssssssssss--...
Warum wartet Variante2 vor dem tcdrain nicht, bis das letzte Zeichen
gesendet worden ist?