“第五十六课--Microduino EEPROM数据流串口输入/zh”的版本间的差异
(→调试) |
(→调试) |
||
第45行: | 第45行: | ||
我们用到了一个串口命令Serial.parseInt(),他的作用是查找传入的串行数据流中的下一个有效的整数。Serial.read()只能每次读取一个字节。。。使用起来并不是很方便。Serial.parseInt()能一次读取一个数据流。。弥补了这方面使用上不便的缺陷。 | 我们用到了一个串口命令Serial.parseInt(),他的作用是查找传入的串行数据流中的下一个有效的整数。Serial.read()只能每次读取一个字节。。。使用起来并不是很方便。Serial.parseInt()能一次读取一个数据流。。弥补了这方面使用上不便的缺陷。 | ||
− | 步骤二:打开串口通讯,此时每个一秒钟应该显示一次当前EEPROM地址0位置的一个类型为unsigned | + | 步骤二:打开串口通讯,此时每个一秒钟应该显示一次当前EEPROM地址0位置的一个类型为unsigned long的值。(我这里地址0位置的值是123456) |
[[File:EEPROMStreamInput2.png|600px|center|thumb|EEPROMStreamInput]] | [[File:EEPROMStreamInput2.png|600px|center|thumb|EEPROMStreamInput]] | ||
− | 步骤三:在输入框任何数值(0~4294967295 ) | + | 步骤三:在输入框任何数值(0~4294967295 ),这个数据流就会在EEPROM中存储并在下方输出(我这里输入的是77777) |
[[File:EEPROMStreamInput3.png|600px|center|thumb|EEPROMStreamInput]] | [[File:EEPROMStreamInput3.png|600px|center|thumb|EEPROMStreamInput]] | ||
2014年11月17日 (一) 05:42的最新版本
目的本教程将用Microduino实现一个数据流串口输入的功能。 设备原理图程序 #include <EEPROM.h>
#define EEPROM_write(address, p) {int i = 0; byte *pp = (byte*)&(p);for(; i < sizeof(p); i++) EEPROM.write(address+i, pp[i]);}
#define EEPROM_read(address, p) {int i = 0; byte *pp = (byte*)&(p);for(; i < sizeof(p); i++) pp[i]=EEPROM.read(address+i);}
unsigned long incomingByte = 0; // 定义无符号长整数型变量incomingByte初始值为0
void setup() {
Serial.begin(9600); // 打开串口,设置数据传输速率9600
}
void loop() {
if (Serial.available() > 0) {
incomingByte = Serial.parseInt(); //读取串口传入的下一个有效整数,把该整数赋值给incomingByte变量
EEPROM_write(0,incomingByte) //把incomingByte变量从0地址位开始写入EEPROM
}
EEPROM_read(0,incomingByte) //从0地址位开始读取EEPROM,把值写入变量incomingByte
Serial.println(incomingByte); //通过串口输出
delay(1000);
}
调试步骤一:下载代码,运行。 我们用到了一个串口命令Serial.parseInt(),他的作用是查找传入的串行数据流中的下一个有效的整数。Serial.read()只能每次读取一个字节。。。使用起来并不是很方便。Serial.parseInt()能一次读取一个数据流。。弥补了这方面使用上不便的缺陷。 步骤二:打开串口通讯,此时每个一秒钟应该显示一次当前EEPROM地址0位置的一个类型为unsigned long的值。(我这里地址0位置的值是123456) 步骤三:在输入框任何数值(0~4294967295 ),这个数据流就会在EEPROM中存储并在下方输出(我这里输入的是77777) 结果在串口中输入的数据流会存入到EEPROM中。 视频 |