Test

Dependencies:   mbed-dev-OS5_10_4

Revision:
0:014fad4dfb9d
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Main/main.cpp	Fri Aug 07 07:24:21 2020 +0000
@@ -0,0 +1,322 @@
+/*-------------------------------------------------------------------------------
+Programm Name:  Main.C
+Version:        1.0
+Sprache:        C++
+Compiler:       mbed
+Autor:          PS
+Copyright:      PS
+                 
+
+Funktion:       Main Funktionen
+04.08.2016:  Projekt: EcmComFrdm
+-------------------------------------------------------------------------------*/
+#include "Headers.h"
+
+// #define Ad0IsRdyDown()  (LPC_GPIO0->FIOCLR & 0x000800000)
+// #define Ad1IsRdyDown()  (LPC_GPIO0->FIOCLR & 0x001000000)
+
+//const char* MyIp = "192.168.2.99";
+//const char* HostIp = "192.168.2.8";
+//const char* MySub = "255.255.255.0";
+//const char* MyGw = "0.0.0.0";
+
+
+
+/*-------------------------------------------------------------------------------
+Main Funktion. 
+-------------------------------------------------------------------------------*/
+int main() 
+{
+
+	InitMain();
+	ConnectIrq();
+	g_fDisableDataRead = false;
+//    Ad7739Start(0, 0,1);
+// 	MVars.m_fMessDlgOpened = true;
+	MVars.nAktMittelAfter = 500;
+    while (true) 
+    {
+		CheckAnalogIn();
+		
+	    if(nMyTimer > 0) // Scanner Verarbeitung 
+    	{     
+			CheckTimerHandlingAndScanner();
+	    }
+/*	    
+	    if(g_nChn1Counter > 1000)
+	    {
+	    	printf("%c#DG#Channel 1 Counter: %ld %c\n", STX, g_nChn1Counter, ETX);
+	    	g_nChn1Counter = 0;
+	    }
+	    else if(g_nChn2Counter > 1000)
+	    {
+	    	printf("%c#DG#Channel 2 Counter: %ld %c\n", STX, g_nChn2Counter, ETX);
+	    	g_nChn2Counter = 0;
+	    }
+*/
+	   	if(HostIf.nInTel > 0)
+    		CheckCommInterface();
+    		
+    	CheckEcmWinConnect();
+		
+#ifdef	TOUCH_DISPLAY
+ 		CheckEvent();	// TFT Event
+#endif
+#ifdef DO_AUTO_START
+		if(g_fDoAutostart == true)
+    		g_fDoAutostart = CheckAutoStart(); // kommt false zurueck, dann wird der Aufruf beendet
+#endif
+        CheckZustand();		// Zustand der Messung
+    }    
+   
+}
+/*-------------------------------------------------------------------------------
+    Funktion CheckCommInterface prüft ob ueber die Kommunikationsschnittstelle 
+    eine Anforderung kommt.
+-------------------------------------------------------------------------------*/
+int CheckCommInterface()
+{
+	if(TransferSioTel() == true)
+   	{
+//	        ChangeLedColor(); 
+//		    printf("%c#DG#HostIf.strTelAwBuf: %s%c\r\n",STX, HostIf.strTelAwBuf, ETX);
+   		CheckTel();
+   	}
+   	return(true);
+}
+/*-------------------------------------------------------------------------------
+    Funktion CheckEcmWinConnect: Bearbeitet alle Methoden die mit der Messung ueber 
+    EcmWin  zu tun haben.
+-------------------------------------------------------------------------------*/
+int CheckEcmWinConnect()
+{
+    if(!MVars.m_fMessDlgOpened)
+    {
+	    g_nChn2Counter++;
+    	if(g_nChn2Counter > 50000)
+	    {
+//		printf("%c#DG#Channel 2 Counter: %ld %c\n", STX, g_nChn2Counter, ETX);
+    	   	ChangeLedColor(); 
+        	g_nChn2Counter = 0;
+    	}
+    }
+
+    if(MVars.m_fMessDlgOpened)
+    {
+//        ReadAllAdChannels();
+        if(MVars.nMittelTimer >= MVars.nAktMittelAfter)
+        {
+        	CheckDaAd();
+            MVars.nMittelTimer -= MVars.nAktMittelAfter;
+			ChangeLedColor();
+        }
+        CheckZustand();
+    }
+#ifdef DO_AUTO_START    
+	else if(m_fAutoStart == true)	// ist in der Autostart Funktion
+	{
+        if(MVars.nMittelTimer >= MVars.nAktMittelAfter) // nAktMittelAfter muss ueber die Sequenz neu gestzt werden
+        {
+			if(CheckDaAd() == false)
+			{
+				DisableAutoMode();
+			}
+			MVars.nMittelTimer -= MVars.nAktMittelAfter;
+			ChangeLedColor();
+		}
+		if (g_nTftTimer >= 1000) 
+		{
+			RequestDateTime();
+			g_nTftTimer  = 0;
+			if(m_fAutoStart == true)
+				DoStatusLed = !DoStatusLed;
+		}
+	}
+#endif	
+	else
+	{
+		if (g_nTftTimer >= 1000) 
+		{
+//			RequestDateTime();
+			g_nTftTimer  = 0;
+		}
+	}
+    return(true);
+}
+
+/*-------------------------------------------------------------------------------
+    DoReInit: Initialisieren des AD Wandlers
+-------------------------------------------------------------------------------*/
+int DoReInit()
+{
+    uint8_t Status0, Status1; 
+//    DigitalOut Test(PTC16);
+#ifdef TFT_DEBUG     
+    printf("DOR_C: %08X  DIR_C: %08X  DDR_C:%08X \r\n", GPIOC->PDOR, GPIOC->PDIR, GPIOC->PDDR);  // PTC 16 auf Output schalten
+#endif    
+
+//    GPIOC->PDDR |= 0x00010000;  // PTC 16 auf Output schalten
+
+    MVars.fAdReInit = false;
+    MVars.m_nSendValues = 1; // fängt an, in Grundstellung zu senden
+    g_fRdy0 = false; g_fRdy1 = false;
+        
+//	ConnectIrq();
+	g_fDisableDataRead = false;
+    Ad7739Start(0, 0,1); // 0=Kanal mit dem begonnen wird, Wandler 0, Mode
+//    Ad7739CommonStart(0, 1);
+    
+    nMyTimer = 0;
+    g_nAdSetPos = 0;     g_nAdGetPos = 0;
+    g_nAdCount = 0;
+    MVars.m_nSendValues = 1; // fängt an, in Grundstellung zu senden
+    ZustandsTimer = 0;
+    
+    return(true);
+}
+/*-------------------------------------------------------------------------------
+    Funktion CheckZustand prüft alle eingehenden Telegramme auf Inhalt und Befehl
+-------------------------------------------------------------------------------*/
+int CheckZustand()
+{
+        
+    if(MVars.fAdReInit == true)
+    {
+        MVars.fAdReInit = false;
+        DoReInit();
+    }
+        
+    if(MVars.m_nSendValues == 0)    // nichts senden
+    {
+        nMyTimer = 0;
+        ZustandsTimer = 0;
+        return(0);
+    }
+    
+//    MVars.dbAdSum[0] +=  (long double)AdcHs1.read_u16();
+//    MVars.dbAdSum[1] +=  (long double)AdcHs2.read_u16();
+//    MVars.nMwMittelCount++;
+#ifdef TFT_DEBUG    
+//    printf("AdResult_0: %f  \n",MVars.dbAdSum[0]);
+#endif    
+//    g_nAdGetPos++;   g_nAdGetPos &= 0x3FF;
+    
+    
+//    AdVal->AdRingBuf[0][g_nAdSetPos] = AdcHs1.read_u16();
+//    AdVal->AdRingBuf[1][g_nAdSetPos] = AdcHs2.read_u16();
+//    g_nAdSetPos++;     g_nAdSetPos &= 0x03FF;
+//    g_nAdCount++;
+    
+
+//     CheckDaAd();  
+        
+    if(ZustandsTimer >= 100)  // die Zustände werden dadurch alle 100ms überprüft 
+    {
+        MVars.nSecCounter[0] += 100;
+        IrComp.n100msCounter++;
+        ZustandsTimer -= 100;
+
+        if(MVars.m_nSendValues == 1)    // senden in Grundstellung
+        {
+            CheckGrundZustand();
+        }
+        else if(MVars.m_nSendValues == 2)    // senden während Messung
+        {
+            CheckRunZustand();
+        }
+    }
+    
+    return(0);
+}
+
+/*-------------------------------------------------------------------------------
+    CheckGrundZustand:
+-------------------------------------------------------------------------------*/
+int CheckGrundZustand()
+{
+    MVars.m_fDisableStopTel = false;
+    return(true);
+}
+/*-------------------------------------------------------------------------------
+    CheckRunZustand:
+-------------------------------------------------------------------------------*/
+int CheckRunZustand()
+{
+      
+    switch(MVars.nMessZustand[0])
+    {
+        case -1:
+            break;
+        case 0:
+            break;
+        case 1:
+            break;
+        case 2:
+            MVars.nSecCounter[0] = 0;
+            break;
+        case 3:
+            break;
+        case 4:
+            break;
+        case 5:
+            if(MPara.RpDauerNach[0] > 0)
+            {
+                if(MVars.nSecCounter[0] >= 1000)
+                {
+                    MVars.nSecCounter[0] -= 1000;
+                    MPara.RpDauerNach[0]--;
+                }
+            }
+            else
+            {
+                MVars.m_fDoFinishMeasurement = true;
+                MVars.m_fDisableStopTel = true;
+            }
+            break;
+        case 6: // schickt nur kontinuierlich die Werte
+            break;
+        default:
+            break;
+        
+    }
+    if(MVars.m_fDoFinishMeasurement == true) // wird von Stopkommando aus EcmTel gesetzt
+    {
+        MVars.m_fDoFinishMeasurement = false;
+        MVars.m_fFinishMeasurement = true;
+        MVars.m_fScan = false;
+#ifdef SIO_DEBUG    
+        printf("MessZustand: %d \n",MVars.nMessZustand[0]);
+        printf("SwOCP:%d\n",MVars.SwitchChn[0]);
+#endif    
+
+    }
+    return(true);
+}
+/*-------------------------------------------------------------------------------
+ChangeConversionTime: Im Fall dass die Wandlungszeit geändert werden muss
+-------------------------------------------------------------------------------*/
+void ChangeConversionTime()
+{
+    MVars.fChangeCt = false;
+    SetAdConversionTime();
+//            wait(0.2);
+//    led1 = !led1;
+}
+/*-------------------------------------------------------------------------------
+SendMessungStart: Startet die Messung
+-------------------------------------------------------------------------------*/
+int SendMessungStart()
+{
+    sprintf(HostIf.strTempBuf,"%c#MG#%c", STX, ETX);
+	SendTelToHost(false, false, false);
+    return(0);
+}
+/*-------------------------------------------------------------------------------
+SendMessungStop: Stoppt die Messung
+-------------------------------------------------------------------------------*/
+int SendMessungStop()
+{
+    sprintf(HostIf.strTempBuf,"%c#MS#%c", STX, ETX);
+	SendTelToHost(false, false, false);
+    return(0);
+}