Hilfe bei Programmmodifikation: Temperatursensor Ausgabe in CMD



  • Guten Tag,

    liebe Community ich hoffe jemand kann sich erbamen und mir helfen.
    Ich bin am verzweifeln. Ich versuche gerade seit circa 4 Stunden eine Open-Source Temperatursensor-Software zu modifizieren. Die Software gibt Werte eines Temperatursensors (Der per USB-HID-Wandler angeschlossen ist) in eine Kommandozeile aus, allerdings auch viele Werte die ich nicht benötige (Strom, ID, etc...). Die Ausgabe sieht folgendermaßen aus:

    Sensor #1 of 1: +27,3°C Power: Extern ID: 28 6F FE 98 06 00 00 D1
    

    Ich bräuchte aber nur die Temperatur. Der Sourcecode (Der Teil der Fehler verursacht) sieht folgendermaßen aus:

    r = rawhid_open(1, 0x16C0, 0x0480, 0xFFAB, 0x0200);
    	if (r <= 0) {
    		fprintf(stdout, "No Temp-Sensor found\n");
    		return -1;
    	}
    	fprintf(stdout, "Found Temp-Sensor\n");
    
    	while (1) {
    		//....................................
    		// check if any Raw HID packet has arrived
    		//....................................
    		num = rawhid_recv(0, buf, 64, 220);
    		if (num < 0) {
    			fprintf(stdout, "\nError Reading\n");
    			rawhid_close(0);
    			return 0;
    		}
    
    		if (num == 64) {
    		  temp = *(short *)&buf[4];
    		  if(buf[2]) { pwr = "Extern"; }
    		        else { pwr = "Parasite"; }
    		  fprintf(stdout, "Sensor #%d of %d: %+.1f\xF8""C Power: %-10s ID: ", 
    		          buf[1], buf[0], temp / 10.0, pwr);
    
    			for (i = 0x08; i < 0x10; i++) {
    				fprintf(stdout, "%02X ", (unsigned char)buf[i]);
    			}
    			fprintf(stdout, "\n");
    		}
    		//....................................
    		// check if any input on stdin
    		//....................................
    		c = getkey();
    		if(c == 0x1B) { return 0; }   // ESC
    		if(c >= 32) {
    			fprintf(stdout, "\ngot key '%c', sending...\n", c);
    			buf[0] = c;
    			for (i=1; i<64; i++) {
    				buf[i] = 0;
    			}
    			rawhid_send(0, buf, 64, 100);
    		}
    	}
    }
    

    Egal was ich ändere (Eigentlich auch wenn ich nichts ändere) kriege ich beim kompilieren mit DevC++ 5.9.2 (Bloodshed) folgenden Fehler:

    C:\Users\Nils\AppData\Local\Temp\cc41FMhp.o In function main': 21 C:\\Users\\Nils\\Desktop\\main.c undefined reference torawhid_open'
    32 C:\Users\Nils\Desktop\main.c undefined reference to rawhid_recv' 35 C:\\Users\\Nils\\Desktop\\main.c undefined reference torawhid_close'
    62 C:\Users\Nils\Desktop\main.c undefined reference to `rawhid_send'
    C:\Users\Nils\Desktop\collect2.exe [Error] ld returned 1 exit status

    Soweit ich das erkennen kann befindet sich alles Rawhid-Mäßgie in der Bibliothek "hid.c" die eingebunden wird.
    Libaries und sonstige Dateien sind alle im Entwicklungsverzeichnis (Ich verwende den beim Sensor mitgelieferten Quellcode). Kann mir jemand helfen? Vermutlich ist es nur ein kleiner Anfängerfehler (Bin eher der HTMLler)



  • Es bringt nichts, wenn die Bibliotheken nur im Verzeichnis liegen, du musst sie auch einbinden.
    Schau mal unter Linkeroptions, da gibts irgendwo die Möglichkeit Bibliotheken zu linken.



  • Davon mal abgesehen: du willst die Software verändern, um nur die Temperatur zu bekommen? Das Tool macht doch eine Ausgabe auf der Kommandozeile, benutze doch lieber einen Filter wie awk oder irgendwas mit Regular Expressions.


Log in to reply