monitor
Fork of mon by
Diff: mon.cpp
- Revision:
- 2:512482b7f8c6
- Parent:
- 1:bf1028d27a23
--- a/mon.cpp Fri Feb 05 14:40:00 2016 +0000
+++ b/mon.cpp Thu Mar 10 20:35:10 2016 +0000
@@ -14,16 +14,19 @@
#include "mon.h"
#include "MODSERIAL.h"
#include "timer0.h"
-#include "rs_485.h"
extern MODSERIAL pc; // definiert in main
extern timer0 down_timer; // Timer für Zeitsteuerung, definiert in main
-extern rs_485 RS485_BUS; // RS385 Schnittstelle für den H-Bus, definiert in main
-
+
+extern DigitalOut out1;
+extern DigitalOut out2;
+extern DigitalOut out3;
+extern DigitalOut out4;
+
#define COMMAND_MAX 5
#define COMMAND_LEN 7
// "DUMP","HELP","SET","TIME"};
-const char command[COMMAND_MAX][COMMAND_LEN] = {"DUMP","HELP","SEND","SET","TIME"};
+const char command[COMMAND_MAX][COMMAND_LEN] = {"DUMP","HELP","SET","TIME"};
//-----------------------------------------------------------------------------
// constructor
@@ -125,9 +128,8 @@
{
case 0: dump(); break;
case 1: help(); break;
- case 2: send(); break;
- case 3: set(); break;
- case 4: time(); break;
+ case 2: set(); break;
+ case 3: time(); break;
}
}
}
@@ -245,53 +247,12 @@
{
pc.printf("\n -- help ------------------------");
pc.printf("\n clcd val >> lcd Kontrast");
- pc.printf("\n send [val] [val] [val] ... >> ein Telegramm senden");
- pc.printf("\n set index [val] >> Sensor auswaehlen");
+ pc.printf("\n set index [val] >> Ausgang setzen");
pc.printf("\n time [std min sek tag monat jahr]");
pc.printf("\n");
pc.printf("\n");
}
-//-----------------------------------------------------------------------------
-// monitor Aufruf send
-// sendet ein Telegramm über die RS485 Schnittstelle
-// Die Telegramm sind hier auf 10 Zeichen begrenzt
-//
-void monitor::send(void)
-{
- int n, pos0, pos[10];
- uint8_t data[10];
- // 0 1 2 3 4 5 6 7 8 9
- n = sscanf(&mon_line[MonLinePtr],"%x %x %x %x %x %x %x %x %x %x",&pos[0],&pos[1],&pos[2],&pos[3],&pos[4],&pos[5],&pos[6],&pos[7],&pos[8],&pos[9]);
-
- switch (n)
- {
- case -1:
- case 0:
- pc.printf("\nbitte Werte fuer das Telegramm eingeben");
- pc.printf("\n send ADR ZIEL LEN [DATA] ");
- break;
-
- default:
- // Telegramm zusammenstellen und ausgeben
- for (int i = 0; i < 10; i++)
- {
- if (i <= n)
- {
- data[i] = (uint8_t) pos[i];
- }
- else
- {
- data[i] = 0;
- }
- }
-
- RS485_BUS.write(data);
-
- break;
-
- } // end switch
-}
//-----------------------------------------------------------------------------
// monitor Aufruf set
@@ -300,21 +261,43 @@
{
int n, pos, val;
+ pos = 0;
+ val = 0;
+
n = sscanf(&mon_line[MonLinePtr],"%d %d",&pos,&val);
+ if ((pos < 0) || (pos > 4)) n = -1;
+ if ((val < 0) || (val >1)) n = -1;
+
switch (n)
{
- case -1: pc.printf("\nbitte index [wert] angeben");
- pc.printf("\n Index >> Sonsor 0 bis 7");
- pc.printf("\n wert >> 0 = inaktiv, 1 = Rohwerte, 2 = errechneter Wert");
- break;
-
- case 1: pc.printf("\nread status[%d] ",pos);
- break;
-
- case 2: //status[pos] = val;
- pc.printf("\nset status[%d] = %d",pos);
- break;
+ case -1:
+ pc.printf("\nbitte [Ausgang] [Wert] angeben");
+ pc.printf("\n Ausgang >> 1 bis 6");
+ pc.printf("\n Wert >> 0 = inaktiv, 1 = aktiv");
+ break;
+
+ default:
+ switch (pos)
+ {
+ case 1:
+ pc.printf("\n Ausgang 1 = %d",val);
+ out1 = val;
+ break;
+ case 2:
+ pc.printf("\n Ausgang 2 = %d",val);
+ out2 = val;
+ break;
+ case 3:
+ pc.printf("\n Ausgang 3 = %d",val);
+ out3 = val;
+ break;
+ case 4:
+ pc.printf("\n Ausgang 4 = %d",val);
+ out4 = val;
+ break;
+ }
+ break;
} // end switch
}
