skyone 发表于 2021-7-5 15:29:34

串口通信


简介

串口通信指的是Arduino开发板通过USB线与电脑通信,经常用于显示Arduino程序的运行状态、输入实时的指令等。此外,Arduino程序无法调试,因此串口通信就显得非常重要。串口通信主要使用 Serial 类。
目录


[*]Serial.begin
[*]Serial.print
[*]Serial.read
[*]Serial.available
[*]其他方法
[*]软串口(未完待续)

skyone 发表于 2021-7-5 15:30:21

函数原型

void Serial.begin(long speed);
void Serial.begin(long speed, uint8_t config);作用

初始化串口,指定串口数据传播速率(波特率)参数


[*]pin指定引脚的编号,如: 10 , A0 等。
[*]config可选,很少用到,可能的值如下:

config可选配置数据位校验位停止位
SERIAL_5N15无1
SERIAL_6N16无1
SERIAL_7N17无1
SERIAL_8N1(默认配置)8无1
SERIAL_5N25无2
SERIAL_6N26无2
SERIAL_7N27无2
SERIAL_8N28无2
SERIAL_5E15偶1
SERIAL_6E16偶1
SERIAL_7E17偶1
SERIAL_8E18偶1
SERIAL_5E25偶2
SERIAL_6E26偶2
SERIAL_7E27偶2
SERIAL_8E28偶2
SERIAL_5O15奇1
SERIAL_6O16奇1
SERIAL_7O17奇1
SERIAL_8O18奇1
SERIAL_5O25奇2
SERIAL_6O26奇2
SERIAL_7O27奇2
SERIAL_8O28奇2

示例

Serial.begin(9600);             // 一般将波特率设为9600
Serial.begin(9600, SERIAL_8E2); // 将串口波特率设为9600,数据位8,偶校验,停止位2。

skyone 发表于 2021-7-5 15:32:19

函数原型

int HardwareSerial::available()
作用

获取串口接收到的数据个数,即获取串口接收缓冲区中的字节数。接受缓冲区最多可保存64 bytes的数据。使用前必须用 Serial.begin() 初始化 Serial。
返回值

可读取的字节数
示例

int count = Serial.available();

skyone 发表于 2021-7-5 15:32:50

函数原型size_t print(const __FlashStringHelper *);
size_t print(const String &);
size_t print(const char[]);
size_t print(char);
size_t print(unsigned char, int = DEC);
size_t print(int, int = DEC);
size_t print(unsigned int, int = DEC);
size_t print(long, int = DEC);
size_t print(unsigned long, int = DEC);
size_t print(double, int = 2);
size_t print(const Printable&);

size_t println(const __FlashStringHelper *);
size_t println(const String &s);
size_t println(const char[]);
size_t println(char);
size_t println(unsigned char, int = DEC);
size_t println(int, int = DEC);
size_t println(unsigned int, int = DEC);
size_t println(long, int = DEC);
size_t println(unsigned long, int = DEC);
size_t println(double, int = 2);
size_t println(const Printable&);
size_t println(void);

作用
向串口打印数据Serial.println() 比 Serial.print() 多一个换行。使用前必须用 Serial.begin() 初始化 Serial。
参数


[*]数据就像C语言的 prinft() 一样。当然,似乎更像Java的 System.out.println()
返回值

输出的字符数
示例

string str = "Skyone!";
Serial.print("Hello,");
Serial.println(str);
// Hello,Skyone!

skyone 发表于 2021-7-5 15:33:30

函数原型int HardwareSerial::read();

作用
读取串口输入的数据
返回值
返回下一个字符串,就像C语言的 getc() 一样。
示例
char c = Serial.read();



skyone 发表于 2021-7-5 15:36:02

本帖最后由 skyone 于 2021-7-5 15:37 编辑

Serial.end函数原型

void HardwareSerial::end()描述

结束串口通信。无参数,无返回值。

static/image/hrline/line4.png

Serial.find函数原型

bool find(char *target);
bool find(uint8_t *target);
bool find(char *target, size_t length);
bool find(uint8_t *target, size_t length);
bool find(char target);作用

从串口缓冲区读取数据,直到读取到指定的字符串。参数


[*]target需要搜索的字符串或字符
[*]length最多搜索的长度
返回值

Boolean型
[*]True:找到
[*]False:没有找到


static/image/hrline/5.gif


findUntil()
从串口缓冲区读取数据,直到读取到指定的字符串或指定的停止符。
原型

bool Serial.findUntil(target, terminal)参数:


[*]target需要搜索的字符串或字符
[*]terminal停止符


返回值:

bool型数据,是否找到

static/image/hrline/line9.png


flush()
等待正在发送的数据发送完成。
语法:

void Serial.flush()

static/image/hrline/3.gif



parseFloat()

从串口缓冲区返回第一个有效的float型数据。
语法:

float Serial.parseFloat()返回值:

float 型数据

static/image/hrline/2.gif


parseInt()
从串口流中查找第一个有效的整型数据。
语法:

int Serial.parseInt()返回值:

int 型数据

static/image/hrline/4.gif


peek()
返回 1 字节的数据,但不会从接受缓冲区删除该数据。与 read() 的不同之处在于 read() 读取数据后,会从接受缓冲区删除该数据。
语法:

int HardwareSerial::peek()返回值:

进入接受缓冲区的第一个字节的数据;如果没有可读数据,则返回-1

页: 1 [2]
查看完整版本: Arduino入门-基本函数介绍