aduino的软串口(虚拟串口)
aduino的软串口(虚拟串口)
一级目录
二级目录
三级目录
什么是软串口
不是物理串口(单片机上明确标注有 TX RX的引脚),其他引脚变为串口引脚。
(以arduino nano为例, D1和D2是物理串口,除D11 、D12、D13其他的引脚均可以做为虚拟引脚)
(我也不知到为什么D11 D12 D13 不能使用,我自己尝试的时候无法将数据发送和接受出去,容易出bug)
设置软串口
需要设置头文件
#include <SoftwareSerial.h>
定义哪些串口是软串口
SoftwareSerial XXXXX(RXpin,TXpin); //RX=2,TX=3
//SoftwareSerial 是定义软串口的函数
//XXXXX 是自定义软串口的名字
//括号里的是第一个是RX(接收数据)的引脚
//括号里的是第一个是TX(发送数据)的引脚
在(ardunio IDE ) void setup()里
void serup()
{
xxxxx.begin(9600);//设置软串口的波特率为9600
Serial.begin(9600);//物理引脚
xxxxx.listen();//软串口的监听 (一定要写这个)
}
软串口和物理串口设定是一样的
void loop()
void loop()
{
xxxxx.available() ;//判断是否有软串口有信号传输过来(可以判断传输几个字节过来)
xxxxx.read();//读取软串口的一个字节 ,删除一个字节
xxxxx.peek();//读取软串口一个字节,但不删除一个自己
xxxxx.write() ;//向软串口发送数据 (字节)
//满8位,高位溢出".不论数值是多少只保留最低8位的2进制数据. 然后转换成16进制输 出.
xxxxx.println();发送字节
xxxxx.print();//向软串口发送数据
//逐个字符转成对应ASCII码的10进制数,发送出去,每一个都按字节对应的ASCII码按发送出去(以16进制形式逐个输出)
}
可以同时使用软串口和物理串口一起使用
if(Serial.available()>0)
{
char a =xxxxx.read();
if(a=='A')
{
xxxxx.write('A');//软串口,发送A,但是这个字符不会出现在物理串口界面
Serial.println('A');//物理串口,发送A
}
}
如果想接收一个整个的字符串
string mode =" ";//定义string函数来存储软串口发送过来的字符串
//(由一个个字符拼接而成为字符串)
if(xxxxx.available()>0)//软串口发送字符串过来
{
if(xxxxx.peek()!=’\n‘)//以回车为结尾(可以用其他的字符来确定结尾)
{
mode+=(char)xxxxxl.read(); //把字符串联成字符串
}
}
Serial.println(mode);//将这个字符串在物理串口中发送出来
如果想发送一个整个的字符串
string gede =" ";//定义string函数来存储软串口发送过来的字符串
//(由一个个字符拼接而成为字符串)
if(Serial.available()>0)//物理串口发送字符串过来
{
if(Serial.peek()!=’\n‘)//以回车为结尾(可以用其他的字符来确定结尾)
{
gede+=(char)Serial.read(); //把字符串联成字符串
}
}
xxxxx.println(gede);//将这个字符串在软串口串口中发送出来