Wert aus void() funktion auslesen ?

trollchen

Grünschnabel
Wert übertragen aus void() funktion in C

Hallo zusammen,

mein problem ist, dass ich einen wert aus einer void() funktion brauche.
ich habe 2 eigenständige programme. das eine liest die daten eines messgerätes aus, und gibt sie digital am bildschirm wieder.
das andere programm erstellt eine excel tabelle in der dieser gemessene bzw angezeigte wert auf knopfdruck gespeichert werden soll.

Bisher habe ich die beiden programme zu einem programm gemacht. heisst ich habe nurnoch 1 main () womit beide programme gestartet werden und einwandfrei laufen.
nur schaffe ich es nicht dem excel programm den gemessenen wert des ausleseprogrammes zu übergeben.


grund dafür ist glaube ich die void () funktion in einer anderen mess.c (das ausleseprogramm beststeht aus 7 .c dateien, aber nur in einer ist die main() ) steht.

hier ist die funktion die meinen gesuchten wert (value1) bestimmt:



void ContinuousMeasurement ()
{

(....)

while (stopMeasurements == OFF) // continue loop until stop measurements is encountered
{
value1 = 0;
value2 = 0;
status = 0;
ProcessSystemEvents ();

if (measureChannel[CHANNEL1] == TRUE)
{
udts380_read_data (s380Id, 1, &value1, &status); /*<------ den wert value1 aus dieser zeile brauche ich */

if(displayMode == 0)
{
SetCtrlVal(panelHandle[DIGITAL], DIGITAL_READING1, value1);

SetCtrlVal(panelHandle[DIGITAL], DIGITAL_NORM1, OFF);
SetCtrlVal(panelHandle[DIGITAL], DIGITAL_PREV1, OFF);
SetCtrlVal(panelHandle[DIGITAL], DIGITAL_OVL1, OFF);
SetCtrlVal(panelHandle[DIGITAL], DIGITAL_UNDEF1, OFF);

switch(status)
{
case 1:
SetCtrlVal(panelHandle[DIGITAL], DIGITAL_OVL1, ON);
break;

case 2:
SetCtrlVal(panelHandle[DIGITAL], DIGITAL_PREV1, ON);
break;

case 3:
SetCtrlVal(panelHandle[DIGITAL], DIGITAL_NORM1, ON);
break;

case 4:
SetCtrlVal(panelHandle[DIGITAL], DIGITAL_UNDEF1, ON);
break;
}

udts380_read_status (s380Id, 1, &channel, &mode, &wavelength, &autoManual, &gain);
getMode(mode, modeDescription);
getGain(gain, autoManual, gainDescription);
Fmt(wavelengthDescription, "%s<%i[w4]", wavelength);
SetCtrlVal(panelHandle[DIGITAL], DIGITAL_MODE1, modeDescription);
SetCtrlVal(panelHandle[DIGITAL], DIGITAL_GAIN1, gainDescription);
SetCtrlVal(panelHandle[DIGITAL], DIGITAL_WAVE1, wavelengthDescription);
}



Falls mir jemand helfen kann, wie ich es schaffe den value1 wert in die main () zu bekommen wäre ich euch total dankbar :)
ich habe noch nicht sehr viel erfahrung mit C und kenne mich nicht so gut aus, es wäre toll wenn mir das jemand vllt ein bischen ausführlicher erklären könnte. falls nicht, bin ich trotzdem für jeden tipp dankbar!! :)

grüsse
 
Zuletzt bearbeitet:
Welche Variable willst du genau wissen?
- die? Fmt(wavelengthDescription, "%s<%i[w4]", wavelength);

Wenn ja ist der einfachste Weg ohne viel umzuschreiben zu müssen eine
Globale Variable im Typ der "wavelength" Variable zu initialisieren und dann
ganz am Ende der Funktion wavelength auf die globale Variable die du erstellt
hast zu schreiben. So kannst du dann immer von deiner main() diese globale
Variable auslesen.

Ich hoffe ich konnte dir helfen ):
 
