- Adapted indenation to new agreed upon system
- Added support for second generation scriptcontext based counter
This commit is contained in:
589
sel2.c
589
sel2.c
@@ -88,7 +88,7 @@ BRE Beginne eine Verlustleistungsmessung - ist bei Statusabruf
|
||||
|
||||
HAL Bremse Selektor bis zum Stillstand ab (unterhalb 3000 U/min.)
|
||||
|
||||
*/
|
||||
*/
|
||||
#include stdio.h
|
||||
#include descrip.h
|
||||
#include iodef.h
|
||||
@@ -101,7 +101,7 @@ HAL Bremse Selektor bis zum Stillstand ab (unterhalb 3000 U/min.)
|
||||
#define OK 0L
|
||||
#define NOT_OK !OK
|
||||
|
||||
#define LIMIT_U 3100 /* niedrigste Drehzahl */
|
||||
#define LIMIT_U 3100 /* niedrigste Drehzahl */
|
||||
#define LIMIT_O 28300
|
||||
|
||||
/* Verbotene Drehzahlbereiche (Resonanzgefahr) */
|
||||
@@ -119,33 +119,38 @@ HAL Bremse Selektor bis zum Stillstand ab (unterhalb 3000 U/min.)
|
||||
|
||||
extern FILE *fs;
|
||||
|
||||
static short chan_s=6;
|
||||
static short chan_s = 6;
|
||||
|
||||
/* *********************************************************************** */
|
||||
/* ------------------------------------------------------------------------ */
|
||||
long select_setup()
|
||||
{
|
||||
register rc;
|
||||
$DESCRIPTOR(dev_descr, "TXA1:");
|
||||
chan_s=SELE_LUN;
|
||||
if ((rc=sys$assign(&dev_descr, &chan_s, NULL,NULL)) != 1)
|
||||
{printf("Error in Selector_SETUP: Ret = %d\n",rc); return(NOT_OK);}
|
||||
return(OK);
|
||||
register rc;
|
||||
$DESCRIPTOR(dev_descr, "TXA1:");
|
||||
chan_s = SELE_LUN;
|
||||
if ((rc = sys$assign(&dev_descr, &chan_s, NULL, NULL)) != 1) {
|
||||
printf("Error in Selector_SETUP: Ret = %d\n", rc);
|
||||
return (NOT_OK);
|
||||
}
|
||||
return (OK);
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------------------ */
|
||||
/* Function liest ueberprueft das Befehlsecho */
|
||||
/* Function liest ueberprueft das Befehlsecho */
|
||||
long sele_test_echo(cmd, lng)
|
||||
char *cmd[];
|
||||
char *cmd[];
|
||||
int lng;
|
||||
{
|
||||
char echo[80];
|
||||
if (sele_read(&echo)!= OK) return(NOT_OK);
|
||||
if (strncmp(&echo, cmd, lng) != 0)
|
||||
{printf("Selector:protocol error%s\n",echo); return(NOT_OK);}
|
||||
else
|
||||
return(OK);
|
||||
}
|
||||
char echo[80];
|
||||
if (sele_read(&echo) != OK)
|
||||
return (NOT_OK);
|
||||
if (strncmp(&echo, cmd, lng) != 0) {
|
||||
printf("Selector:protocol error%s\n", echo);
|
||||
return (NOT_OK);
|
||||
} else
|
||||
return (OK);
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------------------ */
|
||||
/* Function prueft die Anzahl der sich im Typeahead-Buffer befindenden Bytes
|
||||
und liefert das naechste dort anstehende Zeichen, jedoch ohne es
|
||||
@@ -154,86 +159,102 @@ if (strncmp(&echo, cmd, lng) != 0)
|
||||
long tst_buf_s(bt)
|
||||
int *bt;
|
||||
{
|
||||
int bytes;
|
||||
register rc;
|
||||
struct {unsigned short status, bytes;
|
||||
int pid; } iosb;
|
||||
if ((rc=sys$qiow(NULL,chan_s,IO$_SENSEMODE | IO$M_TYPEAHDCNT,&iosb,
|
||||
NULL, NULL, &bytes, NULL, NULL, NULL, NULL, NULL)) != 1)
|
||||
{print_error(fs,"Error in QIOW"); return(NOT_OK);}
|
||||
int bytes;
|
||||
register rc;
|
||||
struct {
|
||||
unsigned short status, bytes;
|
||||
int pid;
|
||||
} iosb;
|
||||
if ((rc = sys$qiow(NULL, chan_s, IO$_SENSEMODE | IO$M_TYPEAHDCNT, &iosb,
|
||||
NULL, NULL, &bytes, NULL, NULL, NULL, NULL,
|
||||
NULL)) != 1) {
|
||||
print_error(fs, "Error in QIOW");
|
||||
return (NOT_OK);
|
||||
}
|
||||
/**ch = (bytes >> 16) & 0xff;*/
|
||||
*bt = bytes & 0xffff;
|
||||
return(OK);
|
||||
*bt = bytes & 0xffff;
|
||||
return (OK);
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------------------ */
|
||||
long sele_read(message)
|
||||
char *message;
|
||||
char *message;
|
||||
{
|
||||
char char_l[8], *ptr;
|
||||
register rc;
|
||||
struct {unsigned short status, bytes;
|
||||
int pid; } iosb;
|
||||
ptr = message;
|
||||
for (;;)
|
||||
{
|
||||
if ((rc=sys$qiow(NULL,chan_s,IO$_READVBLK | IO$M_NOECHO,
|
||||
&iosb,NULL,
|
||||
NULL, char_l, 1, NULL, NULL, NULL, NULL)) != 1)
|
||||
{printf("Error in QIOW, READ_MESS: %d\n", rc);return(NOT_OK);}
|
||||
*ptr = char_l[0];
|
||||
/* Terminator (linefeed) ? */
|
||||
ptr++;
|
||||
if (char_l[0] == '\n') break;
|
||||
}
|
||||
return(OK);
|
||||
char char_l[8], *ptr;
|
||||
register rc;
|
||||
struct {
|
||||
unsigned short status, bytes;
|
||||
int pid;
|
||||
} iosb;
|
||||
ptr = message;
|
||||
for (;;) {
|
||||
if ((rc = sys$qiow(NULL, chan_s, IO$_READVBLK | IO$M_NOECHO,
|
||||
&iosb, NULL,
|
||||
NULL, char_l, 1, NULL, NULL, NULL, NULL)) != 1) {
|
||||
printf("Error in QIOW, READ_MESS: %d\n", rc);
|
||||
return (NOT_OK);
|
||||
}
|
||||
*ptr = char_l[0];
|
||||
/* Terminator (linefeed) ? */
|
||||
ptr++;
|
||||
if (char_l[0] == '\n')
|
||||
break;
|
||||
}
|
||||
return (OK);
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------------------ */
|
||||
/* Pruefe ob der Selektor eine Fehlermeldung erzeugt hat und gib sie aus */
|
||||
|
||||
long select_error_msg(err)
|
||||
long *err;
|
||||
{
|
||||
char chr[10], msg[80];
|
||||
float waiti=3.0; /* Selektor PC hat 3 Sekunden Reaktionszeit !! */
|
||||
char chr[10], msg[80];
|
||||
float waiti = 3.0; /* Selektor PC hat 3 Sekunden Reaktionszeit !! */
|
||||
|
||||
/* Warte ein wenig - es koennte auf den Befehl hin eine Fehlermeldung erscheinen */
|
||||
lib$wait(&waiti);
|
||||
lib$wait(&waiti);
|
||||
|
||||
/* Es koennen auch mehrere Zeilen sein */
|
||||
*err = FALSE;
|
||||
for (;;)
|
||||
{if (tst_buf_s(&chr) != OK) return(NOT_OK);
|
||||
if (chr[0] != NULL)
|
||||
{
|
||||
if (sele_read(&msg) != OK) return(NOT_OK);
|
||||
printf("Selektor failure:");
|
||||
printf("%s\n\7",msg);
|
||||
*err = TRUE;
|
||||
}
|
||||
else
|
||||
return(OK);
|
||||
}
|
||||
*err = FALSE;
|
||||
for (;;) {
|
||||
if (tst_buf_s(&chr) != OK)
|
||||
return (NOT_OK);
|
||||
if (chr[0] != NULL) {
|
||||
if (sele_read(&msg) != OK)
|
||||
return (NOT_OK);
|
||||
printf("Selektor failure:");
|
||||
printf("%s\n\7", msg);
|
||||
*err = TRUE;
|
||||
} else
|
||||
return (OK);
|
||||
}
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------------------ */
|
||||
long sele_write(message)
|
||||
char message[];
|
||||
{
|
||||
char msg[80];
|
||||
long err;
|
||||
register rc;
|
||||
struct
|
||||
{
|
||||
unsigned short status, bytes;
|
||||
int pid; } iosb;
|
||||
char msg[80];
|
||||
long err;
|
||||
register rc;
|
||||
struct {
|
||||
unsigned short status, bytes;
|
||||
int pid;
|
||||
} iosb;
|
||||
|
||||
if (select_error_msg(&err) != OK) return(NOT_OK);
|
||||
if (err == TRUE) return(NOT_OK);
|
||||
if (select_error_msg(&err) != OK)
|
||||
return (NOT_OK);
|
||||
if (err == TRUE)
|
||||
return (NOT_OK);
|
||||
|
||||
if ((rc=sys$qiow(NULL,chan_s,IO$_WRITEVBLK,&iosb,NULL, NULL,
|
||||
message, strlen(message), NULL, NULL, NULL, NULL)) != 1)
|
||||
{printf("Error in QIOW: %d\n",rc); return(NOT_OK);}
|
||||
return(OK);
|
||||
if ((rc = sys$qiow(NULL, chan_s, IO$_WRITEVBLK, &iosb, NULL, NULL,
|
||||
message, strlen(message), NULL, NULL, NULL,
|
||||
NULL)) != 1) {
|
||||
printf("Error in QIOW: %d\n", rc);
|
||||
return (NOT_OK);
|
||||
}
|
||||
return (OK);
|
||||
}
|
||||
|
||||
/* -------------------------------------------------------------------------- */
|
||||
@@ -244,30 +265,38 @@ return(OK);
|
||||
long select_msg(tim)
|
||||
long tim;
|
||||
{
|
||||
int sts;
|
||||
long err;
|
||||
char cmd[20] = "TIM ";
|
||||
sprintf(&cmd+4,"%5u\0",tim);
|
||||
sts = sele_write(cmd);
|
||||
if (sele_test_echo(&cmd,3)!= OK) lib$stop(-1);
|
||||
if (select_error_msg(&err) != OK) return(NOT_OK);
|
||||
if (err == TRUE) return(NOT_OK);
|
||||
return(OK);
|
||||
int sts;
|
||||
long err;
|
||||
char cmd[20] = "TIM ";
|
||||
sprintf(&cmd + 4, "%5u\0", tim);
|
||||
sts = sele_write(cmd);
|
||||
if (sele_test_echo(&cmd, 3) != OK)
|
||||
lib$stop(-1);
|
||||
if (select_error_msg(&err) != OK)
|
||||
return (NOT_OK);
|
||||
if (err == TRUE)
|
||||
return (NOT_OK);
|
||||
return (OK);
|
||||
}
|
||||
|
||||
/* -------------------------------------------------------------------------- */
|
||||
/* Einschaltung der Fremdsteuerung des Selektors
|
||||
Diese Funktion ist z.Z. nur vom Selektor-PC aktivierbar
|
||||
*/
|
||||
long select_remote()
|
||||
{
|
||||
int sts;
|
||||
long err;
|
||||
char cmd[] = "REM";
|
||||
sts = sele_write(cmd);
|
||||
if (sele_test_echo(&cmd,3)!= OK) lib$stop(-1);
|
||||
if (select_error_msg(&err) != OK) return(NOT_OK);
|
||||
if (err == TRUE) return(NOT_OK);
|
||||
int sts;
|
||||
long err;
|
||||
char cmd[] = "REM";
|
||||
sts = sele_write(cmd);
|
||||
if (sele_test_echo(&cmd, 3) != OK)
|
||||
lib$stop(-1);
|
||||
if (select_error_msg(&err) != OK)
|
||||
return (NOT_OK);
|
||||
if (err == TRUE)
|
||||
return (NOT_OK);
|
||||
}
|
||||
|
||||
/* -------------------------------------------------------------------------- */
|
||||
/* Ausschaltung der Fremdsteuerung des Selektors -
|
||||
ein Steuerung kann dann nur noch ueber den PC des Geraetes
|
||||
@@ -276,41 +305,53 @@ if (err == TRUE) return(NOT_OK);
|
||||
*/
|
||||
long select_local()
|
||||
{
|
||||
int sts;
|
||||
long err;
|
||||
char cmd[] = "TTY";
|
||||
sts = sele_write(cmd);
|
||||
if (sele_test_echo(&cmd,3)!= OK) lib$stop(-1);
|
||||
if (select_error_msg(&err) != OK) return(NOT_OK);
|
||||
if (err == TRUE) return(NOT_OK);
|
||||
int sts;
|
||||
long err;
|
||||
char cmd[] = "TTY";
|
||||
sts = sele_write(cmd);
|
||||
if (sele_test_echo(&cmd, 3) != OK)
|
||||
lib$stop(-1);
|
||||
if (select_error_msg(&err) != OK)
|
||||
return (NOT_OK);
|
||||
if (err == TRUE)
|
||||
return (NOT_OK);
|
||||
}
|
||||
|
||||
/* -------------------------------------------------------------------------- */
|
||||
/* Starten des Selektors nach Stillstand auf die Minimaldrehzahl
|
||||
*/
|
||||
long select_start()
|
||||
{
|
||||
int sts;
|
||||
long err;
|
||||
char cmd[] = "SST";
|
||||
sts = sele_write(cmd);
|
||||
if (sele_test_echo(&cmd,3)!= OK) lib$stop(-1);
|
||||
if (select_error_msg(&err) != OK) return(NOT_OK);
|
||||
if (err == TRUE) return(NOT_OK);
|
||||
int sts;
|
||||
long err;
|
||||
char cmd[] = "SST";
|
||||
sts = sele_write(cmd);
|
||||
if (sele_test_echo(&cmd, 3) != OK)
|
||||
lib$stop(-1);
|
||||
if (select_error_msg(&err) != OK)
|
||||
return (NOT_OK);
|
||||
if (err == TRUE)
|
||||
return (NOT_OK);
|
||||
}
|
||||
|
||||
/* -------------------------------------------------------------------------- */
|
||||
/* Bremsen des Selektors bis zum Stillstand; eine
|
||||
Drehzahlanzeige unterhalb 3000 U/min ist nicht moeglich.
|
||||
*/
|
||||
long select_stop()
|
||||
{
|
||||
int sts;
|
||||
long err;
|
||||
char cmd[] = "HAL";
|
||||
sts = sele_write(cmd);
|
||||
if (sele_test_echo(&cmd,3)!= OK) lib$stop(-1);
|
||||
if (select_error_msg(&err) != OK) return(NOT_OK);
|
||||
if (err == TRUE) return(NOT_OK);
|
||||
int sts;
|
||||
long err;
|
||||
char cmd[] = "HAL";
|
||||
sts = sele_write(cmd);
|
||||
if (sele_test_echo(&cmd, 3) != OK)
|
||||
lib$stop(-1);
|
||||
if (select_error_msg(&err) != OK)
|
||||
return (NOT_OK);
|
||||
if (err == TRUE)
|
||||
return (NOT_OK);
|
||||
}
|
||||
|
||||
/* -------------------------------------------------------------------------- */
|
||||
/* Einschalten des geregelten Betriebes mit dem Setzen eines Sollwertes
|
||||
der Drehzahl.
|
||||
@@ -321,29 +362,30 @@ if (err == TRUE) return(NOT_OK);
|
||||
long select_set_rpm(rpm)
|
||||
int rpm;
|
||||
{
|
||||
int sts;
|
||||
long err;
|
||||
char cmd[] = "SDR", s_dat[10] = "SDR 00000";
|
||||
if ((rpm < LIMIT_U) || (rpm > LIMIT_O))
|
||||
{
|
||||
print_error(fs,"nominal value out of allowed range");
|
||||
return;
|
||||
}
|
||||
int sts;
|
||||
long err;
|
||||
char cmd[] = "SDR", s_dat[10] = "SDR 00000";
|
||||
if ((rpm < LIMIT_U) || (rpm > LIMIT_O)) {
|
||||
print_error(fs, "nominal value out of allowed range");
|
||||
return;
|
||||
}
|
||||
/* Resonanzbereiche sind auch verboten */
|
||||
if (
|
||||
((rpm >= RESONANZ_1U) && (rpm <= RESONANZ_1O)) ||
|
||||
((rpm >= RESONANZ_2U) && (rpm <= RESONANZ_2O)) ||
|
||||
((rpm >= RESONANZ_3U) && (rpm <= RESONANZ_3O)))
|
||||
{
|
||||
print_error(fs,"nominal value within inhibited range");
|
||||
return;
|
||||
}
|
||||
sprintf(&s_dat+4,"%5u",rpm);
|
||||
sts = sele_write(s_dat);
|
||||
if (sele_test_echo(&cmd,3)!= OK) lib$stop(-1);
|
||||
if (select_error_msg(&err) != OK) return(NOT_OK);
|
||||
if (err == TRUE) return(NOT_OK);
|
||||
if (((rpm >= RESONANZ_1U) && (rpm <= RESONANZ_1O)) ||
|
||||
((rpm >= RESONANZ_2U) && (rpm <= RESONANZ_2O)) ||
|
||||
((rpm >= RESONANZ_3U) && (rpm <= RESONANZ_3O))) {
|
||||
print_error(fs, "nominal value within inhibited range");
|
||||
return;
|
||||
}
|
||||
sprintf(&s_dat + 4, "%5u", rpm);
|
||||
sts = sele_write(s_dat);
|
||||
if (sele_test_echo(&cmd, 3) != OK)
|
||||
lib$stop(-1);
|
||||
if (select_error_msg(&err) != OK)
|
||||
return (NOT_OK);
|
||||
if (err == TRUE)
|
||||
return (NOT_OK);
|
||||
}
|
||||
|
||||
/* -------------------------------------------------------------------------- */
|
||||
/* Leerlauf des Selektors einschalten; weder Antrieb noch
|
||||
Verzoegerung erfolgen - eine anschliessende Abbremsung oder
|
||||
@@ -351,14 +393,18 @@ if (err == TRUE) return(NOT_OK);
|
||||
*/
|
||||
long select_set_idle()
|
||||
{
|
||||
int sts;
|
||||
long err;
|
||||
char cmd[] = "STB";
|
||||
sts = sele_write(cmd);
|
||||
if (sele_test_echo(&cmd,3)!= OK) lib$stop(-1);
|
||||
if (select_error_msg(&err) != OK) return(NOT_OK);
|
||||
if (err == TRUE) return(NOT_OK);
|
||||
int sts;
|
||||
long err;
|
||||
char cmd[] = "STB";
|
||||
sts = sele_write(cmd);
|
||||
if (sele_test_echo(&cmd, 3) != OK)
|
||||
lib$stop(-1);
|
||||
if (select_error_msg(&err) != OK)
|
||||
return (NOT_OK);
|
||||
if (err == TRUE)
|
||||
return (NOT_OK);
|
||||
}
|
||||
|
||||
/* -------------------------------------------------------------------------- */
|
||||
/* Starten der Messung der elektrischen Verlustleistung des
|
||||
Selektors. Anscheinend wird waehrend der Zeit die
|
||||
@@ -369,30 +415,37 @@ if (err == TRUE) return(NOT_OK);
|
||||
*/
|
||||
long select_read_power()
|
||||
{
|
||||
int sts;
|
||||
long err;
|
||||
char cmd[] = "BRE";
|
||||
sts = sele_write(cmd);
|
||||
if (sele_test_echo(&cmd,3)!= OK) lib$stop(-1);
|
||||
if (select_error_msg(&err) != OK) return(NOT_OK);
|
||||
if (err == TRUE) return(NOT_OK);
|
||||
int sts;
|
||||
long err;
|
||||
char cmd[] = "BRE";
|
||||
sts = sele_write(cmd);
|
||||
if (sele_test_echo(&cmd, 3) != OK)
|
||||
lib$stop(-1);
|
||||
if (select_error_msg(&err) != OK)
|
||||
return (NOT_OK);
|
||||
if (err == TRUE)
|
||||
return (NOT_OK);
|
||||
}
|
||||
|
||||
/* -------------------------------------------------------------------------- */
|
||||
/* Lesen der aktuellen Drehzahl des Selektors */
|
||||
long select_read_rpm(rpm)
|
||||
int *rpm;
|
||||
{
|
||||
int sts, tmp;
|
||||
long err;
|
||||
char status[80], cmd[] = "FDR";
|
||||
sts = sele_write(cmd);
|
||||
if (sele_test_echo(&cmd,3)!= OK) lib$stop(-1);
|
||||
int sts, tmp;
|
||||
long err;
|
||||
char status[80], cmd[] = "FDR";
|
||||
sts = sele_write(cmd);
|
||||
if (sele_test_echo(&cmd, 3) != OK)
|
||||
lib$stop(-1);
|
||||
|
||||
sts = sele_read(&status);
|
||||
sscanf(&status+4,"%d",&tmp);
|
||||
*rpm = tmp;
|
||||
if (select_error_msg(&err) != OK) return(NOT_OK);
|
||||
if (err == TRUE) return(NOT_OK);
|
||||
sts = sele_read(&status);
|
||||
sscanf(&status + 4, "%d", &tmp);
|
||||
*rpm = tmp;
|
||||
if (select_error_msg(&err) != OK)
|
||||
return (NOT_OK);
|
||||
if (err == TRUE)
|
||||
return (NOT_OK);
|
||||
}
|
||||
|
||||
/* -------------------------------------------------------------------------- */
|
||||
@@ -421,108 +474,148 @@ dat = Tagesdatum dd.m.yyyy
|
||||
tim = Tageszeit hh.mm.s
|
||||
|
||||
*/
|
||||
long select_read_status(rm,nom_rpm, cur_rpm, pwr, curr, rot_temp, cont_temp,
|
||||
inl_temp, outl_temp, cool_wat, vacuum, accel, komm, dat, tim)
|
||||
long select_read_status(rm, nom_rpm, cur_rpm, pwr, curr, rot_temp,
|
||||
cont_temp, inl_temp, outl_temp, cool_wat, vacuum,
|
||||
accel, komm, dat, tim)
|
||||
char *rm[];
|
||||
int *nom_rpm, *cur_rpm, *pwr, *rot_temp, *cont_temp, *inl_temp, *outl_temp;
|
||||
float *cool_wat, *vacuum, *accel, *curr;
|
||||
char *dat[], *tim[];
|
||||
short *komm;
|
||||
{
|
||||
int cnt, key_id, sl, sts;
|
||||
long err;
|
||||
char ena_str[] = "ENABLED";
|
||||
char dis_str[] = "DISABLED";
|
||||
char keys[15][9] =
|
||||
{
|
||||
"Status:\0 ",
|
||||
"S_DREH:\0 ",
|
||||
"I_DREH:\0 ",
|
||||
"P_VERL:\0 ",
|
||||
"STROM:\0 ",
|
||||
"T_ROT:\0 ",
|
||||
"T_GEH:\0 ",
|
||||
"T_VOR:\0 ",
|
||||
"T_RUECK:\0",
|
||||
"DURCHFL:\0",
|
||||
"VAKUUM:\0 ",
|
||||
"BESCHL:\0 ",
|
||||
"KOM: \0 ",
|
||||
"DATE: \0 ",
|
||||
"TIME: \0 "};
|
||||
int cnt, key_id, sl, sts;
|
||||
long err;
|
||||
char ena_str[] = "ENABLED";
|
||||
char dis_str[] = "DISABLED";
|
||||
char keys[15][9] = {
|
||||
"Status:\0 ",
|
||||
"S_DREH:\0 ",
|
||||
"I_DREH:\0 ",
|
||||
"P_VERL:\0 ",
|
||||
"STROM:\0 ",
|
||||
"T_ROT:\0 ",
|
||||
"T_GEH:\0 ",
|
||||
"T_VOR:\0 ",
|
||||
"T_RUECK:\0",
|
||||
"DURCHFL:\0",
|
||||
"VAKUUM:\0 ",
|
||||
"BESCHL:\0 ",
|
||||
"KOM: \0 ",
|
||||
"DATE: \0 ",
|
||||
"TIME: \0 "
|
||||
};
|
||||
|
||||
char tok_buf[TOK_BUF_L], *ptr_token, *ptr_src, *ptr, tok_c[] = "/\0";
|
||||
char tok_buf[TOK_BUF_L], *ptr_token, *ptr_src, *ptr, tok_c[] = "/\0";
|
||||
|
||||
char status[255], cmd[] = "???";
|
||||
char status[255], cmd[] = "???";
|
||||
|
||||
if (sele_write(cmd) != OK) return(NOT_OK);
|
||||
if (sele_write(cmd) != OK)
|
||||
return (NOT_OK);
|
||||
|
||||
if (sele_test_echo(&cmd, 3) == NOT_OK) lib$stop(-1);
|
||||
if (sele_test_echo(&cmd, 3) == NOT_OK)
|
||||
lib$stop(-1);
|
||||
|
||||
if (sele_read(&status) != OK) return(NOT_OK); /* Und nun der Status */
|
||||
ptr_src = &status;
|
||||
for (;;)
|
||||
{
|
||||
/* Lies Zeichenfolge bis zum naechsten Trennzeichen '/' */
|
||||
ptr_token = strtok(ptr_src, &tok_c);
|
||||
ptr_src = NULL; /* fuer die weitere Suche notwendig */
|
||||
if (ptr_token == NULL) break;
|
||||
strcpy(&tok_buf,ptr_token);
|
||||
if (sele_read(&status) != OK)
|
||||
return (NOT_OK); /* Und nun der Status */
|
||||
ptr_src = &status;
|
||||
for (;;) {
|
||||
/* Lies Zeichenfolge bis zum naechsten Trennzeichen '/' */
|
||||
ptr_token = strtok(ptr_src, &tok_c);
|
||||
ptr_src = NULL; /* fuer die weitere Suche notwendig */
|
||||
if (ptr_token == NULL)
|
||||
break;
|
||||
strcpy(&tok_buf, ptr_token);
|
||||
|
||||
for (key_id = 0; key_id<=14; key_id++)
|
||||
{
|
||||
/* Ist das Schluesselwort enthalten ? */
|
||||
sl = strlen(keys[key_id]);
|
||||
if (strncmp(&keys[key_id][0], &tok_buf, sl) == NULL)
|
||||
{
|
||||
/* Schiebe das Schluesselwort raus */
|
||||
for (cnt=0;cnt+sl < TOK_BUF_L; cnt++)
|
||||
tok_buf[cnt] = tok_buf[cnt+sl];
|
||||
switch (key_id)
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
ptr = rm;
|
||||
strcpy(ptr, &tok_buf);
|
||||
break;
|
||||
}
|
||||
case 1: {sscanf(&tok_buf,"%d",nom_rpm); break;}
|
||||
case 2: {sscanf(&tok_buf,"%d",cur_rpm); break;}
|
||||
case 3: {sscanf(&tok_buf,"%d",pwr); break;}
|
||||
case 4: {sscanf(&tok_buf,"%f",curr); break;}
|
||||
case 5: {sscanf(&tok_buf,"%d",rot_temp); break;}
|
||||
case 6: {sscanf(&tok_buf,"%d",cont_temp); break;}
|
||||
case 7: {sscanf(&tok_buf,"%d",inl_temp); break;}
|
||||
case 8: {sscanf(&tok_buf,"%d",outl_temp); break;}
|
||||
case 9: {sscanf(&tok_buf,"%f",cool_wat); break;}
|
||||
case 10: {sscanf(&tok_buf,"%f",vacuum); break;}
|
||||
case 11: {sscanf(&tok_buf,"%f",accel); break;}
|
||||
case 12:
|
||||
{
|
||||
if (strcmp(&tok_buf, &ena_str) == NULL)
|
||||
{*komm = TRUE; break;}
|
||||
if (strcmp(&tok_buf, &dis_str) == NULL)
|
||||
{*komm = FALSE;break;}
|
||||
printf("Invalid Communication value");
|
||||
break;
|
||||
}
|
||||
case 13:
|
||||
{
|
||||
ptr = dat;
|
||||
strcpy(ptr, &tok_buf);
|
||||
break;
|
||||
}
|
||||
case 14:
|
||||
{
|
||||
ptr = tim;
|
||||
strcpy(ptr, &tok_buf);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (select_error_msg(&err) != OK) return(NOT_OK);
|
||||
if (err == TRUE) return(NOT_OK);
|
||||
return(OK);
|
||||
for (key_id = 0; key_id <= 14; key_id++) {
|
||||
/* Ist das Schluesselwort enthalten ? */
|
||||
sl = strlen(keys[key_id]);
|
||||
if (strncmp(&keys[key_id][0], &tok_buf, sl) == NULL) {
|
||||
/* Schiebe das Schluesselwort raus */
|
||||
for (cnt = 0; cnt + sl < TOK_BUF_L; cnt++)
|
||||
tok_buf[cnt] = tok_buf[cnt + sl];
|
||||
switch (key_id) {
|
||||
case 0:
|
||||
{
|
||||
ptr = rm;
|
||||
strcpy(ptr, &tok_buf);
|
||||
break;
|
||||
}
|
||||
case 1:{
|
||||
sscanf(&tok_buf, "%d", nom_rpm);
|
||||
break;
|
||||
}
|
||||
case 2:{
|
||||
sscanf(&tok_buf, "%d", cur_rpm);
|
||||
break;
|
||||
}
|
||||
case 3:{
|
||||
sscanf(&tok_buf, "%d", pwr);
|
||||
break;
|
||||
}
|
||||
case 4:{
|
||||
sscanf(&tok_buf, "%f", curr);
|
||||
break;
|
||||
}
|
||||
case 5:{
|
||||
sscanf(&tok_buf, "%d", rot_temp);
|
||||
break;
|
||||
}
|
||||
case 6:{
|
||||
sscanf(&tok_buf, "%d", cont_temp);
|
||||
break;
|
||||
}
|
||||
case 7:{
|
||||
sscanf(&tok_buf, "%d", inl_temp);
|
||||
break;
|
||||
}
|
||||
case 8:{
|
||||
sscanf(&tok_buf, "%d", outl_temp);
|
||||
break;
|
||||
}
|
||||
case 9:{
|
||||
sscanf(&tok_buf, "%f", cool_wat);
|
||||
break;
|
||||
}
|
||||
case 10:{
|
||||
sscanf(&tok_buf, "%f", vacuum);
|
||||
break;
|
||||
}
|
||||
case 11:{
|
||||
sscanf(&tok_buf, "%f", accel);
|
||||
break;
|
||||
}
|
||||
case 12:
|
||||
{
|
||||
if (strcmp(&tok_buf, &ena_str) == NULL) {
|
||||
*komm = TRUE;
|
||||
break;
|
||||
}
|
||||
if (strcmp(&tok_buf, &dis_str) == NULL) {
|
||||
*komm = FALSE;
|
||||
break;
|
||||
}
|
||||
printf("Invalid Communication value");
|
||||
break;
|
||||
}
|
||||
case 13:
|
||||
{
|
||||
ptr = dat;
|
||||
strcpy(ptr, &tok_buf);
|
||||
break;
|
||||
}
|
||||
case 14:
|
||||
{
|
||||
ptr = tim;
|
||||
strcpy(ptr, &tok_buf);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (select_error_msg(&err) != OK)
|
||||
return (NOT_OK);
|
||||
if (err == TRUE)
|
||||
return (NOT_OK);
|
||||
return (OK);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user