Semestrálna práca VÝTAH Roman Ciesarík

Dependencies:   MMA8451Q mbed

Revision:
1:6c18e74f3ff4
Parent:
0:40602b91b27f
Child:
2:84b5e49b4549
--- a/main.cpp	Thu Dec 07 10:39:01 2017 +0000
+++ b/main.cpp	Mon Dec 11 14:24:45 2017 +0000
@@ -1,14 +1,15 @@
 #include "mbed.h"
+#include "headre.h"
 
 #define DISPLAY     0x30    // DATA smer  0x01-> UP 0x02-> DOWN , text (string)
 #define TERMINAL    0xD0    // Vypise vsetko
-                                      
+
 #define VYTAH_BUTTON_P  0xb0        // ┌-----------┐
 #define VYTAH_BUTTON_1  0xb1        // | DATA 0xFF |
 #define VYTAH_BUTTON_2  0xb2        // |-----------|
 #define VYTAH_BUTTON_3  0xb3        // |-----------|
 #define VYTAH_BUTTON_4  0xb4        // |-----------|
-                                    
+
 #define POSCHODIE_BUTTON_P  0xc0    // |-----------|
 #define POSCHODIE_BUTTON_1  0xc1    // |-----------|
 #define POSCHODIE_BUTTON_2  0xc2    // |-----------|
@@ -39,12 +40,12 @@
 #define MOTOR   0xf1    // DATA 0x1-> STOP 0x02-> UP/DOWN 32bit <-100,100> 0x3-> MOTOR ENCODER COUNT (double)
 #define WATCHDOG 0xfe   // DATA 0x01-> time out ELSE regular reset ( 1500ms )
 
-Serial pc(USBTX, USBRX);
+Serial pc(USBTX, USBRX, 57600);
 
 int i;
+unsigned int velkost;
 char crc=0x00;
-char crc8table[256] = 
-    {
+char crc8table[256] = {
     0, 94, 188, 226, 97, 63, 221, 131, 194, 156, 126, 32, 163, 253, 31, 65,
     157, 195, 33, 127, 252, 162, 64, 30, 95, 1, 227, 189, 62, 96, 130, 220,
     35, 125, 159, 193, 66, 28, 254, 160, 225, 191, 93, 3, 128, 222, 60, 98,
@@ -61,22 +62,227 @@
     87, 9, 235, 181, 54, 104, 138, 212, 149, 203, 41, 119, 244, 170, 72, 22,
     233, 183, 85, 11, 136, 214, 52, 106, 43, 117, 151, 201, 74, 20, 246, 168,
     116, 42, 200, 150, 21, 75, 169, 247, 182, 232, 10, 84, 215, 137, 107, 53
-    };
+};
+
+// crc [0xA0, prijem, odosielatel, vrlkost dat , data (256),crc]
+//char odosli[5+sizeof(DATA)];
 
 
 
