Hallo,
Ich habe jetzt gleich die nächste Frage.
Ich möchte per USART daten an das Programm "Logview" senden, welches diese graphisch auswerten kann. Mit dem Terminalprogramm empfange ich die Daten, die ich auch empfangen will ($1;1;;Daten;0<cr><lf>), aber LogView empfängt nur wirres Zeug.

Bei LogView im "Debug Logging" steht:
16:53:09,648 [ SerialData] > Empfang von Daten - TForm1.WMRxClusterMessage
16:53:09,648 [ SerialData] ..Anzahl empfangener Bytes: 49
16:53:09,648 [ SerialData] ..Rohdaten : <NUL>€€x<NUL>ÿ€øø€x<NUL>ÿ€øø€øø€<NUL>xàøø€<NUL>ø€< NUL>€ø<NUL>xà€xà€<NUL>€<NUL>øxà€xà€
16:53:09,648 [ SerialData] ..HEX : 0080807800FF80F8F8807800FF80F8F880F8F8800078E0F8F8 8000F8800080F80078E08078E080008000F878E08078E080
16:53:09,663 [ Device] ..AUSWERT : <NUL>€€x<NUL>ÿ€øø€x<NUL>ÿ€øø€øø€<NUL>xàøø€<NUL>ø€< NUL>€ø<NUL>xà€xà€<NUL>€<NUL>øxà€xà€
16:53:09,663 [ Main] > ..DatenempfangAuswertung
16:53:09,663 [ Main] ....Daten als ASCII = '<NUL>€€x<NUL>ÿ€øø€x<NUL>ÿ€øø€øø€<NUL>xàøø€<NUL>ø€ <NUL>€ø<NUL>xà€xà€<NUL>€<NUL>øxà€xà€'
16:53:09,663 [ Main] ....Daten als HEX = '0080807800FF80F8F8807800FF80F8F880F8F8800078E0F8F 88000F8800080F80078E08078E080008000F878E08078E080'
16:53:09,663 [ Main] ....Länge der Daten = 49
16:53:09,663 [ SerialData] ....Gerät: Testformat Lader Clustersize: 44 ClusterErweiterung: 0
16:53:09,663 [ SerialData] ....ACHTUNG: Falsche Clustersize! Datenlänge der INI passt nicht zu den empfangenen Daten!
16:53:09,663 [ Main] < ..DatenempfangAuswertung
Hier der Programmcode (ich weiß, dass man das unten mit nem String besser machen kann...):
Code:
#include <avr/io.h>

#define F_CPU 12000000UL
#define BAUDRATE 9600UL 
#define UBBR F_CPU/16/BAUDRATE-1

#include <util/delay.h>

uint16_t zaehler = 0;
uint8_t Zustd = 0;

void long_delay(uint16_t ms){
    for(; ms>0; ms--) _delay_ms(1);
}

void ADWandler_init(void){
	ADMUX = 0x00;
	ADMUX |= (1<<REFS0); //Referenzspannung ist Eingangsspannung des µContorllers
	ADCSRA = 0x00;
	ADCSRA |= (1<<ADPS0) | (1<<ADPS1) | (1<<ADPS2); //Frequenzteilungsfaktor 128
	ADCSRA |= (1<<ADEN); //ADC Aktivieren
}

void usart_init(void){
	UBRRH = UBBR >> 8;   //Baudrate einstellen
	UBRRL = UBBR & 0xff; //Baudrate einstellen

	UCSRB = (1<<TXEN); //Transmitter (Daten schicken) aktivieren
	UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0); //8Bit länge und 1 Stoppbit; Asynchron
}
void usart_send(uint8_t Sendung){
	while (!(UCSRA & (1<<5)));  //warten bis Senden moeglich (UDRE)
    UDR = Sendung;
}


int main(void){
	DDRC = 0x00;

	uint16_t ADCErgebniss;

	usart_init();
	ADWandler_init();

	while(1){

		ADMUX = (ADMUX & ~(0x1F)) | (0 & 0x1F); //Kanal füre Messung festlegen
		ADCSRA |= (1<<ADSC); //ADCmessung starten
		while (ADCSRA & (1<<ADSC) ); //ADC lesen lassen
		ADCErgebniss = ADCL + (ADCH<<8); //Messergebniss vom ADC speichern

		long_delay(200);
	
		usart_send(36); //$
		usart_send(49); //1
		usart_send(59); //;
		usart_send(49); //1
		usart_send(59); //;
		usart_send(59); //;
		usart_send(ADCErgebniss); //Daten (ADC)
		usart_send(59); //;
		usart_send(52); //0 (Prüfsumme)
                usart_send(13); //CR
		usart_send(10); //LF
	}
}
Und zu guterletzt die INI Datei von LogView:
Code:
[Gerät]
Name                            = Galvanischer Hautiwderstandmesser
Hersteller                      = Richard U
Gruppe                          = 09
Device_ID                       = ID_OPENFORMAT
Used                            = 1
Abbildung                       = OpenFormat.jpg
ChangeSettings                  = 1
HerstellerLink1                 = 
HerstellerLink2                 = 
LogViewLink                     = www.logview.info
TimeStep_ms                     = 200
TimeGiven                       = 1
KanalAnzahl                     = 1
WerteFormat                     = ASCII
Prüfsummenberechnung            = keine
PrüfsummenFormat                = ASCII
AutoStart                       = 0
AutoOpenToolbox                 = 0

[Stati]
StatiAnzahl                     = 1
001                             = Standard Test

[serielle Schnittstelle]
Port                            = COM1
Baudrate                        = 9600
Datenbits                       = 8
Stopbits                        = 0
Parität                         = 0
Flusskontrolle                  = 0
ClusterSize                     = -60
SetDTR                          = 0
SetRTS                          = 0

[Schnittstelle TimeOuts]
RTOCharDelayTime                = 290
RTOExtraDelayTime               = 100
WTOCharDelayTime                = 290
WTOExtraDelayTime               = 100

[Anzeige Einstellungen Kanal 01]
Zeitbasis                       = Zeit
Einheit                         = s
Symbol                          = t
WerteAnzahl                     = 2

Messgröße1                      = Spannung
Einheit1                        = U
Symbol1                         = V
Faktor1                         = 1.0
OffsetWert1                     = 0.0
OffsetSumme1                    = 0.0
Hier ist noch eine Anleitung, wie der Code den ich mit dem µC sende aussehen muss: Formatbeschreibung