• 【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()使用例子

  • 相关阅读:
    使用集成开发环境来开发Go项目
    《AI驱动下的开发者新生态》-2024长沙.NET技术社区活动-诚邀大家报名
    我封装的一个REPR轮子 Biwen.QuickApi
    零基础Linux_10(进程)进程终止(main函数的返回值)+进程等待
    安装及管理文件
    网络安全管理与运维服务
    如何从Docker镜像中提取恶意文件
    【数据结构】二叉树详解
    Java如何使用SAX(Simple API for XML)解析XML呢?
    2024.03.02蓝桥云课笔记
  • 原文地址:https://blog.csdn.net/qq_44633275/article/details/126910641