来源:

1.配置串口通信数据位、校验位、停止位 通常我们使用Serial.begin(speed)来完成串口的初始化,这种方式,只能配置串口的波特率。 而使用Serial.begin(speed, config)可以配置数据位、校验位、停止位等。 例如Serial.begin(9600,SERIAL_8E2)是将串口波特率设为9600,数据位8,偶校验,停止位2。 config可用配置如下:

config可选配置 数据位 校验位 停止位   config可选配置 数据位 校验位 停止位
SERIAL_5N1 5 1   SERIAL_5E2 5 2
SERIAL_6N1 6 1   SERIAL_6E2 6 2
SERIAL_7N1 7 1   SERIAL_7E2 7 2
SERIAL_8N1 8 1   SERIAL_8E2 8 2
SERIAL_5N2 5 2   SERIAL_5O1 5 1
SERIAL_6N2 6 2   SERIAL_6O1 6 1
SERIAL_7N2 7 2   SERIAL_7O1 7 1
SERIAL_8N2 8 2   SERIAL_8O1 8 1
SERIAL_5E1 5 1   SERIAL_5O2 5 2
SERIAL_6E1 6 1   SERIAL_6O2 6 2
SERIAL_7E1 7 1   SERIAL_7O2 7 2
SERIAL_8E1 8 1   SERIAL_8O2 8 2

2. if (Serial)的用法 当串口被打开时,Serial的值为真。串口被关闭时Serial的值为假。 比较囧的是,这个方法只适用于Leonardo和micro的Serial,也就是说连接连接到电脑USB的那个模拟串口。 例如以下程序,当你没有使用串口监视器打开串口时,程序就会一直循环运行while (!Serial) {;} ,当你打开串口监视器,程序会退出while循环,开始loop中的程序。

kittenblock中小学创客名师推荐的图形化编程软件

 
void setup() {
 
Serial.begin( 9600);
 
while (!Serial) {;}
 
}
   
 
void loop() {
   
 
}

3.read和peek输入方式的差异 串口接收到的数据都会暂时存放在接收缓冲区中,使用read()与peek()都是从接收缓冲区中读取数据。不同的是,使用read()读取数据后,会将该数据从接收缓冲区移除;而使用peek()读取时,不会移除接收缓冲区中的数据。 你可以使用以下程序,观察其运行结果:

kittenblock中小学创客名师推荐的图形化编程软件

 
char col;
 
void setup() {
 
Serial.begin( 9600);
 
}
   
 
void loop() {
 
while(Serial.available()>0){
 
col=Serial.read();
 
Serial.print( "Read: ");
 
Serial.println(col);
 
delay( 1000);
 
}
 
}

kittenblock中小学创客名师推荐的图形化编程软件

 
char col;
 
void setup() {
 
Serial.begin( 9600);
 
}
   
 
void loop() {
 
while(Serial.available()>0){
 
col=Serial.peek();
 
Serial.print( "Read: ");
 
Serial.println(col);
 
delay( 1000);
 
}
 
}

4. 串口读入int型数据 实际上是串口读入字符串,再转换为int型数据。

kittenblock中小学创客名师推荐的图形化编程软件

 
while (Serial.available() > 0) {
 
int inChar = Serial.read();
 
if (isDigit(inChar))
 
{
 
inString += ( char)inChar;
 
}
 
i=inString.toInt();
 
}
 
}

5.输出不同进制的文本 我们可以是用 Serial.print(val, format)的形式输出不同进制的文本 参数val 是需要输出的数据 参数format 是需要输出的进制形式,你可以使用如下参数: BIN(二进制) DEC(十进制) OCT(八进制) HEX(十六进制) 例如,使用Serial.print(123,BIN),你可以在串口调试器上看到1111011 使用Serial.print(123,HEX),你可以在串口调试器上看到7B
6.Arduino MEGA\Arduino DUE上其他串口用法 serial1\serial2\serial3 和serial用法一样 比如serial3.begin(9600);
6.修改串口缓冲区大小 Arduino串口缓冲区默认为64字节,如果你单次传输的数据较多可以将 arduino-1.0.5-r2\hardware\arduino\cores\arduino\HardwareSerial.cpp中的 #define SERIAL_BUFFER_SIZE 64 修改为 #define SERIAL_BUFFER_SIZE 128 这样就有128字节的缓冲区了

转载于:https://www.cnblogs.com/MCSFX/p/10874764.html

