khauer
Mitglieder
Neuling
Offline
Beiträge: 8
|
 |
« Antworten #4 am: 23.08.2008 07:18 » |
|
Hallo,
es hat geklappt mit der Init-Datei und yasdishell. Ich komme leider nur vom Regen in die Traufe. Wollte jetzt selber ein kleines geschriebenes Programm starten und testen. Kompilieren konnte ich ohne Probleme, aber leider wird beim Aufruf die Ini-Datei nicht gefunden, obwohl sie im gleichen Verzeichnis liegt. Woran kann das denn nun liegen? Nochmal die Bitte um Hilfe. Danke. Unten ist auch der Quelltext zu finden.
#include "libyasdimaster.h" #include #define MAXDRIVERS 10 int main(void) { int i; int res=0; /* Rückgabewert Geräteerfassung */ int res1=0; /* Rückgabewert Handleerfassung */ int res2=0; /* Rückgabewert Seriennummer erstes Gerät */ int res3=0; /* Leistung aus Gerät1 */ int res4=0; /* Energie aus Gerät2 */ int res5=0; /* Rückgabewert Kanal auslesen zweitens */ int res6=0; /* Leistung aus Gerät2 */ int res7=0; /* Energie aus Gerät2 */ DWORD channelHandle1=0; /* Kanalhandle für das erste Gerät */ DWORD channelHandle2=0; /* Kanalhandle für das zweite Gerät */ DWORD channelHandle3=0; /* */ DWORD channelHandle4=0; /* */ DWORD TimeStamp1=0; /* Zeitstempel der ersten Leistung */ DWORD TimeStamp2=0; /* Zeitstempel der zweiten Leistung */ DWORD TimeStamp3=0; /* Zeitstempel der ersten Energie */ DWORD TimeStamp4=0; /* Zeitstempel der zweiten Energie */ DWORD SerNr1=0; /* Seriennummer des ersten Gerätes*/ DWORD SerNr2=0; /* Seriennummer des zweiten Gerätes*/ DWORD DeviceHandle[10]; /* place for 10 device ID's */ DWORD dwBDC=0; /* BusDriverCount */ DWORD dDriverNum; /* Anzahl der Driver, die es gibt */ DWORD Driver[MAXDRIVERS]; /* Schnittstellen ID`s in einem Array */ double value1; /* Kanalwert für erste Leistung */ double value2; /* Kanalwert für erste Energie */ double value3; /* Kanalwert für zweite Leistung */ double value4; /* Kanalwert für zweite Energie */ char valuetext[17]; /* channel text value */ char DriverName[10]; char IniFile[]="./yasdi.ini"; /* Initialisierungsdatei */ FILE *Datei_1; /* Zeiger auf erste Messdatei */ FILE *Datei_2; /* Zeiger auf zweite Messdatei */
/* Initialisierung der Yadi-Master Bibliothek (kein Rückgabewert) */ if (0 > yasdiMasterInitialize(IniFile, &dwBDC)); printf("ERROR: YASDI ini file konnte nicht gefunden werden!\n");
/* welche Schnittstellen werden unterstützt?? */ dDriverNum = yasdiMasterGetDriver( Driver, MAXDRIVERS );
/* Alle Schnittstellentreiber werden online gesetzt (min. einer sollte das tun!) */ for(i=0;i { /* Name des Treiber (z.B. Com1 unter Windows bzw. ttyS1 unter Linux) */ yasdiGetDriverName(Driver, DriverName, sizeof(DriverName));
printf("Schalte Driver'%s' on...", DriverName);
if (yasdiSetDriverOnline( Driver )) { printf("success\n"); /* bOnDriverOnline = TRUE;*/ /* Überprüfung, ob alle driver online sind */ } else printf("false\n"); }
/* Gerätererfassung läuft mit einem Gerät (Rückgabewert)*/ res = yasdiDoMasterCmdEx("detection", 1, 0, 0);
if (res != NULL)
printf("Error: Die geforderte Anzahl konnte ich nicht gefunden werden.");
/* Händle zu den gefundenen Geräten werden in das Array gegeben */ res1 = GetDeviceHandles(DeviceHandle, 10 );
switch(res1) { case 1: { /* Seriennummer des ersten Gerätes wird ermittelt und ausgegeben */ res2 = GetDeviceSN( DeviceHandle[0], &SerNr1 ); printf("Seriennummer Gerät1: %ld\n", SerNr1 );
channelHandle1 = FindChannelName(DeviceHandle[0], "Pac"); channelHandle2 = FindChannelName(DeviceHandle[0], "Eac");
/* TimeStamp1 = GetChannelValueTimeStamp(channelHandle1); */ /* TimeStamp2 = GetChannelValueTimeStamp(channelHandle2); */
res3 = GetChannelValue(channelHandle1, /* chan. handle */ DeviceHandle[0], /* dev. handle */ &value1, /* value */ valuetext, /* text value */ 16, /* text value size */ 5 ); /* value age */ res4 = GetChannelValue(channelHandle2, /* chan. handle */ DeviceHandle[0], /* dev. handle */ &value2, /* value */ valuetext, /* text value */ 16, /* text value size */ 5 ); /* value age */ /* Abspeichern der Messwerte */ Datei_1 = fopen("Messdaten_Uni_Solar", "Wt");
if (Datei_1 == NULL) printf("File Error \n");
else
fprintf( Datei_1, "%d", SerNr1); /* Abspeichern erste Seriennummer */ fprintf( Datei_1, "%d", value1); /* Abspeichern erste Leistung */ fprintf( Datei_1, "%d", TimeStamp1); /* Abspeichern Zeitstempel zur ersten Leistung */ fprintf( Datei_1, "%d", value2); /* Abspeichern erste Energie */ fprintf( Datei_1, "%d", TimeStamp2); /* Abspeichern Zeitstempel zur ersten Energie */ fclose(Datei_1); break; }
case 2: { /* Seriennummer des zweiten Gerätes wird ermittelt und ausgegeben */ res5 = GetDeviceSN( DeviceHandle[1], &SerNr2 ); printf("Seriennummer Gerät2: %ld\n", SerNr2 );
channelHandle3 = FindChannelName(DeviceHandle[1], "Pac"); channelHandle4 = FindChannelName(DeviceHandle[1], "Eac");
/* TimeStamp3 = GetChannelValueTimeStamp(channelHandle3); */ /* TimeStamp4 = GetChannelValueTimeStamp(channelHandle4); */
res6 = GetChannelValue(channelHandle3, /* chan. handle */ DeviceHandle[1], /* dev. handle */ &value3, /* value */ valuetext, /* txt value */ 16, /* text value size */ 5 ); /* value age */ res7 = GetChannelValue(channelHandle4, /* chan. handle */ DeviceHandle[1], /* dev. handle */ &value4, /* value */ valuetext, /* txt value */ 16, /* text value size */ 5 ); /* value age */ /* Abspeichern der Messwerte */ Datei_2 = fopen("Messdaten_Uni_Solar_2", "Wt");
if (Datei_2 == NULL) printf("File Error \n");
else
fprintf( Datei_2, "%d", SerNr2); /* Abspeichern zweite Seriennummer */ fprintf( Datei_2, "%d", value3); /* Abspeichern erste Leistung */ fprintf( Datei_2, "%d", TimeStamp3); /* Abspeichern Zeitstempel zur ersten Leistung */ fprintf( Datei_2, "%d", value4); /* Abspeichern erste Energie */ fprintf( Datei_2, "%d", TimeStamp4); /* Abspeichern Zeitstempel zur ersten Energie */ fclose(Datei_2);
break; }
default: { printf(" Keine Handles bzw. Geräte vorhanden"); break; } }
/* ********************* Schnittstellentreiber offline setzen ********************************* */
/* Deinitialisierung der Schnittstelle */ yasdiMasterShutdown(); return (0);
} /* main */
Grüße khauer
|