Arduino通过串口监视器收发数据

在串口监视器中发送数据,板子收到数据并打印出来。

不需要额外电路,但是板子必须连接电脑,Arduino IDE的串口监视器也需要被打开。

代码

/*
  串口事件

 当新的串口数据到来时,我们会将它添加到一个缓存字符串中。当收到换行符时就将缓存字符串
 输出到串口监视器并将字符串清空。

 本例程的最好测试方式是使用不断发送NMEA 0183语句的GPS接收器模块

 代码公开。
 */

String inputString = "";         // 缓存字符串
boolean stringComplete = false;  // 是否string已经完成缓存

void setup() {
  // 初始化串口:
  Serial.begin(9600);
  // 将inputString反转200个字符:
  inputString.reserve(200);
}

void loop() {
  // 如果缓存string接收完成:
  if (stringComplete) {
    Serial.println(inputString);
    // 清空String:
    inputString = "";
    stringComplete = false;
  }
}

/*
  SerialEvent在arduino板上的RX引脚收到数据时会被系统自动调用。在系统内部,它是在每次loop函数执行时连带执行的。因此如果再loop使用delay,serialEvent的调用也会被延迟,这样就有可能一次收到>=2个字符。
 */
void serialEvent() {
  while (Serial.available()) {
    // 获取新的字符:
    char inChar = (char)Serial.read();
    // 将它加到inputString中:
    inputString += inChar;
    // 如果收到了换行符,就将一个“旗标”变量设置为true,这样loop函数就知道inputString已经缓存完成了:
    if (inChar == ‘\n‘) {
      stringComplete = true;
    }
  }
}

难道是并行的程序??

还有,波特率也不会算,I am so vegetable!

参考连接:https://www.kancloud.cn/yundantiankong/arduino_examples/431653

原文地址:https://www.cnblogs.com/lfri/p/11606926.html

时间: 2024-10-13 17:13:36

Arduino通过串口监视器收发数据的相关文章

android4.2串口jni收发数据(基于自定义协议)

代码已经验证过,没问题 ! 代码层次结构: |-----serial_communication_class--- |                     |-------src--------- |                                  |------com------ |                                             |----object----- |                                

串口同时收发数据卡死问题

单片机发送数据时最后会通过等待发送空标志位来等待数据发送完成,即通过uart往外发数据时,会通过“while(TI==0);”卡死等待数据发送完成,若在数据发送完成后,先进入UART发送完成中断,会将TI标志清零,这个 时候,程序就会卡死在“while(TI==0);”,您可以在“while(TI==0);”加入超时判断机制,当超过一定的时间如果还没有等到TI标志置1,就强制退出“while(TI==0);”.此方法不好控制时间计时的最小间隔.可在中断函数中不清除TI标志位,在数据发送完成后由硬

串口收发数据时字符、十六进制、二进制格式详细区分

在使用串口调试助手时发送和接收数据都是以字节 (Byte) 为单位,并且可以选择字符.十六进制.二进制三种收发格式 ,那么这三种格式究竟怎样区分呢? 首先我们来明确一个概念 :串口收发数据的单位 '' 字节 (Byte) '' ,   1Byte = 8 bits , 串口收发数据格式一般为  1bit起始位(一般为0) + 8bits 数据位(一字节) +1bit校验位(可有可无) +1bit结束位(一般为1) 下面逐一区分三种收发格式: (1) 十六进制:   由于1位十六进制数位宽为 4b

STM32F407的串口采用DMA收发数据

?? STM32F407的串口采用DMA收发数据 本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明. 环境: 主机:WIN8 开发环境:MDK5.13 mcu: stm32f407VGT6 说明: 之前用STM32F103实现DMA收发串口数据,现在项目中采用STM32F407,所以将此机制移植到F4上. STM32F103上用DMA收发串口数据文章: STM32的串口采用DMA方式发送数据测试 STM32的串口采用DMA方式接收数据测试 源代码: 串

关于arduino清空串口缓存(转)

在arduino1.0之前的版本 Serial.flush()的作用是是清空串口缓存( dropping received incoming data).但在1.0之后的版本 Serial.flush()的作用调整为了等待串口数据传送完毕(Waits for the transmission of outgoing serial data to complete.)(引用自http://arduino.cc/en/Serial/Flush). 因为我在使用wifibee的过程中,如果既想用Ser

[Arduino] 在串口读取多个字符串,并且转换为数字数组

功能如题目.在串口收到逗号分割的6串数字比如100,200,45,4,87,99然后在6个PWM端口3, 5, 6, 9, 10, 11输出对应PWM值代码注释很详细了,就不再说明了. //定义一个comdata字符串变量,赋初值为空值 String comdata = ""; //numdata是分拆之后的数字数组 int numdata[6] = {0}, PWMPin[6] = {3, 5, 6, 9, 10, 11}, mark = 0; void setup() { //定义

dsp28377控制DM9000收发数据

首先感谢上一篇转载文章的作者给出的参考,下面是一些自己在调试过程中的一些步骤: 首先把代码贴上来: //---------------------------------------------------------------------------------------------//DSP28377 利用EMIF控制网口DM9000芯片收发数据//----------------------------------------------------------------------

用IO模拟串口协议发送数据

<pre name="code" class="cpp">//文件usend.h #ifndef _USEND_H_ #define _USEND_H_ //====红外接收相关定义============================= #define PuTx_High (P_uTx = 1) //数据高 #define PuTx_Low (P_uTx = 0) //数据低 #define V_SendDatNum 6//6 //发送数据字节数 /

C# ---串口发送接收数据实例

硬件设备: pH/ORP 电导率/TDS/盐度 溶解氧 2000/3000/5000/5500 变送器/控制器 设定: P-08:RS-485输出设定 P-11:485传输设定 设定这俩种的ID号 根据ID,对串口发送请求:接收串口返回的数据. C# ---串口发送接收数据实例