文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>Linux下串口编程

Linux下串口编程

时间:2010-08-27  来源:小明的技术博客

老板让我研究一下UPS的控制,貌似在Linux下面没有相应的监控软件,UPS和电脑通信时候使用的是串口(RS232),所以先对Linux串口编程了解一下。

因为只是设计串口传输数据,而不需要串口来处理,那么使用原始模式(Raw Mode)方式来通讯。

串口操作需要的头文件:

#include     <stdio.h>      /*标准输入输出定义*/
#include     <stdlib.h>     /*标准函数库定义*/
#include     <unistd.h>     /*Unix 标准函数定义*/
#include     <sys/types.h>  
#include     <sys/stat.h>   
#include     <fcntl.h>      /*文件控制定义*/
#include     <termios.h>    /*PPSIX 终端控制定义*/
#include     <errno.h>      /*错误号定义*/
 

首先需要打开串口

在 Linux 下串口文件是位于 /dev 下的

串口一 为 /dev/ttyS0

串口二 为 /dev/ttyS1

打开串口是通过使用标准的文件打开函数操作:

int fd;
/*以读写方式打开串口*/
fd = open( "/dev/ttyS0", O_RDWR);
if (-1 == fd){ 
/* 不能打开串口一*/ 
perror(" 打开错误!");
}

 

然后对串口设置

串口设置设计的结构体如下:

struct termio
{       unsigned short  c_iflag;        /* 输入模式标志 */    
        unsigned short  c_oflag;        /* 输出模式标志 */    
        unsigned short  c_cflag;        /* 控制模式标志*/     
        unsigned short  c_lflag;        /* local mode flags */  
        unsigned char   c_line;         /* line discipline */   
        unsigned char   c_cc[NCC];      /* control characters */
};

这里仅对常用的设置进行介绍:

1.波特率设置:

struct  termios Opt;
tcgetattr(fd, &Opt);
tcflush(fd,TCIFLUSH);
cfsetispeed(&Opt,B19200);     /*设置为19200Bps*/
cfsetospeed(&Opt,B19200);

2.校验位和停止位设置

常用的一般是8N0

Opt.c_cflag |= CS8;                          //设置数据位
Opt.c_cflag &= ~PARENB;   
Opt.c_oflag &= ~(OPOST);
Opt.c_cflag &= ~CSTOPB;
Opt.c_lflag &= ~(ICANON|ISIG|ECHO|IEXTEN);
Opt.c_iflag &= ~(INPCK|BRKINT|ICRNL|ISTRIP|IXON);  

Opt.c_cc[VMIN] = 0;
Opt.c_cc[VTIME] = 0;

 

3.写入配置

if (tcsetattr(fd,TCSANOW,&Opt) != 0)       //装载初始化参数
{ 
   perror("SetupSerial!\n"); 
   close(fd);
   return -1;
}

 

测试串口

char buf[20];

for(;;)
{
len = write(fd, buf, 1);        //写串口
if(len > 0)
{
read(fd, buf, sizeof(buf));      //读串口数据
printf("buf %s\n", buf);    //输出读到的数据
}
usleep(100000);
}

参考资料:

http://www.ibm.com/developerworks/cn/linux/l-serials/index.html
http://opengroup.org/onlinepubs/007908775/xsh/termios.h.html
http://hi.baidu.com/zy6666/blog/item/998da20e2c4634eb37d1220d.html

相关阅读 更多 +
排行榜 更多 +
模拟梦幻人生 v2.0.1 安卓版

模拟梦幻人生 v2.0.1 安卓版

飞行射击 下载
模拟梦幻人生 v2.0.1 安卓版

模拟梦幻人生 v2.0.1 安卓版

飞行射击 下载
模拟梦幻人生 v2.0.1 安卓版

模拟梦幻人生 v2.0.1 安卓版

飞行射击 下载