DLL einbinden für Intel-Atom N270 an SuperI/O-Chip
Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
06.07.2010, 10:42 (Dieser Beitrag wurde zuletzt bearbeitet: 06.07.2010 10:46 von Dennis.Moser.)
DLL einbinden für Intel-Atom N270 an SuperI/O-Chip
Hallo zusammen,
Dank eure Tutorials im Forum vom 10.4.2007 (von <strike>Dennis.Moser</strike> IchSelbst) bin ich schon etwas vorangekommen.
Ich kann über den SuperI/O Chip von einem 3,5" Wafer-Board (Intel-Atom mit 1GB Hauptspeicher, fanless... unter 200€ bei ICP) Ausgänge setzen und Eingänge lesen.
Jetzt möchte ich ebenfalls mit derselben beiligenden (eigentlich gut beschriebeen) DLL auch Board-Temperaturen und Spannungen auf dem Board lesen.
Ich kann selbst die Datenstruktor lesen, und bekommen z.B. mitgesteilt, dass 10verschiedenen Spannungen lesbar seien, was auch der Board-Beschreibung entspricht. Nur über den Befehl HWM-GET-Data (HWM steht für HardWareMonitor) bekomme ich einfach keine Daten. Der Return-Value von HWM-Get-Data =1 das bedeutet kein Fehler = gültig. (Da die DLL-auf Pointer besteht bei der ErgebnisWertrückgabe, denke ich der Fehler liegt bei mir = LabVIEWGrünschnabel)
Mein funktionierendend LabVIEW-VI mit betreffend der steuerung der Ausgänge liegt anbei. Auch die hIsmm.dll und der Header in C sowie die DLL-Beschreibung ist anbei in gezippter Form als DATEN.zip.
Das Board betreibe ich mit WinXP. Wer hat Erfahrung? Über Team-Viewer kann ich euch die Hardware für Tests freischalten, nach vorherigem Gespräch. Tel. 06220-922222
DLL einbinden für Intel-Atom N270 an SuperI/O-Chip
' schrieb:Mein funktionierendend LabVIEW-VI mit betreffend der steuerung der Ausgänge liegt anbei.
Wenn du sagt, das beiliegende VI funktioniert, dann will ich das mal glauben. Ich gebe aber folgendes zu bedenken. WORD ist ein U16. Du machst alles mit U8. Schädlich ist das aber nicht.
Für HWM_GetData gehst du wie folgt vor: Mach einen Cluster gemäß der Beschreibung von HWM_DATA, also 5x ULONG FANx, 10x FLOAT VINx und 3x FLOAT TMPINx. Beachte, dass ULONG ein U32 ist und FLOAT ein SGL. Im DLL-Knoten gibst du als Typ an "An Typ anpassen". - Ich hab mal ein Muster gemacht.
LV90
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
DLL einbinden für Intel-Atom N270 an SuperI/O-Chip
Vielen Dank für Dein Beispiel. Es hat fast genau den Punkt getroffen. Das war mein Fehler, die restlichen Daten zu definieren. Jetzt funkioniert es.
Nur zur Info wenn jemand mal Ismm von so einem Board unter LabVIEW nutzen möchte.
Hier das VI anbei. Es werden die 10x Boardspannungen und die 3 Board-Temperaturen gelesen, mit der iSmm.dll
RE: DLL einbinden für Intel-Atom N270 an SuperI/O-Chip
Hallo !
Konvertieren hat geklappt. Und den pfad zur DLL hab ich auch entsprechend angepasst. Aber leider bekomme ich keine Daten raus. Wenn GetData aufgerufen wird, kommen keine Daten raus, d.h. die Rückantwort ist Null= Fehler.
Keine Ahnung warum... Das Board kann's, weil ich mit dem Windows ISMM Programm alle Werte auslesen kann. Also ist das VI immer noch fehlerhaft.
Die Deaktivierungsstruktur habe ich nicht verstanden. Warum Sind die GetItemNodes und GetItemDesc deaktiviert ? Braucht man die nicht ?
RE: DLL einbinden für Intel-Atom N270 an SuperI/O-Chip
Hallo nochmal !
Ich bekomm's einfach nicht hin. Irgendwas stimmt beim Aufruf der pHwmData nicht. Habe mein VI und meine DLL (V1.4) nochmal angehängt. Kann mir jemand helfen ? Die Konfiguration des Clusters müsste eigentlich richtig sein. GetItemNodes und GetItemDesc geht ja auch.
13.10.2011, 09:52 (Dieser Beitrag wurde zuletzt bearbeitet: 13.10.2011 09:59 von rolfk.)
Ich bekomm's einfach nicht hin. Irgendwas stimmt beim Aufruf der pHwmData nicht. Habe mein VI und meine DLL (V1.4) nochmal angehängt. Kann mir jemand helfen ? Die Konfiguration des Clusters müsste eigentlich richtig sein. GetItemNodes und GetItemDesc geht ja auch.
Also ich kann Dir im Moment auch nicht helfen aber das VI macht schon zu Beginn schlicht nonsense. Der Vergleich des gecasted Handles mit dem String INVALID_HANDLE_VALUE ist schlicht absurd und kann NIE wahr sein. Viel sinnvoller wäre der Vergleich des Integerwertes des Handles mit -1, was nähmlich der entsprechende Wert des WINAPI DEFINES "INVALID_HANDLE_VALUE" wäre (Eigentlich ist es 0xFFFFFFFF und ist ein Handle ein Unsigned Integer aber das macht in diesem Zusammenhang wenig Unterschied). Zudem sollte das Handle wahrscheinlich im Zuge der Kompatibilität mit möglichen Upgrades nach 64 Bit Windwos als Pointer Sized Integer gekonfiguriert sein. Der Pfad der DLL sollte wahrscheinlich aangepasst werden um nur den DLL Namen zu enthalten und die DLL sollte in einem der Windows Verzeichnisse installiert sein.
Edit: Die Bemerkung wegen Pointersized Integers ist bei LabVIEW 8.2 glaube ich noch nicht sinnvoll. Die Clusterkonfiguration scheint tatsächlich korrekt. Aber das Getue mit dem expliziten Pfad zur DLL ist mir sehr suspekt. Da ich das entsprechende Board aber nicht habe, kann ich hier nichts testen. Ich denke mal dass ISMM_Open bei Dir -1 zurückgibt. Warum das so ist kann ich nicht erraten. Es könnte sein dass Deine DLL das verwendete Board oder Chipset nicht unterstützt. Nicht jedes Atom Board verwendet zwingenderweise dasselbe Intel Chipset, da auch VIA und andere gerne ein Chipset verkaufen. Und da funktioniert diese Library simpelweg nicht.
RE: DLL einbinden für Intel-Atom N270 an SuperI/O-Chip
Hallo !
Vielen Dank erstmal für die Antwort/ Hilfe.
Die ISMM.dll geht, da ich einen Panel-PC habe auf der dieses SDK Kit explizit mitgeliefert wird und auch ein Windows Programm dazu existiert, dass alle Werte auslesen kann.
Open, GetItemNodes und GetItemDesc geht ja auch und ich bekomme Werte, nur die GetData geht nicht. Leider.
Den Pfad habe ich direkt einegtragen, dass die DLL auch richtig gefunden wird. Das geht ja.
Ich hab's auch mit Ihrer V1.3 und meiner mitgelieferten V1.4 dll probiert - beide gleich (schlecht).
Wahrscheinlich liegts irgendwie doch an den Pointern auf das Array. Vielleicht find ich's ja noch raus, ich weiss nur nicht wie...
Danke und gruß
Ralph Dühring
Das mit dem INVALID_HANDLE_VALUE stimmt. Ist Unsinn. Hab ich nicht beachtet. War in dem original VI von Ihnen schon so, oder LAbview hat es irgendwie konvertiert...
Die dll leg ich mal direkt unter c:\ ab und probiers nochmal...
13.10.2011, 10:12 (Dieser Beitrag wurde zuletzt bearbeitet: 13.10.2011 10:19 von rolfk.)
RE: DLL einbinden für Intel-Atom N270 an SuperI/O-Chip
(13.10.2011 09:52 )rolfk schrieb: Edit: Die Bemerkung wegen Pointersized Integers ist bei LabVIEW 8.2 glaube ich noch nicht sinnvoll. Die Clusterkonfiguration scheint tatsächlich korrekt. Aber das Getue mit dem expliziten Pfad zur DLL ist mir sehr suspekt. Da ich das entsprechende Board aber nicht habe, kann ich hier nichts testen. Ich denke mal dass ISMM_Open bei Dir -1 zurückgibt. Warum das so ist kann ich nicht erraten. Es könnte sein dass Deine DLL das verwendete Board oder Chipset nicht unterstützt. Nicht jedes Atom Board verwendet zwingenderweise dasselbe Intel Chipset, da auch VIA und andere gerne ein Chipset verkaufen. Und da funktioniert diese Library simpelweg nicht.
Und die HWM_GetItemDesc Funktion lässt Du besser disabled. So wie das im Moment programmiert ist kann das nur crashen, sobald ISM_Open ein gültiges Handle zurückgibt.
(13.10.2011 10:07 )ralph.d schrieb: Das mit dem INVALID_HANDLE_VALUE stimmt. Ist Unsinn. Hab ich nicht beachtet. War in dem original VI von Ihnen schon so, oder LAbview hat es irgendwie konvertiert...
Die dll leg ich mal direkt unter c:\ ab und probiers nochmal...
Ich gehe davon aus dass die Grossschreibung hier ein Versehen war. Ich würde es nie wagen solchen Code in irgendeiner Weise zu veröffentlichen.