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

包含头文件:

#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

windows串口控制linux,linux及windows下串口的使用.doc相关推荐

  1. linux串口环形缓冲区,能不能讲解下串口环形缓冲区的概念?

    有段串口收发程序,看起来费劲,感觉可能是环形收发,能不能普及下思路? /* 变量声明 */ INT8U * p_uart1SendBuf;                                ...

  2. STM32F40实现 按键密码锁、按键控制LED 、串口选择菜单 、串口控制LED开关 、串口控制蜂鸣器开关及响度 、串口控制蜂鸣器播放音乐 、按键控制LED的亮度

    本人第一次发文,很多都不懂,尤其害怕版权问题,如果有人质疑我有盗权行为,请联系我,因为项目也遇到很多问题,然后就解决嘛,可印象中只有播放音乐代码有借鉴,所以如果有质疑盗了权的,请务必联系我.板子是使用 ...

  3. c语言stm32串口控制单片机,基于STM32F103C8T6单片机电脑串口通讯控灯设计(原理图+程序+论文)...

    题目:基于STM32F103C8T6单片机电脑串口通讯控灯设计 内容要求: 一. 任务 通信是指不同的独立系统利用线路互相交换数据,它的主要目的是将数据从一端传送到另一端,实现数据的交换.在现代工业控 ...

  4. 串口控制74HC164C语言,51单片机74HC164串口控制数码管显示

    一般数码管需要接7个脚才能显示,如果用单片机本身的I/O口,虽然可以但是浪费宝贵的i/O口资源.本例用移位寄存器74HC164作为数码管驱动进行控制. 74HC164特性   是一种8位串转并口的控制 ...

  5. 小车PWM调速-串口控制

    小车PWM调速-串口控制 串口控制调速,即通过串口修改speed的值, 1.将上节PWM调速用到的定时器0源文件和头文件引入进来,工程文件如下 mian.c:主函数 Motor.c:小车前进.后退.左 ...

  6. 嵌入式linux开发,minicom,串口通信工具,就像Windows下的超级终端

    Linux 下的 minicom 的功能与 Windows 下的超级终端功能相似,可以通过串口控制外部的硬件设备.适于在 Linux 通过超级终端对嵌入式设备行管理. 一.安装 sudo apt-ge ...

  7. 探讨如何在Linux上通过windows的域控制上网( by quqi99 )

    探讨如何在Linux上通过windows的域控制上网( by quqi99 ) 作者:张华  发表于:2012-05-08 版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及 ...

  8. ubuntu搭建vnc实现windows端控制linux桌面

    ubuntu搭建vnc实现windows端控制linux桌面 vnc-server和vnc4server ubuntu18.04 ubuntu20.04 x11vnc 安装 设置登录密码 启用服务 方 ...

  9. windows命令行下访问linux,Windows支持直接访问Linux子系统文件:你的下一台Linux何必是Linux...

    原标题:Windows支持直接访问Linux子系统文件:你的下一台Linux何必是Linux 晓查 发自 凹非寺 量子位 报道 | 公众号 QbitAI 微软,致力于做最好的Linux发行版. 今天, ...

  10. windows 远程访问别人的linux下的ftp服务器,linux与windows之间使用ftp相互访问(CentOS提示ftp:command not found)...

    启动linux及windows系统,这里默认linux系统的IP为192.168.1.15.打开windows的DOS终端,首先输入 :ftp 192.168.1.15 在使用账户和密码登陆:登陆格式 ...

最新文章

  1. 如何在三个月学习三年的生活经验
  2. LVS负载均衡之持久性连接介绍(session篇)
  3. Oracle游标学习笔记
  4. exp/expdp中query参数的使用
  5. mysql function函数_详解MySQL如何按表创建千万级的压测数据
  6. vue表格刷新数据_Vue.js+Layer表格数据绑定与实现更新的实例
  7. 第五百一十八天 how can I 坚持
  8. 访问属性与类数据成员
  9. 416亿元公有云市场:阿里173亿、腾讯50亿、华为35亿
  10. 简单的php文件_超简单的php文件上传程序
  11. C语言日字,【C语言日日练(二)】static关键字
  12. textbox 下拉模糊查询ajax,Ajax实现在textbox中输入内容,动态从数据库中模糊查询显示到下拉框中...
  13. 【流媒体开发】6、ffplay命令
  14. 基于图神经网络的时空预测
  15. css为中英文设置不同的字体
  16. 模拟一个“系统登陆“窗体,进行用户名和密码的验证: 1.当用户名和密码都正确时,弹出一个对话框,提示“用户名和密码正确”, 2.用户名错误,弹出一个对话框,提示“用户名错误,请重新输入!”
  17. 微信小程序聊天客服工具
  18. 【技术类】【ArcGIS对国产卫星的支持2:高分一号卫星】篇9、动态影像服务发布
  19. OSChina 周日乱弹 ——我已经开始适应这个身体了
  20. python中description_python中cursor.description什么意思

热门文章

  1. 二、多并发实现接口压力测试
  2. ADPRL - 近似动态规划和强化学习 - Note 8 - 近似策略迭代 (Approximate Policy Iteration)
  3. Blender左轮手枪制作教程
  4. Python完全学习大师班
  5. 3ds Max中的V-Ray学习
  6. VOLTE parameter in Attach Request/Accept message
  7. Springboot+mybatisplus搭建新闻管理系统
  8. windows下 Source Monitor代码度量工具的使用
  9. 美元加息怎么“剪羊毛”
  10. Thrift源码解析--TBinaryProtocol