Read/write serial port with Linux

I want to read data off a serial device on /dev/ttyS1. What I need to do is send one ASCII character to the device, upon which it spits out 7 multi-character values, see below. The comm parameters are 1200Bd 8N1, no flow control. I have tried various approaches based on the serial programming HowTo and a few code fragments written for serial multimeters found on the net. However, I don't seem to be able to make any of this work. I can get the expected result by using a terminal emulator, but what I really want is a program or script that can do this. This has been bugging me for weeks now, but I don't seem to be able to make anything of the HowTo and progs. Any advice on how to approach this or a link to a more in-depth description?

Michael

Sent: F Rec'd: R:12,60;- 1,3;15;11,22;12,61;- 1,6;- 1,3;

Reply to
Michael Hofmann
Loading thread data ...

Try initializing like this:

This structure was obtained by using the 'stty raw' command, and then dumping the results.

struct termios tio_raw = { /*c_iflag*/ 0x0, /*c_oflag*/ 0x0, /*c_cflag*/ 0x18b2, /*c_lflag*/ 0x0, /*c_line*/ 0x0, { /*c_cc[0]*/ 0x0, /*c_cc[1]*/ 0x0, /*c_cc[2]*/ 0x0, /*c_cc[3]*/ 0x0, /*c_cc[4]*/ 0x0, /*c_cc[5]*/ 0x0, /*c_cc[6]*/ 0x1, /*c_cc[7]*/ 0x0, /*c_cc[8]*/ 0x0, /*c_cc[9]*/ 0x0, /*c_cc[10]*/ 0x0, /*c_cc[11]*/ 0x0, /*c_cc[12]*/ 0x62, /*c_cc[13]*/ 0x61, /*c_cc[14]*/ 0x69, /*c_cc[15]*/ 0xe, /*c_cc[16]*/ 0x7b, /*c_cc[17]*/ 0x8, /*c_cc[18]*/ 0x40, /*c_cc[19]*/ 0x0, /*c_cc[20]*/ 0x0, /*c_cc[21]*/ 0x0, /*c_cc[22]*/ 0x0, /*c_cc[23]*/ 0x0, /*c_cc[24]*/ 0x0, /*c_cc[25]*/ 0x0, /*c_cc[26]*/ 0x0, /*c_cc[27]*/ 0x0, /*c_cc[28]*/ 0x0, /*c_cc[29]*/ 0x0, /*c_cc[30]*/ 0x0, /*c_cc[31]*/ 0x0, }, };

void Serial::init( ) {

tio_raw.c_cflag = B115200 | CS8 | CLOCAL | CREAD; tcsetattr( fd, TCSANOW, &tio_raw);

}
Reply to
Bryan Hackney

I have found the serial howto difficult to work with. There is another serial programming guide, by a guy named Michael Sweet, and that guide IMHO is far superior. I did a search on google and found it at:

formatting link

HTH

Paul.

-- Remove _rem_ before reply> I want to read data off a serial device on /dev/ttyS1. What I need to do

Reply to
Paul Taylor

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.