来源:

1.配置串口通信数据位、校验位、停止位 通常我们使用Serial.begin(speed)来完成串口的初始化,这种方式,只能配置串口的波特率。 而使用Serial.begin(speed, config)可以配置数据位、校验位、停止位等。 例如Serial.begin(9600,SERIAL_8E2)是将串口波特率设为9600,数据位8,偶校验,停止位2。 config可用配置如下:

config可选配置 数据位 校验位 停止位   config可选配置 数据位 校验位 停止位
SERIAL_5N1 5 1   SERIAL_5E2 5 2
SERIAL_6N1 6 1   SERIAL_6E2 6 2
SERIAL_7N1 7 1   SERIAL_7E2 7 2
SERIAL_8N1 8 1   SERIAL_8E2 8 2
SERIAL_5N2 5 2   SERIAL_5O1 5 1
SERIAL_6N2 6 2   SERIAL_6O1 6 1
SERIAL_7N2 7 2   SERIAL_7O1 7 1
SERIAL_8N2 8 2   SERIAL_8O1 8 1
SERIAL_5E1 5 1   SERIAL_5O2 5 2
SERIAL_6E1 6 1   SERIAL_6O2 6 2
SERIAL_7E1 7 1   SERIAL_7O2 7 2
SERIAL_8E1 8 1   SERIAL_8O2 8 2

2. if (Serial)的用法 当串口被打开时,Serial的值为真。串口被关闭时Serial的值为假。 比较囧的是,这个方法只适用于Leonardo和micro的Serial,也就是说连接连接到电脑USB的那个模拟串口。 例如以下程序,当你没有使用串口监视器打开串口时,程序就会一直循环运行while (!Serial) {;} ,当你打开串口监视器,程序会退出while循环,开始loop中的程序。

kittenblock中小学创客名师推荐的图形化编程软件

 
void setup() {
 
  Serial.begin(9600);
 
  while (!Serial) {;}
 
}
   
 
void loop() {
   
 
}

3.read和peek输入方式的差异 串口接收到的数据都会暂时存放在接收缓冲区中,使用read()与peek()都是从接收缓冲区中读取数据。不同的是,使用read()读取数据后,会将该数据从接收缓冲区移除;而使用peek()读取时,不会移除接收缓冲区中的数据。 你可以使用以下程序,观察其运行结果:

kittenblock中小学创客名师推荐的图形化编程软件

 
char col;
 
void setup() {
 
  Serial.begin(9600);
 
}
   
 
void loop() {
 
  while(Serial.available()>0){
 
    col=Serial.read();
 
    Serial.print("Read: ");
 
    Serial.println(col);
 
    delay(1000);
 
  }
 
}

kittenblock中小学创客名师推荐的图形化编程软件

 
char col;
 
void setup() {
 
  Serial.begin(9600);
 
}
   
 
void loop() {
 
  while(Serial.available()>0){
 
    col=Serial.peek();
 
    Serial.print("Read: ");
 
    Serial.println(col);
 
    delay(1000);
 
  }
 
}

4. 串口读入int型数据 实际上是串口读入字符串,再转换为int型数据。

kittenblock中小学创客名师推荐的图形化编程软件

 
while (Serial.available() > 0) {
 
    int inChar = Serial.read();
 
    if (isDigit(inChar))
 
{
 
inString += (char)inChar;
 
}
 
i=inString.toInt();
 
}
 
}

5.输出不同进制的文本 我们可以是用 Serial.print(val, format)的形式输出不同进制的文本 参数val 是需要输出的数据 参数format 是需要输出的进制形式,你可以使用如下参数: BIN(二进制) DEC(十进制) OCT(八进制) HEX(十六进制) 例如,使用Serial.print(123,BIN),你可以在串口调试器上看到1111011 使用Serial.print(123,HEX),你可以在串口调试器上看到7B
6.Arduino MEGA\Arduino DUE上其他串口用法 serial1\serial2\serial3 和serial用法一样 比如serial3.begin(9600);
6.修改串口缓冲区大小 Arduino串口缓冲区默认为64字节,如果你单次传输的数据较多可以将 arduino-1.0.5-r2\hardware\arduino\cores\arduino\HardwareSerial.cpp中的 #define SERIAL_BUFFER_SIZE 64 修改为 #define SERIAL_BUFFER_SIZE 128 这样就有128字节的缓冲区了

最新文章

  1. Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener org.springframework.beans.factory.BeanCreationException:
  2. 2015年最好的PHP框架调查统计
  3. storm坑之---同步问题
  4. lgy -oracle
  5. 三部曲一(数据结构)-1022-Gold Balanced Lineup
  6. Advanced Packaging Tool
  7. 无法找到脚本*.VBS的脚本引擎解决办法
  8. [Js]无缝滚动
  9. 【Cocoa】 Initializing View Instances Created in Interface Builder
  10. java非静态变量初始化
  11. javascript的null 和undifined
  12. PHP开发API接口签名及验证
  13. 织梦dedecms后台文章搜索关键字,关键字包含文章内容的代码修改
  14. ASP.NET Core 中使用EF Core 将实体映射到数据库表的方法(SQL Server)
  15. mysql允许所有机器访问
  16. CSS中的sprites
  17. [20180503]珅与分隔符.txt
  18. npm install node-sass失败
  19. 把springboot的项目打包运行指南
  20. js经典应用

热门文章

  1. Python3网络爬虫之requests动态爬虫:拉钩网
  2. Selenium处理文件上传、弹框
  3. 牛客多校训练AFJ(签到)
  4. 蒲公英 · JELLY技术周刊 Vol.21 -- 技术周刊 · React Hooks vs Vue 3 + Composition API
  5. Oracle快速建表Sample
  6. hadoop不能互相访问和linux防火墙守护进程
  7. 微信小程序爬坑记
  8. 图解 Await 和 Async
  9. Linux:less and Aix:more
  10. python 3 for嵌套