Arduino 串口的一些高级用法相关推荐

  1. Arduino串口通讯,Serial库,RGBled灯示例

    串口硬件 Arduino板通过串口(称为UART或USART串口)与其它设备进行通讯.即通用同步/异步收发器 所有Arduino板至少有一个串口,数字引脚位为 0(RX) 和1(TX)注:做通讯时0, ...

  2. vim的高级用法配置以及在系统中如何获取帮助

    vim的高级用法配置以及在系统中如何获取帮助 1 vim的三种模式 1.1 使用方法 1.2 vim模式 2 vim工作的基本配置 2.1 临时设定(set设定) 2.2 永久设定方式 3 搜索 4 ...

  3. Cacti Weathermap 高级用法 (二)

    成都长宽Weathermap实际运用的效果图示例: 这是一个CNC出口的质量监控图. 途中cnc节点(红色)是一个展示图例,TEL节点根据存活状态显示为绿色 TEL节点上面P:47.2ms 是一个,这 ...

  4. JAVA正则表达式高级用法(分组与捕获)

    2019独角兽企业重金招聘Python工程师标准>>> 正则表达式在字符串处理中经常使用,关于正则简单的用法相信有一点程序基础的人都懂得一些,这里就不介绍简单基础了.这里主要讲解一下 ...

  5. GUN sed高级用法,sed脚本编写

    这里举一些sed常用的高级用法例子经供参考: 一下操作都针对file.txt文件作修改 [root@QX-××× ~]# cat file.txt libgcc-4.4.7-4.el6.x86_64 ...

  6. java return用法_Java枚举的高级用法之多键值的映射使用

    枚举Enum单映射使用 做Java的各位仁兄姐妹都知道,Java通过HashMap,以及枚举提供了方便的K-V映射功能,例如 枚举单映射使用 但是如果遇到多个键值映射,例如K-K-V的形式怎么办呢?可 ...

  7. (转)python requests 高级用法 -- 包括SSL 证书错误的解决方案

    (转)python requests 高级用法 -- 包括SSL 证书错误的解决方案 参考文章: (1)(转)python requests 高级用法 -- 包括SSL 证书错误的解决方案 (2)ht ...

  8. Python 内置函数sorted()在高级用法

    对于Python内置函数sorted(),先拿来跟list(列表)中的成员函数list.sort()进行下对比.在本质上,list的排序和内建函数sorted的排序是差不多的,连参数都基本上是一样的. ...

  9. class() 高级用法 -- lua

    class() 高级用法 class() 除了定义纯 Lua 类之外,还可以从 C++ 对象继承类.比如需要创建一个工具栏,并在添加按钮时自动排列已有的按钮,那么我们可以使用如下的代码:-- 从 CC ...

最新文章

  1. SAP UI5 应用开发教程之五十五 - 如何将本地 SAP UI5 应用通过 Node.js Express 部署到公网上试读版
  2. 实用的it知识学习_怎样能更快更好的学习好书法?分享一些比较实用的理论知识...
  3. 20154319 《网络对抗技术》后门原理与实践
  4. 微人事项目实战的数据库脚本_EMP微前端实战之cocos2d线上项目
  5. 服务业小店店主生活和工作洞察报告
  6. Leaflet文档阅读笔记-Quick Start Guide笔记
  7. tar 解压_关于Ubuntu下解压tar.xz方法记录
  8. leetcode题解167-两数之和 II - 输入有序数组
  9. 一定要陪一个男人创业,你会和他一样快速成长,并内心变得强大
  10. 《深度学习笔记》——初识PyTorch的学习笔记
  11. php 地区表设计,php消息表设计
  12. ipixsoft swf to html5 converter,iPixSoft SWF to Video Converter(视频转换软件)
  13. Hybrid和Tagged Untagged理解
  14. ansys有限元分析论述
  15. 【JS】利用JS给删除按钮添加提示框
  16. 分布式理论与分布式架构设计理论
  17. centos7桌面没有计算机图标,Centos7,桌面图标消失且右键失效
  18. mysql 99乘法表_MySQL 通过sql输出99乘法表
  19. Java 根据当前日期,获取到月初,和月底时间
  20. 一、MySQL数据库设置默认时区

热门文章

  1. 中国土方工程轮胎市场趋势报告、技术动态创新及市场预测
  2. 面试题 17.09. 第 k 个数[小顶堆][动态规划]
  3. 自然语言处理NLP星空智能对话机器人系列:深入理解Transformer自然语言处理 GLUE Winograd schemas and NER
  4. gradle的安装配置及使用
  5. 做外贸怎么跟进国外客户?怎么给国外客户电话?
  6. 华为Atlas200DK硬件--矿大人工智能实验(环境搭建+人像语义分割实现)
  7. 下拉框插件 dropdown.js介绍
  8. XML 中的 xmlns、xmlns:xsi、xsi:schemaLocation
  9. python擅长做什么工作_【一点资讯】Python是个什么鬼?为何火遍国内外……
  10. xp下如何安装oracle8i client8.1.7.0.0,oracle8i在redhat7.1~7.3下的安装数据库教程 -电脑资料...