Listing
1
-
Opening a serial port.
#include < stdio.h > /**/ /* Standard input/output definitions */
#include < string .h > /**/ /* String function definitions */
#include < unistd.h > /**/ /* UNIX standard function definitions */
#include < fcntl.h > /**/ /* File control definitions */
#include < errno.h > /**/ /* Error number definitions */
#include < termios.h > /**/ /* POSIX terminal control definitions */
/**/ /*
* 'open_port()' - Open serial port 1.
*
* Returns the file descriptor on success or -1 on error.
*/
int
open_port( void )
... {
int fd; /**//* File descriptor for the port */
fd = open("/dev/ttyS0", O_RDWR ¦ O_NOCTTY ¦ O_NDELAY);
if (fd == -1)
...{
/**//*
* Could not open the port.
*/
perror("open_port: Unable to open /dev/ttyS0 - ");
}
else
fcntl(fd, F_SETFL, 0);
return (fd);
}
List2 ----- Setting the baud rate.
struct termios options;
/**/ /*
* Get the current options for the port...
*/
tcgetattr(fd, & options);
/**/ /*
* Set the baud rates to 19200...
*/
cfsetispeed( & options, B19200);
cfsetospeed( & options, B19200);
/**/ /*
* Enable the receiver and set local mode...
*/
options.c_cflag ¦ = (CLOCAL ¦ CREAD);
/**/ /*
* Set the new options for the port...
*/
tcsetattr(fd, TCSANOW, & options);
Listing 3 - Configuring the port for raw input.
int fd;
struct termios options;
/**/ /* open the port */
fd = open( " /dev/ttyS0 " , O_RDWR ¦ O_NOCTTY ¦ O_NDELAY);
fcntl(fd, F_SETFL, 0 );
/**/ /* get the current options */
tcgetattr(fd, & options);
/**/ /* set raw input, 1 second timeout */
options.c_cflag ¦ = (CLOCAL ¦ CREAD);
options.c_lflag &= ~ (ICANON ¦ ECHO ¦ ECHOE ¦ ISIG);
options.c_oflag &= ~ OPOST;
options.c_cc[VMIN] = 0 ;
options.c_cc[VTIME] = 10 ;
/**/ /* set the options */
tcsetattr(fd, TCSANOW, & options);
Initializing the MODEM.
int /**/ /* O - 0 = MODEM ok, -1 = MODEM bad */
init_modem( int fd) /**/ /* I - Serial port file */
... {
char buffer[255]; /**//* Input buffer */
char *bufptr; /**//* Current char in buffer */
int nbytes; /**//* Number of bytes read */
int tries; /**//* Number of tries so far */
for (tries = 0; tries < 3; tries ++)
...{
/**//* send an AT command followed by a CR */
if (write(fd, "AT ", 3) < 3)
continue;
/**//* read characters into our string buffer until we get a CR or NL */
bufptr = buffer;
while ((nbytes = read(fd, bufptr, buffer + sizeof(buffer) - bufptr - 1)) > 0)
...{
bufptr += nbytes;
if (bufptr[-1] == ' ' ¦ ¦ bufptr[-1] == ' ')
break;
}
/**//* nul terminate the string and see if we got an OK response */
*bufptr = '
#include < stdio.h > /**/ /* Standard input/output definitions */
#include < string .h > /**/ /* String function definitions */
#include < unistd.h > /**/ /* UNIX standard function definitions */
#include < fcntl.h > /**/ /* File control definitions */
#include < errno.h > /**/ /* Error number definitions */
#include < termios.h > /**/ /* POSIX terminal control definitions */
/**/ /*
* 'open_port()' - Open serial port 1.
*
* Returns the file descriptor on success or -1 on error.
*/
int
open_port( void )
... {
int fd; /**//* File descriptor for the port */
fd = open("/dev/ttyS0", O_RDWR ¦ O_NOCTTY ¦ O_NDELAY);
if (fd == -1)
...{
/**//*
* Could not open the port.
*/
perror("open_port: Unable to open /dev/ttyS0 - ");
}
else
fcntl(fd, F_SETFL, 0);
return (fd);
}
List2 ----- Setting the baud rate.
struct termios options;
/**/ /*
* Get the current options for the port...
*/
tcgetattr(fd, & options);
/**/ /*
* Set the baud rates to 19200...
*/
cfsetispeed( & options, B19200);
cfsetospeed( & options, B19200);
/**/ /*
* Enable the receiver and set local mode...
*/
options.c_cflag ¦ = (CLOCAL ¦ CREAD);
/**/ /*
* Set the new options for the port...
*/
tcsetattr(fd, TCSANOW, & options);
Listing 3 - Configuring the port for raw input.
int fd;
struct termios options;
/**/ /* open the port */
fd = open( " /dev/ttyS0 " , O_RDWR ¦ O_NOCTTY ¦ O_NDELAY);
fcntl(fd, F_SETFL, 0 );
/**/ /* get the current options */
tcgetattr(fd, & options);
/**/ /* set raw input, 1 second timeout */
options.c_cflag ¦ = (CLOCAL ¦ CREAD);
options.c_lflag &= ~ (ICANON ¦ ECHO ¦ ECHOE ¦ ISIG);
options.c_oflag &= ~ OPOST;
options.c_cc[VMIN] = 0 ;
options.c_cc[VTIME] = 10 ;
/**/ /* set the options */
tcsetattr(fd, TCSANOW, & options);
Initializing the MODEM.
int /**/ /* O - 0 = MODEM ok, -1 = MODEM bad */
init_modem( int fd) /**/ /* I - Serial port file */
... {
char buffer[255]; /**//* Input buffer */
char *bufptr; /**//* Current char in buffer */
int nbytes; /**//* Number of bytes read */
int tries; /**//* Number of tries so far */
for (tries = 0; tries < 3; tries ++)
...{
/**//* send an AT command followed by a CR */
if (write(fd, "AT ", 3) < 3)
continue;
/**//* read characters into our string buffer until we get a CR or NL */
bufptr = buffer;
while ((nbytes = read(fd, bufptr, buffer + sizeof(buffer) - bufptr - 1)) > 0)
...{
bufptr += nbytes;
if (bufptr[-1] == ' ' ¦ ¦ bufptr[-1] == ' ')
break;
}
/**//* nul terminate the string and see if we got an OK response */
*bufptr = '