windows串口控制linux,linux及windows下串口的使用.doc

设置串口属性通常有以下几个步骤:

包含头文件:

#include /*标准输入输出定义*/

#include /*标准函数库定义*/

#include /*Unix 标准函数定义*/

#include

#include

#include /*文件控制定义*/

#include /*POSIX 终端控制定义*/

#include /*错误号定义*/

#include /*字符串功能函数*/

termios结构体

struct termios {

tcflag_t c_iflag; /* 输入参数 */

tcflag_t c_oflag;/* 输出参数 */

tcflag_t c_cflag; /* 控制参数*/

tcflag_t c_ispeed; /* 输入波特率 */

tcflag_t c_ospeed; /* 输出波特率 */

cc_t c_line;/* 线控制 */

cc_t c_cc[NCCS]; /* 控制字符*/

};

设置波特率

struct termios opt;

tcgetattr(fd, &Opt);//设置前先获取属性

tcflush(fd, TCIOFLUSH);

cfsetispeed(&stOpt, DEVICE);//cfgetispeed 获取波特率

cfsetospeed(&stOpt, DEVICE);//cfgetospeed

tcsetattr(fd,TCSANOW,&options);//设置属性

配置串口属性(包括:数据位、校验位、停止位等)

struct termios options;

tcgetattr(iCom, & options);//设置前先获取

tcflush(fd,TCIFLUSH);//清空缓存数据

tcsetattr(fd,TCSANOW,&options);//设置属性

校验位:

奇校验:options.c_cflag |= (PARODD | PARENB);//

options.c_iflag |= INPCK;//

偶校验:options.c_cflag |= PARENB;

options.c_cflag &= ~PARODD;

options.c_iflag |= INPCK;

无校验:options.c_cflag &= ~PARENB;

options.c_iflag &= ~INPCK;

停止位:

1位:options.c_cflag &= ~CSTOPB;//

2位:options.c_cflag |= CSTOPB;

数据位:

7位:options.c_cflag &= ~CSIZE; //

options.c_cflag |= CS7;

8位:options.c_cflag &= ~CSIZE;

options.c_cflag |= CS8;

超时:

tcflush(iCom, TCIFLUSH);//清空缓存

stOpt.c_cc[VTIME] = 120; //超时12秒

stOpt.c_cc[VMIN] = 0; //

常用属性

PARODD 输入输出是奇校验

PARENB允许输出产生奇偶信息以及输入的奇偶校验。

INPCK启用输入奇偶检测

CSIZE字符长度掩码。取值为 CS5, CS6, CS7, 或 CS8。

CSTOPB设置两个停止位,而不是一个。

例:

Linux下打开串口(9600,n,8,1):

//变量声明

td_s32 g_fdCom[4] = {-1, -1, -1, -1};//串口句柄

struct termios stOpt;

//打开设备

g_fdCom[2] = open("/dev/ttyAMA1", O_RDWR); //| O_NOCTTY | O_NDELAY| O_SYNC

tcgetattr(g_fdCom[2], &stOpt);

tcflush(g_fdCom[2], TCIFLUSH);

//设置波特率

//cfmakeraw(&stOpt);//存储属性吗?,这句话导致超时设置失效

cfsetispeed(&stOpt, B9600);//cfgetispeed 获取波特率

cfsetospeed(&stOpt, B9600);//cfgetosp

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值