aduino的软串口(虚拟串口)的bug

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);//将这个字符串在软串口串口中发送出来
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值