全Arduinoesp8266串口的常用函数.docx
《全Arduinoesp8266串口的常用函数.docx》由会员分享,可在线阅读,更多相关《全Arduinoesp8266串口的常用函数.docx(6页珍藏版)》请在冰点文库上搜索。
![全Arduinoesp8266串口的常用函数.docx](https://file1.bingdoc.com/fileroot1/2023-5/8/f38fad97-ad02-4c81-8190-08a841e20f40/f38fad97-ad02-4c81-8190-08a841e20f401.gif)
全Arduinoesp8266串口的常用函数
Arduinoesp8266■串口的常用函数
常用函数
l.Serial.begin(speed)
打开串口
参数:
speed:
波特率
2.SeriaLavailable()
获取串口上可读取的数据的字节数。
该数据是指已经到达并存储在接收缓存(共有64字节)中。
available。
继承自Stream实用类。
语法:
Serial.availableQ
参数:
无
返回值:
返回可读取的字节数
示例:
intincomingByte=0;//forincomingserialdata
voidsetup(){
Serial.begin(9600);//opensserialport,setsdatarateto9600bps
)
voidloop(){
//senddataonlywhenyoureceivedata:
if(Serial.availableO>0){
//readtheincomingbyte:
incomingByte=SeriaLread();
//saywhatyougot:
Serial.print("Ireceived:
");
Serial.printlnGncomingByte,DEC);
)
)
3.SeriaLread0
读串口数据,read。
继承自Stream实用类。
语法:
参数:
无
返回值:
串口上第一个可读取的字节(如果没有可读取的数据则返回-1)-int型。
示例:
intincomingByte=0;用于存储从串口读到的数据
voidsetup(){
Serial.begin(9600);//打六\,i2y1速率为9600bps
)
voidloop(){
//只在收到数据时发送数据
if(Serial.available{)>0){
//读取传入的字节incomingByte=Serial.read();
//指示你收到的数据
Serial.print(UIreceived:
n);
Serial.printIn(incomingByte,DEC);
}
}
刷新串口数据,等待串口数据完成输出。
S.SeriaLprintO
往串口发数据,无换行描述
以人类可读的ASCH码形式向串口发送数据,该函数有多种格式。
整数的每一数位将以ASCII码形式发送。
浮点数同样以ASCII码形式发送,默认保留小数点后两位。
字节型数据将以单个字符形式发送。
字符和字符串会以其相应的形式发送。
例如:
Serial.print(78)发送"78"
Serial.print(1.23456)发送"1.23"
Serial.printCN')发送"N"
Serial.printCHelloworld.")发送"Helloworld."
可选的第二个参数用于指定数据的格式。
允许的值为:
BIN(binary二进制),OCT(octal八进制),DEC(decimal十进制),HEX(hexadecimal十六进制)。
对于浮点数,该参数指定小数点的位数。
例如:
Serial.print(78zBIN)gives-1001110"
Serial.print(78zOCT)gives"116"
Serial.print(78,HEX)givesn4E"
Serial.println(1.23456,0)gives"I"
Serial.println(1.23456,2)gives"1.23"
Serial.println(1.23456,4)gives"1.2346"
你可以用F()把待发送的字符串包装到flash存储器。
例如:
Serial.print(F("HelloWorld"))
要发送单个字节数据,请使用Serial.write()o
添加F0相当于为字符串常量定义了PROGMEM属性,常量字符串仍然存储在FLASH中但是程序运行时不会再将常量字符串从FLASH中copy到SRAM中,而是直接读取FLASH中的字符串,这样一来就节约了SRAM,但是代码运行速度就下降了。
语法:
Serial.print(val)
Serial.print^al,format)
参数:
val:
要发送的数据(任何数据类型)
format:
指定数字的基数(用于整型数)或者小数的位数(用于浮点数)。
返回值:
size_t(long):
print。
返回发送的字节数(可丢弃该返回值)。
示例:
/*
UsesaFORloopfordataandprintsanumberinvariousformats.
*/
intx=0;//variable
voidsetup(){
Serial.begin(9600);//opentheserialportat9600bps:
)
voidloop(){
//printlabels
Serial.printC'NOFORMAT");//printsalabel
Serial.print("\t");//printsatab
Serial.printCDEC");
Se市LprintQt");
Serial.print(”HEX)
Serial.print("\t");
Serial.print("OCT");
Serial.print("\t");
Serial.print("BIN");
Serial.print("\t");
for(x=0;x<64;x++){//onlypartoftheASCIIchart,changetosuit
//printitoutinmanyformats:
SeriaLprint(x);//printasanASCII-encodeddecimal-sameas"DEC”
Serial.print(n\t");//printsatab
Serial.print(x/DEC);//printasanASCII-encodeddecimal
Serial.print("\t");//printsatab
SeriaLpnnt(x,HEX);//printasanASCII-encodedhexadecimal
Serial.print("\t");//printsatab
SeriaLpnnt(x,OCT);//printasanASCII-encodedoctal
〃thenaddsthecarriagereturnwith"printin'1
delay(200);//delay200milliseconds
)
Serial.printing)//printsanothercarriagereturn
)
6.SeriaLprintlnO
往串口发数据,类似Serial.printO,但有换行。
7.Serial.write0
写二进制数据到串口,数据是一个字节一个字节地发送的,若以字符形式发送数字请使用print。
代替。
语法:
Serial.write(val)
Serial.write(str)
Serial.write(buf,len)
参数:
val:
作为单个字节发送的数据
str:
由一系列字节组成的字符串
buf:
同一系列字节组成的数组
len:
要发送的数组的长度
返回:
write。
会返回发送的字节数,所以读取该返回值是可选的。
示例:
voidsetup(){
Serial.begin(9600);
)
voidloop(){
Serialw「ite(45);〃以二进制形式发送数字45
intbytesSent=Serial.write("hello");〃发送字符串"hello”并返回该字符串的长度。