一些常用串口属性的设置方法。

设置流控制

termios_new.c_cflag &= ~CRTSCTS; //不使用流控制

termios_new.c_cflag |= CRTSCTS; //使用硬件流控制

termios_new.c_iflag |= IXON|IXOFF|IXANY; //使用软件流控制

屏蔽字符大小位

termios_new.c_cflag &= ~CSIZE;

设置数据位大小

termios_new.c_cflag |= CS8; //使用8位数据位

termios_new.c_cflag |= CS7; //使用7位数据位

termios_new.c_cflag |= CS6; //使用6位数据位

termios_new.c_cflag |= CS5; //使用5位数据位

设置奇偶校验方式

termios_new.c_cflag &= ~PARENB; //无奇偶校验

termios_new.c_cflag |= PARENB; //奇校验

termios_new.c_cflag &= ~PARODD;

termios_new.c_cflag |= PARENB; //偶校验

termios_new.c_cflag &= ~PARODD;

停止位

termios_new.c_cflag |= CSTOPB; //2位停止位

termios_new.c_cflag &= ~CSTOPB; //1位停止位

输出模式

termios_new.c_cflag &= ~OPOST; //原始数据(RAW)输出

控制字符

termios_new.c_cc[VMIN] = 1; //读取字符的最小数量

termios_new.c_cc[VTIME] = 1; //读取第一个字符的等待时间

关闭终端回显,键盘输入的字符不会在终端窗口显示。

#include

#include

#include

#include

int main(void)

{

struct termios ts,ots;

char passbuf[1024];

tcgetattr(STDIN_FILENO,&ts); /* STDIN_FILENO的值是1,表示标准输入的文件描述符 */

ots = ts;

ts.c_lflag &= ~ECHO; /* 关闭回终端回显功能*/

ts.c_lflag |= ECHONL;

tcsetattr(STDIN_FILENO,TCSAFLUSH,&ts); /* 应用新终端设置 */

fgets(passbuf,1024,stdin); /* 输入字符不会在终端显示 */

printf("you input character = %s/n",passbuf);

tcsetattr(STDIN_FILENO,TCSANOW,&ots); /* 恢复旧的终端设备 */

}

例子:串口参数设置函数

int Serial::SetPara(int serialfd,int speed,int databits , int stopbits ,int parity )

{

struct termios termios_new;

bzero( &termios_new, sizeof(termios_new));//等价于memset(&termios_new,sizeof(termios_new));

cfmakeraw(&termios_new);//就是将终端设置为原始模式

termios_new.c_cflag=BaudRate(speed);

termios_new.c_cflag |= CLOCAL | CREAD;   //  termios_new.c_iflag = IGNPAR | IGNBRK;

termios_new.c_cflag &= ~CSIZE;

switch (databits)

{

case 0:

termios_new.c_cflag |= CS5;

break;

case 1:

termios_new.c_cflag |= CS6;

break;

case 2:

termios_new.c_cflag |= CS7;

break;

case 3:

termios_new.c_cflag |= CS8;

break;

default:

termios_new.c_cflag |= CS8;

break;

}

switch (parity)

{

case 0:      //as no parity

termios_new.c_cflag &= ~PARENB;    //Clear parity enable

break;

case 1:

termios_new.c_cflag |= PARENB;     // Enable parity

termios_new.c_cflag &= ~PARODD;

break;

case 2:

termios_new.c_cflag |= PARENB;

termios_new.c_cflag |= ~PARODD;

break;

default:

termios_new.c_cflag &= ~PARENB;   // Clear parity enable

break;

}

switch (stopbits)// set Stop Bit

{

case 1:

termios_new.c_cflag &= ~CSTOPB;

break;

case 2:

termios_new.c_cflag |= CSTOPB;

break;

default:

termios_new.c_cflag &= ~CSTOPB;

break;

}

tcflush(serialfd,TCIFLUSH); // 清除输入缓存

tcflush(serialfd,TCOFLUSH); // 清除输出缓存

termios_new.c_cc[VTIME] = 1;   // MIN与 TIME组合有以下四种:1.MIN = 0 , TIME =0  有READ立即回传 否则传回 0 ,不读取任何字元

termios_new.c_cc[VMIN] = 1;  //    2、 MIN = 0 , TIME >0  READ 传回读到的字元,或在十分之一秒后传回TIME 若来不及读到任何字元,则传回0

tcflush (serialfd, TCIFLUSH);  //    3、 MIN > 0 , TIME =0  READ 会等待,直到MIN字元可读

return tcsetattr(serialfd,TCSANOW,&termios_new);  //    4、 MIN > 0 , TIME > 0 每一格字元之间计时器即会被启动 READ 会在读到MIN字元,传回值或

}

int Serial::BaudRate( int baudrate)

{

switch(baudrate)

{

case 0:

return (B2400);

case 1:

return (B4800);

case 2:

return (B9600);

case 3:

return (B19200);

case 4:

return (B38400);

case 5:

return (B57600);

case 6:

return (B115200);

default:

return (B9600);

}

}