-char demo[]={1,2,3,4,5,6};
+char demo[]= {1,2,3,4,5,6};
+char prijemSpravy[15];
+
+
 int main()
 {
-    pc.printf("Start!\r\n");
-    pc.printf("velkost! %d\r\n",sizeof(demo));
-   
-    for (i=0;i<sizeof(demo);i++)
+    
+    for (int j=0;j<4;j++)
+    {
+        while(true)
+        {
+            if(pc.readable()==1)
+            {
+                prijemSpravy[j]=pc.getc; 
+                break;                                 
+            }
+        }    
+    }
+    
+    int pom= prijemSpravy[3] + 1;
+    
+    for (int j=0;j<pom;j++)
+    {
+        while(true)
         {
-            // crc^ demo[i]= new crc hodnota v tabulke crc8table[]
-            //protokol simulatoru [1] 3tart bit adresa prijemcu adresa odosialetela , velkost dat, data, crc
-            crc=crc8table[crc^demo[i]];
-            pc.printf(" %d .crc: %x\r\n",i,crc);
+            if(pc.readable()==1)
+            {
+                prijemSpravy[j+4]=pc.getc;
+                break;                                  
+            }
+        }    
+    }
+    
+    switch(prijemSpravy[2])
+    {
+        case 0xb4: /* vytah tla4idlo 4 poschodie   */
+            
+        break;
+        
+        case 0xb3: /* vytah tla4idlo 3 poschodie   */
+            
+        break;
+        
+        case 0xb2: /* vytah tla4idlo 2 poschodie   */
+            
+        break;
+        
+        case 0xb1: /* vytah tla4idlo 1 poschodie   */
+            
+        break;
+        
+        case 0xb0: /* vytah tla4idlo pr9zemie   */
+            
+        break;
+        
+        case 0xc4: /* chodba tla4idlo 4 poschodie   */
+            
+        break;
+        
+        case 0xc3: /* chodba tla4idlo 3 poschodie   */
+            
+        break;
+        
+        case 0xc2: /* chodba tla4idlo 2 poschodie   */
+            
+        break;
+        
+        case 0xc1: /* chodba tla4idlo 1 poschodie   */
+            
+        break;
+        
+        case 0xc0: /* chodba tla4idlo pr9zemie   */
+            
+        break;
+        
+        
+        
+        
+        case 0xe4: /* info pre odomknutie 4 poschodie   */
+            
+        break;
+        
+        case 0xe3: /* info pre odomknutie 3 poschodie   */
+            
+        break;
+        
+        case 0xe2: /* info pre odomknutie 2 poschodie   */
+            
+        break;
+        
+        case 0xe1: /* info pre odomknutie 1 poschodie   */
+            
+        break;
+        
+        case 0xe0: /* info pre odomknutie pr9zemie   */
+            
+        break;
+        
+        
+        
+        
+        
+        case 0xf: /* zachranna brzda */
+            
+        break;
+        
+        case 0xfe: /* watchdog */
+            
+        break;
+    }
+
+    //poslemSpravu(TERMINAL,0xCC, 6, demo);
+    /* zamkni();
+    wait(1);
+    odomkni();
+    wait(1);
+    zamkni();
+    wait(1);
+    dole();
+    wait(1);
+    dole();
+    dole();
+    wait(2);
+    stop();
+    
+    wait(5);
+     odomkni();
+    wait(1);
+    zamkni();
+    hore();
+    wait(2);
+    stop();
+    wait(5);
+    odomkni(); */
+    
+}
+void zamkni()
+{
+    char DATA[]= {0x01};
+    poslemSpravu(VYTAH,0xcc,sizeof(DATA),DATA);
+}
+
+void odomkni()
+{
+    char DATA[]= {0x00};
+    poslemSpravu(VYTAH,0xcc,sizeof(DATA),DATA);
+}
+
+void stop()
+{
+    char DATA[]= {0x01};
+    poslemSpravu(MOTOR,0xcc,sizeof(DATA),DATA);
+}
+
+void hore()
+{
+    char DATA[]= {0x02,0x64,0x00,0x00,0x00};
+    poslemSpravu(MOTOR,0xcc,sizeof(DATA),DATA);   
+}
+
+void dole()
+{
+    char DATA[]= {0x02,0x9c,0xff,0xff,0xff};
+    poslemSpravu(MOTOR,0xcc,sizeof(DATA),DATA);
+}
+
+
+
+void poslemSpravu(char adrRX, char adrTX, int velkost, char DATA[] )
+{
+    crc=0x00;
+    char odosli[5+velkost];
+    odosli[0]=0xA0;
+    odosli[1]=adrRX;
+    odosli[2]=adrTX;
+    odosli[3]=velkost;
+
+    crc=crc8table[crc^adrRX];
+    crc=crc8table[crc^adrTX];
+
+    for (i=0; i<velkost; i++) {
+        odosli[4+i]=DATA[i];
+    }
+
+    for (i=0; i<velkost; i++) {
+        crc=crc8table[crc^DATA[i]];
+    }
+
+    odosli[velkost+4]=crc;
+
+    for (i=0; i<velkost+5; i++) {
+        pc.putc(odosli[i]);
+    }
+
+}
+
+void kontrola()
+{
+    char kontrola[4];
+
+    for(int i=0;i<5;i++)
+        {
+            while(true)
+            {
+                if(pc.readable()==1)
+                {
+                    kontola[i]=pc.getc();
+                    break;  
+                }
+            }
         }
-
+      
+    if(kontrola[0]!=0xA0&&kontrola[1]!=0x00&&kontrola[2]!=0x00&&kontrola[3]!=0x00&&kontrola[4]!=0x00)
+        {
+            poslemSpravu();
+        }
 }
\ No newline at end of file