udts380_read_data (s380Id, 1, &value1, &status); /*<------ den wert value1 aus dieser zeile brauche ich */

den value1 wert muss ich haben.

habe bereits versucht value1 als globale variable zu definieren, aber das will dann das excelprogramm, welches in der main aufgerufen wird, nicht so recht akzeptieren. bzw zeigt dann immer 0 an anstatt dem ausgelesenen wert.

gibt es noch andere möglichkeiten?
 
udts380_read_data (s380Id, 1, &value1, &status); /*<------ den wert value1 aus dieser zeile brauche ich */
Sorry, nicht gesehn ):

Sag bitte mal was value1 für ein Variablen Typ ist und wie du es versucht
hast Global zu definieren, die beschreibung der globalen Var. und das auslesen
im main. Dürfte eigentlich klappen.
 
Zuletzt bearbeitet:
@Trollchen: Schau dir mal die Netiquette hier an (vor allem Pubkt 15) und die dicke rote Schrift, wenn du etwas postest. Das erhöht deine Chance auf eine Antwort deutlich.
 
Ja, da muss ich mich wohl entschuldigen. Ich habe mir nicht die Mühe gemacht auf Rechtschriebung bzw. Groß - und Kleinschreibung zu achten. Ich musste das eben alles möglichst schnell schreiben, da ich nebenehr Experimente laufen habe (hatte).

Aber jetzt gehts nicht weiter da ich erst das Programm fertig machen muss um die Werte speichern zu können.

Beim lesen manch anderer Beiträge im C - Forum hab ich gemerkt, dass eigentlich immer eine schnelle und gute Hilfe bereitgestellt wurde. Deswegen habe ich mich auch in diesem Forum angemeldet.
Sollte ich jedoch wider Erwarten keine Hilfe erhalten, so sagt es mir bitte, dann muss ich mir die Hilfe leider woanders suchen.
Wie schon erwähnt sind meine C Kenntnisse beschränkt und ich bin auf Hilfe angewiesen. Ich belese mich z.Z. mit dem Buch C/C++; Referenz und Anwendung von Dirk Louis. Allerdings ist es nicht ganz einfach das alles zu verstehen für jemanden der gerademal Grundkenntnisse in C, und auch nur in C hat. Dies nur damit nicht der Eindruck aufkommt, dass ich mein Programm von euch schreiben lassen will. Ich suche nur Hilfe zu Problemen die ich nicht alleine bewältigen kann bis jetzt.


Jetzt zu Van:

value1 ist ein double Typ. Ich hatte "double value1;" in die global_variables.h geschrieben. Ich erhalte aber nur den Wert 0, wenn ich dann dieses value1 in die Excel-Tabelle schreiben lasse. (Der Wert ist aber nicht 0).

Ich bin mir unsicher ob ich die Funktion welche den Wert in die Excel Tabelle schreibt hier posten soll, und ob das zu Lösung beitragen könnte.

Gruss
 
value1 ist ein double Typ. Ich hatte "double value1;" in die global_variables.h geschrieben. Ich erhalte aber nur den Wert 0, wenn ich dann dieses value1 in die Excel-Tabelle schreiben lasse. (Der Wert ist aber nicht 0).

Hmm, ok, ich hoffe die global_variables.h ist wirklich global ^^

Ich bin mir unsicher ob ich die Funktion welche den Wert in die Excel Tabelle schreibt hier posten soll, und ob das zu Lösung beitragen könnte.

Schaden könnte es net wenn du es entbehren könntest.

Falls du magst kannst du mir deine ICQ-Nummer per PM schicken und
wir gehen den Code gemeinsam durch.

Weil ich hab gerade gesehn das die Messung in einer while-Schleife drinne hängt.
(Ohne CODE-Tags ist es bissel schlecht zu lesen ^^)
Das muss man mit einer Funktion regeln anstatt einer globalen Variable.
 

Neue Beiträge

Zurück