c linux 串口函数
来源:互联网 发布:vb控件 编辑:程序博客网 时间:2024/06/05 07:38
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 = '
- c linux 串口函数
- Linux C 串口编程
- Linux C 串口编程
- Linux C 串口编程
- linux c 串口编程
- Linux C 串口编程
- linux 串口编程初始化函数
- linux-C编程-串口编程
- Linux串口编程详解 linux串口相关设置函数
- keil C 中调用串口函数 printf
- Linux 串口编程 中英文简体对照 c
- Linux C编程连载(3)-串口编程
- Linux C编程连载【3】-串口编程
- linux C串口常规设置参考
- linux下面串口工具C-kermit
- Linux下用C实现串口读写
- linux下面串口工具C-kermit
- Linux C串口编程部分 转
- 监测你的SQL SERVER--让瓶颈暴露
- 用Java动态代理实现AOP
- Blowing Fuses
- 从Oracle到Sql Server--Sql智能翻译器
- 三步堵死SQL注入漏洞
- c linux 串口函数
- SQL注射总结
- 优化数据库前,问自己10个问题
- 横版游戏制作过程
- oracle通配符和运算符
- Shipping Routes
- 用SQL Server保持会话状态
- Oracle汉字排序
- 网络SQL入侵与防范高级篇