|
发表于 2012-9-30 00:29:08
|
显示全部楼层
我还发现,如果初始化之后没有文件读写操作,exists就不起作用,如果有读写操作,SD卡被拔出后会有提示:- #include <SD.h>
- const int chipSelect = 10; //设定CS接口
- void setup()
- {
- Serial.begin(9600); //设置串口通信波特率为9600
- Serial.print("Initializing SD card..."); //串口输出数据Initializing SD card...
- pinMode(10, OUTPUT);
- if (!SD.begin(chipSelect)) { //如果从CS口与SD卡通信失败,串口输出信息Card failed, or not present
- Serial.println("Card failed, or not present");
- // don't do anything more:
- return;
- }
- Serial.println("card initialized."); //与SD卡通信成功,串口输出信息card initialized.
- }
- void loop()
- {
- delay(10000);
- if(SD.exists("datalog.txt")) {
- Serial.println("exitst test ok");
- File dataFile = SD.open("datalog.txt");
- if (dataFile) {//打开datalog.txt文件
- while (dataFile.available()) { //检查是否dataFile是否有数据
- Serial.write(dataFile.read()); //如果有数据则把数据发送到串口
- }
- dataFile.close(); //关闭dataFile
- }
- else {
- Serial.println("error opening datalog.txt"); //如果文件无法打开串口发送信息error opening datalog.txt
- }
- }
- else
- {
- Serial.println("exitst test err");
- }
- }
复制代码 比如这个程序,插好卡初始化之后,至少读过一次卡之后,中途拔掉SD卡,exist会false……
但是此时再插入卡也不会认出来,而且无法再次初始化,只能重启…… |
|