Hallo.
Allerdings kommt nur Mist raus.
Das bedeutet?
Es könnte entweder an der Wandlung liegen oder an dem GUI, das ich in VB .net geschrieben habe.
Es könnte auch noch an allen möglichen anderen Dingen liegen, die man auf Grund der dünnen Imformationslage nur erahnen kann.
z.B.: welchen Datentyp hat 'force'? Dir ist schon klar, dass der A/D-Wandler einen 10-Bit Wert ausspuckt? Wie ist das ADFM-Bit im ADCON1-Register konfiguriert? Wird der Wert rechts- oder linksbündig ausgegeben?
Es könnte aber auch an einer inkompatiblen RS232-Schnittstelleneinstellung beim PIC bzw. PC liegen.
Am meisten frage ich mich allerdings, was die Zeile
printf(force[0], force[1], force[2], force[3],force[4]);
tun soll? Ich habe es zwar nicht ausprobiert, aber ich bezweifle, dass diese Zeile das tut, was Du erwartest. Bitte schau Dir mal im Compiler Reference Manual des CCS C das Kapitel zu printf an.
Ob es nun an der Wandlung oder an Deinem VB.net-Programm liegt, das kannst Du ja wohl am ehesten selber testen. Wenn Du schon eine serielle Schnittstelle am PIC verwendest, dann lass Dir doch einfach mal die A/D-Werte (ich würde vorschlagen zunächst klein anzufangen und nur
einen A/D-Kanal zu betrachten) als String in einem Terminalprogramm anzeigen.
printf("%Lu \n\r",read_adc());
Wenn das soweit funktioniert und tatsächlich
Zahlen im Terminalfenster auftauchen, dann kannst Du die A/D-Wandlung überprüfen, indem Du (ohne die Sensoren) mal 5V bzw. 0V an den A/D-Eingang legst.
Ansonsten würde mich noch interessieren, ob meine Variante die Werte zu übertragen die Sinnvollste ist.
Äh...vermutlich nicht. Aber da ich nicht weiß, wie Dein VB-GUI die Daten erwartet, kann man sich dazu schlecht äußern.
Gruß
Daniel