用户工具

站点工具


learing:examples:serialevent

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录前一修订版
learing:examples:serialevent [2017/10/05 03:39] 弘毅learing:examples:serialevent [2023/06/07 04:23] (当前版本) – 外部编辑 127.0.0.1
行 1: 行 1:
 +====== SerialEvent(串口事件) ======
 +
 +<WRAP left round info 65%>
 +这个例子演示了SerialEvent()功能。这个功能在loop里调用。串口缓冲区有数据的时候,就把取到的字符加到字符串,直到接收到换行符。由字符组成的字符串显示到串口监视器上,并清空。
 +</WRAP>
 +
 +<WRAP left round box 100%>
 +===== ALPHA 8F328D-U核心 =====
 +
 +==== 硬件 ====
 +  * [[ocrobot:alpha:parallelexpansion:index|ALPHA 并行扩展板]]
 +  * [[ocrobot:alpha:8f328d-u:index|ALPHA 8F328D-U]]
 + 
 +==== 搭建电路 ====
 +  - ALPHA 8F328D-U模块插入并行扩展板1号槽位。
 +  - USB线连接计算机与ALPHA 8F328D-U。
 +
 +==== 代码 ====
 +</WRAP>
 +
 +<WRAP left round box 100%>
 +===== MangoII =====
 +
 +==== 硬件要求 ====
 +
 +|Arduino板|
 +|Circuit|
 +
 +连接arduino到电脑,打开串口监视器。
 +
 +==== 代码 ====
 +
 +<code cpp>/*
 +  Serial Event example
 +*/
 +
 +String inputString = "";         // 字符串存储接收的数据
 +boolean stringComplete = false;  //字符是否完整
 +
 +void setup() {
 +  // 初始化串口
 +  Serial.begin(9600);
 +  // 保留200字节来存储 :
 +  inputString.reserve(200);
 +}
 +
 +void loop() {
 +  serialEvent(); //调用
 +  // 收到换行符后显示字符串
 +  if (stringComplete) {
 +    Serial.println(inputString);
 +    // 清空字符串
 +    inputString = "";
 +    stringComplete = false;
 +  }
 +}
 +
 +/*
 +  每次loop循环的时候,当有新数据从硬串口RX到来的时候 SerialEvent就运行了。在loop中使用delay可以延时回应。多字节的数据也是可以的。
 + */
 +void serialEvent() {
 +  while (Serial.available()) {
 +    // 获取新字符
 +    char inChar = (char)Serial.read();
 +    // 添加到inputString:
 +    inputString += inChar;
 +    // 如果接收到换行符, 设置一个标志
 +    // 主循环中可以调用:
 +    if (inChar == '\n') {
 +      stringComplete = true;
 +    }
 +  }
 +}</code>
 +</WRAP>