dsfa

Dependencies:   dsf SDFileSystem TextLCD mbed stepper_moter

Fork of my_example_Nucleo_Ex05_SD_zhangyuxiang2 by liang brain

Revision:
4:c88bf297ee75
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/LCDShow/LCDShow.cpp	Tue May 08 01:50:44 2018 +0000
@@ -0,0 +1,116 @@
+#include "LCDShow.h"
+
+LCDShow::LCDShow(PinName rs,PinName e,PinName d4,PinName d5,PinName d6,PinName d7,LCDType type):TextLCD(rs,e,d4,d5,d6,d7,type)
+{
+    Max_pos = PrePos = now_pos = 0;
+    start = true;
+    Pos_fresh = false;
+    Neg_fresh = false;
+    Now_fresh = false;
+    Read_file = false;
+}
+void LCDShow::CurrPos()     
+{
+    int i = Choose.pulses_ % 4;
+    if(i < 0)
+    {
+        Choose.pulses_ = 0;
+        i = 0;
+    }
+    if(PrePos == 3 && i == 0)
+    {
+        Pos_fresh = true;
+    }
+    else if(PrePos == 0 && i == 3)
+    {
+        Neg_fresh = true;
+    }
+    else if(PrePos != i)
+    {
+        Now_fresh = true;
+    }
+    
+    if(!Read_file)
+    {
+        PrePos = i;
+        this->locate(18,i);
+        this->printf("<-");   
+    }
+}
+
+void LCDShow::ReadFile()
+{
+    if(!btn3.read())
+    {
+        file_name = "/sd/";
+        file_name += File_dir[now_pos + (PrePos - 4)];
+        Read_file = true;
+    }
+}
+void LCDShow::getDir(vector<string> _dir)
+{
+    File_dir = _dir;
+}
+void LCDShow::showdir()
+{
+    if(start)
+    {
+        t1.attach(this,&LCDShow::showdir,0.2);
+        t2.attach(this,&LCDShow::ReadFile,0.5);
+        Max_pos = File_dir.size();
+        for(;now_pos < 4; now_pos ++)
+        {
+            this->printf("%s\n",File_dir[now_pos]);
+        }
+        start = false;
+        return;
+    }
+    CurrPos();
+    if(!Read_file)
+        {
+            if(Pos_fresh == true)
+            {
+                this->cls();
+                for(int i = 0;i < 4; i ++)
+                {
+                    if(now_pos >= Max_pos)
+                    {
+                        continue;
+                    }
+                    this->printf("%s\n",File_dir[now_pos]);
+                    now_pos ++;      
+                }
+                Pos_fresh = false;
+            }
+            else if(Neg_fresh == true)
+            {
+                this->cls();
+                now_pos -= 8;
+                if(now_pos < 0)
+                    now_pos = 0;
+                for(int i = 0;i < 4; i ++)
+                {
+                    this->printf("%s\n",File_dir[now_pos]);
+                    now_pos ++;  
+                }
+                Neg_fresh = false;
+            }
+            else if(Now_fresh == true)
+            {
+                this->cls();
+                now_pos -= 4;
+                for(int i = 0;i < 4; i ++)
+                {
+                    this->printf("%s\n",File_dir[now_pos]);
+                    now_pos ++;  
+                }
+                Now_fresh = false;
+            }
+        }
+        else if(Read_file)
+        {
+            this->cls();
+            this->printf("OPEN %s\n",file_name);
+        }
+    return;
+}
\ No newline at end of file