所有教程由网友发布,仅供参考,请谨慎采纳。科创不对教程的科学性、准确性、可靠性负责。
转帖:Arduino教程——串口的一些高级用法
kc20382013/09/07电子技术 IP:广西
Arduino教程——串口的一些高级用法
XXXXXXXXXXXXXXXXXXXXX/XXXXXXXXXXXXXXXXXXml
1.配置串口通信数据位、校验位、停止位

通常我们使用
XXXXXXXXXgin(speed)
来完成串口的初始化,这种方式,只能配置串口的波特率。

而使用
XXXXXXXXXgin(speed, config)
可以配置数据位、校验位、停止位等。

例如XXXXXXXXXgin(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的值为假。

比较囧的是,这个方法只适用于LeonardomicroSerial,也就是说连接连接到电脑USB的那个模拟串口。

例如以下程序,当你没有使用串口监视器打开串口时,程序就会一直循环运行while (!Serial) {;} ,当你打开串口监视器,程序会退出while循环,开始loop中的程序。


代码:


void setup() {
  XXXXXXXXXgin(9600);
  while (!Serial) {;}
}

void loop() {

}

3.
readpeek输入方式的差异

串口接收到的数据都会暂时存放在接收缓冲区中,使用read()peek()都是从接收缓冲区中读取数据。不同的是,使用read()读取数据后,会将该数据从接收缓冲区移除;而使用peek()读取时,不会移除接收缓冲区中的数据。

你可以使用以下程序,观察其运行结果:


代码一:


char col;
void setup() {
  XXXXXXXXXgin(9600);
}

void loop() {
  while(Serial.available()>0){
    col=XXXXXXXXXad();
    XXXXXXXXXint("Read: ");
    XXXXXXXXXintln(col);
    delay(1000);
  }
}

代码二:

char col;
void setup() {
  XXXXXXXXXgin(9600);
}

void loop() {
  while(Serial.available()>0){
    col=XXXXXXXXXek();
    XXXXXXXXXint("Read: ");
    XXXXXXXXXintln(col);
    delay(1000);
  }
}

4.
串口读入int型数据

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


代码:

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

5.
输出不同进制的文本

我们可以是用 XXXXXXXXXint(val, format)的形式输出不同进制的文本

参数val 是需要输出的数据

参数format 是需要输出的进制形式,你可以使用如下参数:

BIN(二进制)

DEC(十进制)

OCT(八进制)

HEX(十六进制)

例如,使用XXXXXXXXXint(123,BIN),你可以在串口调试器上看到1111011

使用XXXXXXXXXint(123,HEX),你可以在串口调试器上看到7B

来自:电子信息 / 电子技术严肃内容:教程/课程
0
已屏蔽 原因:{{ notice.reason }}已屏蔽
{{notice.noticeContent}}
~~空空如也

想参与大家的讨论?现在就 登录 或者 注册

所属专业
所属分类
上级专业
同级专业
kc2038
学者 机友 笔友
文章
37
回复
268
学术分
1
2009/01/06注册,5年8个月前活动
暂无简介
主体类型:个人
所属领域:无
认证方式:手机号
IP归属地:未同步
文件下载
加载中...
{{errorInfo}}
{{downloadWarning}}
你在 {{downloadTime}} 下载过当前文件。
文件名称:{{resource.defaultFile.name}}
下载次数:{{resource.hits}}
上传用户:{{uploader.username}}
所需积分:{{costScores}},{{holdScores}}下载当前附件免费{{description}}
积分不足,去充值
文件已丢失

当前账号的附件下载数量限制如下:
时段 个数
{{f.startingTime}}点 - {{f.endTime}}点 {{f.fileCount}}
视频暂不能访问,请登录试试
仅供内部学术交流或培训使用,请先保存到本地。本内容不代表科创观点,未经原作者同意,请勿转载。
音频暂不能访问,请登录试试
支持的图片格式:jpg, jpeg, png
插入公式
评论控制
加载中...
文号:{{pid}}
投诉或举报
加载中...
{{tip}}
请选择违规类型:
{{reason.type}}

空空如也

加载中...
详情
详情
推送到专栏从专栏移除
设为匿名取消匿名
查看作者
回复
只看作者
加入收藏取消收藏
收藏
取消收藏
折叠回复
置顶取消置顶
评学术分
鼓励
设为精选取消精选
管理提醒
编辑
通过审核
评论控制
退修或删除
历史版本
违规记录
投诉或举报
加入黑名单移除黑名单
查看IP
{{format('YYYY/MM/DD HH:mm:ss', toc)}}