这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录前一修订版后一修订版 | 前一修订版 | ||
learing:examples:serialevent [2017/04/07 10:03] – 外部编辑 127.0.0.1 | learing:examples:serialevent [2023/06/07 04:23] (当前版本) – 外部编辑 127.0.0.1 | ||
---|---|---|---|
行 1: | 行 1: | ||
+ | ====== SerialEvent(串口事件) ====== | ||
+ | |||
+ | <WRAP left round info 65%> | ||
+ | 这个例子演示了SerialEvent()功能。这个功能在loop里调用。串口缓冲区有数据的时候,就把取到的字符加到字符串,直到接收到换行符。由字符组成的字符串显示到串口监视器上,并清空。 | ||
+ | </ | ||
+ | |||
+ | <WRAP left round box 100%> | ||
+ | ===== ALPHA 8F328D-U核心 ===== | ||
+ | |||
+ | ==== 硬件 ==== | ||
+ | * [[ocrobot: | ||
+ | * [[ocrobot: | ||
+ | |||
+ | ==== 搭建电路 ==== | ||
+ | - ALPHA 8F328D-U模块插入并行扩展板1号槽位。 | ||
+ | - USB线连接计算机与ALPHA 8F328D-U。 | ||
+ | |||
+ | ==== 代码 ==== | ||
+ | </ | ||
+ | |||
+ | <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 == ' | ||
+ | stringComplete = true; | ||
+ | } | ||
+ | } | ||
+ | }</ | ||
+ | </ | ||