My serial port investigation continues. Here's the premise again...
I've got an embedded system that dumps chars and strings to a serial
port. I've attached a Slackware 7.1 Toshiba 430 CDT laptop to the other
end of the serial cable. When the system streams a string of chars the
linux box doesn't get anything but if I send individual chars they are
received by the linux box.
When I send 'setserial -ga /dev/ttyS0' it tells me my UART is a 16550A.
If I change this to a 16550 everything works fine. I looked at
/etc/serial.conf and it is defining the port as a 16450. Who's really
controlling this and how do I get it set properly?
As a side problem:
This code doesn't print anything until a \n is received from the
sending unit:
...
char buf[255];
...
while (STOP==FALSE) { /* loop for input */
res = read(fd,buf,1); /* returns after 1 chars have been
input */
printf("%c", buf);
if (buf[0]=='z') STOP=TRUE;
}
But this code does:
...
char buf[255];
...
while (STOP==FALSE) { /* loop for input */
res = read(fd,buf,1); /* returns after 1 chars have been
input */
printf("%c\n", buf);
if (buf[0]=='z') STOP=TRUE;
}
Why would the addition of a \n fix the code. It appears to flush the
print buffer.
Thanks,
-John