linux系统串口设置参数,linux 串口编程记录(一)串口参数设置(示例代码)相关推荐

  1. linux设置sfq队列参数,Linux系统运维之Linux高级流量控制工具TC使用方法

    Linux系统运维之Linux高级流量控制工具TC使用方法 本文标签: 运维 流量劫持 Linux系统运维之Linux高级流量控制工具TC使用方法, 在做MHA测试的时候,有一个重要的环节就是测试MH ...

  2. Linux系统下计算机C语言的编程技巧

    C语言在多程序编辑中发挥着基础性作用,并在国际范围得到了全面应用.科技的蓬勃发展,使得人们更加重视C语言技术,并对C语言提出更多的要求.但Linux系统是最主要的操作系统之一,基于此开展C语言编程工作 ...

  3. Linux系统磁状态检测,检测Linux硬件状态

    计算机系统是由软件系统和硬件系统共同组成的.检测硬件状态对于保障整个系统的稳定是非常重要的.不论操作系统是使用Linux.还是Windows,一旦硬件出现故障,那么整个系统的安全就严重了.这里我们主要 ...

  4. 如何查看linux系统的存储空间大小,linux 如何查看硬盘大小,存储空间大小等系统信息及硬件信息...

    一.linux CPU大小 [root@idc ~]# cat /proc/cpuinfo |grep "model name" && cat /proc/cpui ...

  5. linux系统charp命令,操作系统 Linux系统

    Linux操作系统 预备知识(Operating System): 1.GNU项目,GNU项目是一个自由软件项目,旨在建立一个完全自由开放通用的UNIX软件平台. 2.操作系统:管理计算机硬件和软件资 ...

  6. git 的安装以及使用:是一个开源的分布式版本控制系统,可以对项目进行版本管理。 早期是linux之父用来管理linux系统源代码的(linux是和windows一样操作系统 开源免费的操作...

    ## 总结 - 学会使用基本的git命令 管理源代码 - 学会去github创建仓库 并将代码上传到github的仓库 (有待完成 回家有网再push) - 了解本地的.git和服务器github的. ...

  7. 如何制作linux系统硬盘,手把手带你自制Linux系统之二 简易Linux的制作

    手把手带你自制Linux系统之二 简易Linux的制作 本文利用CentOS5.5自带内核制作一个可以正常启动的Mini Linux. 打开上一篇准备工作中创建的CentOS虚拟机,为另一台虚拟机Mi ...

  8. Linux系统-小倒腾之Linux DIY定制裁剪(New kernel+Busybox)o_o(二)

    在前面的<Linux系统-小倒腾之Linux DIY定制裁剪(附带简单网络功能)o_o(一)>博文中,我通过对一个Linux系统的裁剪,最终制作出来了一个带有网络功能的微型Linux系统; ...

  9. 用u盘装linux系统分区怎么画,linux安装教程,U盘安装Linux详细步骤图解。

    linux是免费开源的系统,经过多年的发展linux在应用方面已经有了很大的提升,很多工作都可以在linux下完成~如果你想要学习linux或是在linux下工作,那么需要把电脑安装成linux,如何 ...

  10. php 登录 linux服务器,如何实现linux系统远程登录到linux服务器

    linux系统登录到远程linux服务器: 有多种不同的协议可供选择,也许SSH是"最好"的.SSH是secure shell的简写,意为"安全的shell". ...

最新文章

  1. 空间点像素索引(二)
  2. mybatis 一对多_MyBatis面试题集合,90%会遇到这些问题
  3. SAP MM不常用功能之供应商Rebate
  4. fftw3图片傅里叶变换_DFT-去除图片周期性噪声
  5. MongoDB副本集配置系列四:节点的关闭顺序
  6. .NET的垃圾回收机制引发的问题
  7. 关于 Google Play 商店下载应用一直处于“等待中”的问题
  8. 使用 Electron 构建桌面应用
  9. 李笑来-- 学习学习再学习(前言)
  10. Thunder v7.9.5.4480 Ayu 优化版
  11. (1)输入直角三角形的两个直角边的长度a,b,求斜边c的长度 (2) 编写一个程序,用于两个数的交换
  12. Tinkpad T480设置U盘启动
  13. 如何给客户进行价值塑造?说一万句话,不如讲一个故事
  14. matlab打开笔记本摄像头_如何利用MATLAB实现摄像头视频获取和保存
  15. torchtext常用函数整理
  16. wubi安装linux工具,Wubi.exe(Ubuntu辅助安装工具)
  17. 链接投票二维码制作投票的链接制作投票链接的制作
  18. 三大集合:List、Map、Set的区别与联系
  19. 小程序手机号注册php,PHP解密小程序手机号码
  20. windows arm linux,Windows服务器搭载ARM,人生大赢家不是微软而是Linux

热门文章

  1. 阿里云python面试题_Python金典面试题
  2. 隔离级别(未提交读、提交读、可重复读、可串行化)、多版本并发控制、Next-Key Locks(Record Locks、Gap Locks)
  3. CAN总线的初步认识
  4. android java和c混合编程_C/C++在Java、Android和Objective-C三大平台下实现混合编程
  5. 数据库 / 事务的隔离级别
  6. CygWin / 安装软件包的方法
  7. CygWin / 获取 root 权限的方法
  8. 启明云端分享|ESP32-C3有望三月中旬量产出货,ESP32-C3-MINI-1模块技术规格书分享
  9. Linux内核的l2tp实现,Linux Kernel gdth实现内核内存破坏漏洞
  10. JAVA揭竿而起总要有名号