Arduino 串口通信:开启一段新的技术旅程

串口引脚:0(RX)1(TX)

函数介绍

1 串口是否可用:Serial

        功能:查看串口是否可用

        函数原型:Serial

        返回值:  1:串口可用(或串口准备就绪)

                        0:串口不可用(或串口未准备就绪)

2 可以读取的字节数:Serial.available()

        功能:查看可读数据量

        函数原型:Serial.available()

        返回值:可以读取的字节数,即已经收到的数据数(单位字节)

3 可以写入的字节数:Serial.availableForWrite()

        功能:查看写入缓冲区空间

        函数原型:Serial.availableForWrite()

        返回值:可以写入的字节数(单位字节)(缓冲区剩余的空间,即还可以写多少数据进缓冲区。)

4 开启串口:Serial.begin()

        功能:打开串口

        函数原型一:Serial.begin(speed),一般使用这个即可

                speed:波特率,一般设置9600即可

        函数原型二:Serial.begin(speed,config)

                speed:波特率,一般设置9600即可

                config:设置数据位、是否奇偶校验、停止位

                        config可以取值:详细请看官网

                                默认值为:SERIAL_8N1(即调用Serial.begin(speed)时默认为此)

                                8N1代表数据位为8位,不使用奇偶校验,停止位位是1位

 5 关闭串口:Serial.end()

        功能:禁用串口

        函数原型:Serial.end()

6 查找字符:Serial.find(target)

                功能:查找字符串/字符target,直到遇到字符串结束符

               函数原型:Serial.fine(target)

                target:要查找的字符或字符串,可以是字符也可以是字符串

                返回值:1:在接收到的数据中找到字符

                                0:在接收到的数据中没有找到字符

                注意:find在查找时会一直查找,直到找到或者查到末尾

                           find查找的过程是读取一个字符,判断字符是否是目标字符,如果不是则丢弃字符,读取下一个,直到查找到。因此执行fine函数后目标字符前的数据都会丢失。

7 有结束查找字符:Serial.findUntil(target, terminal)

        功能:查找字符串target,直到出现字符串terminal(就停止查找)

        函数原型:Serial.findUntil(target, terminal)

        target:要查找的字符串,只能查找字符串,如果要查找字符则写单个字符的字符串“a”

        terminal:结束标志,单片机读取到一个字符串后,如果判断到该字符为结束字符串,则无论有没有找到目标字符串都停止查找

         返回值:1:在接收到的数据中找到字符串

                        0:在接收到的数据中没有找到字符串

注意:同样,被查找过的字符串都会丢失,包括结束字符串。

 8 等待串口发送数据结束:Serial.flush()

        功能:等待串口发送数据结束,在发送数据时,发送数据量很大时,发送需要时间,我们要等待数据发送完成才能继续发送。flush函数相当于一个延时函数,数据没有发送完成就继续延时,发送完成就结束延时。

        无返回值

9 解析小数:Serial.parseFloat()

10 解析整形:Serial.parseInt()

11 查看输入字符:Serial.peek()

        功能:查看输入数据中的第一个字节,并且查看后不删除数据。

        返回值:返回值数据类型整形,是二进制数据的绝对值,也是字符的ASCII值,如果没有数据则返回-1;

12 发送函数:Serial.print(x)

        功能:将易于人类读解的数字或字符x解析成字符串发送出去,即print具有自动识别和转换功能。

        返回值:写入(发送)的字节数

        x:x可以是多种数据类型

                整形:如 int a=123;Serial.print(a); 函数先将整形a转换成字符串“123”,再将字符串的ASCII值发送出去。

                小数(浮点型):如 float a=1.2345;Serial.print(a); 函数先将小数a转换成字符串“1.23”(默认发送两位小数),再将字符串的ASCII值发送出去。

                字符/字符串:直接发送其ASCII值

        发送整形或者浮点型时还可以有第二个参数:Serial.print(x,mode)

                当x为整形:mode可以是

                                        BIN:将数据x以二进制的字符串形式发送,如

                                        如 int a=123;Serial.print(a,BIN); 函数先将整形a转换成二进制数  1111011 ,再将其变成字符串“1111011”,再将字符串的ASCII值发送出去。

                                        OCT:将数据x以八进制字符串形式发送

                                        DEC:将数据x以十进制字符串形式发送,不写该参数时Serial.print(x)默认转换成十进制发。

                                        HEX:十六进制

                 当x为浮点型:mode可以是任意大于零的数字,表示保留小数点后多少位数据

                                        如:float a=1.2345;Serial.print(a,3); 函数先将小数a转换成字符串“1.234”(默认发送两位小数,即不填第二个参数时Serial.print(a);),再将字符串的ASCII值发送出去。

13 发送函数:Serial.println(x)

        该函数用法与发送函数:Serial.print(x)一样。但是在发送的字符串的结尾加了"\r\n"回车和换行符。

14 读取一个字节:Serial.read()

        功能:从接收到的数据中读取一个字节的数据

        返回值:返回值数据类型整形,是二进制数据的绝对值,也是字符的ASCII值,如果没有数据则返回-1;

        注意:该函数与peek()函数不一样,peek()查看数据后,数据还保留在缓冲区,但read()执行后读取的那一个字节的数据将从缓冲区中删除。

15 读取一定字节数的数据:Serial.readBytes(buffer, length)

        功能:读取长度为length字节长度的数据存放到buffer中(buffer是数组名,即指针)

        buffer:存放数据的地址,一般是数组的名字

        length:读取数据的字节数

        返回值:成功读取的字节数,最大值为length,表示未将所有数据读取完成,小于length表示剩下的数据已经没有length那么多了,表示该次读取后数据已经没有了,返回0表示没有数据可读。

16 发送字符/字符串:Serial.write()

        发送单个字符:Serial.write(val)

                val:要发送的字符或者其ASCII值,如Serial.write('1')和Serial.write(49)

        发送字符串:Serial.write(str)

                str:要发送的字符串,如Serial.write("abc");

        发送数组:Serial.write(buf,len)

                buf:数组的名字

                len:发送的字节数

 参考:arduino教程

            arduino官网

            回车和换行的区别

            readBytes()使用例子

物联沃分享整理
物联沃-IOTWORD物联网 » Arduino 串口通信:开启一段新的技术旅程

发表评论