Autor | Thema |
---|---|
Andreas Jörg
Raketenbauer Registriert seit: Sep 2005 Wohnort: Apfeltrach (Unterallgäu) Verein: agm, T2 Beiträge: 186 Status: Offline |
Beitrag 6726991
, C-Control Pro Mega 32
[04. Februar 2008 um 15:06]
Hi,
als Datenlogger für Experimente in Raketen möchte ich eine C-Control Mega 32 verwenden. Ich habe mir das wie folgt vorgestellt: In der Rakete fliegt nur diese Einheit und die Spannungsversorgung mit. Ist die Rakete wieder gelandet, werden alle Pins, außer die Spannungsversorgung und die Messeingänge mit dem Application Board über ein Flachbandkabel, das in eine IC Fassung gelötet ist verbunden. Von diesem Board aus werden dann die Daten über die serielle Schnittstelle ausgelesen. Nun bin ich gerade dabei, ein Programm mit Delphi zu schreiben, das die serielle Schnittstelle ausliest, und die Datein im .csv Format speichert. Letzteres dürfte ich hinbekommen, aber ich weiß nicht, wie man die serielle Schnittstelle ausliest, und 2h googlen brachten auch kein Ergebnis, das für mich verständlich wäre. Die C-Control habe ich wie folgt programmiert, wobei ich den Teil, in dem die Daten gesendet werden von hier übernommen habe. Dim Daten (1000,3) as Word Dim a, b as Integer Dim ADC0_Str(5) As Char Dim ADC1_Str(5) As Char Dim ADC2_Str(5) As Char 'ADC über GetAdc auslesen Sub main() a= 2 Daten (1, 1)= 0 For 1 = 2 To 1000 Daten (a,1)= Timer_TickCount()+ Daten (a - 1, 1) 'Zeitpunkt der Datenaufzeichnung Daten (a,2)= GetAdc(1) 'erster Kanal Daten (a,3)= GetAdc(2) 'zweiter Kanal AbsDelay(15) Next Dim CRC As Byte 'RS232 '10 byte Sende + Empfungspuffer + 6 byte interne FIFO Verwaltung Dim buffer(46) As Byte ' Array deklariert Dim StartStr(10) As Char 'RS232 'Init RS232: 19200 bps, 8 Bit, 1 Stop, NP Serial_Init_IRQ(0,buffer,10,30,SR_8BIT Or SR_1STOP Or SR_NO_PAR,SR_BD19200) For b = 2 To 1000 'Serial_WriteText(byte serport,char text,word offset,byte minwidth) Str_WriteWord(Daten (b,1),10,ADC0_Str,0,4) Str_WriteWord(Daten(b,2),10,ADC1_Str,0,4) Str_WriteWord(Daten(b,3),10,ADC2_Str,0,4) StartStr = "," Serial_WriteText(0,ADC0_Str) Serial_WriteText(0,StartStr) Serial_WriteText(0,ADC1_Str) Serial_WriteText(0,StartStr) Serial_WriteText(0,ADC2_Str) Serial_WriteText(0,StartStr) Serial_WriteText(0,ADC3_Str) Serial_WriteText(0,StartStr) CRC = ADC_0 Xor ADC_1 Xor ADC_2 Xor ADC_3 Str_WriteWord(CRC,10,StartStr,0,3) Serial_WriteText(0,StartStr) AbsDelay(2) '0.5Sek/Div Next End Sub Sub GetAdc(Channel As Byte) As Word ADC_Set(ADC_VREF_VCC,Channel) Return ADC_Read() End Sub Ich würde mich freuen, wenn mir jemand weiterhelfen könnte. Es ist so wie es ist, denn wenn es nicht so wäre, könnten wir nicht Fragen, warum es so ist, wie es ist. |
Peter
alias James "Pond"
Registriert seit: Sep 2000 Wohnort: D-84034 Landshut Verein: Solaris-RMB Beiträge: 2235 Status: Offline |
Beitrag 6727905
[04. Februar 2008 um 19:33]
Hab nicht ganz verstanden, wo genau Dein Problem liegt:
a) Bei der Ausgabe der in C-Control gespeicherten Daten an die serielle Schnittstelle, oder b) In Delphi beim Empfang dieser Daten? Ich habe vor etlichen Jahren mal einen Bordcomputer auf C-Control Basis gebaut (M-Unit), das Auslesen der seriellen Daten war da fast mit das einfachste. |
Andreas Jörg
Raketenbauer Registriert seit: Sep 2005 Wohnort: Apfeltrach (Unterallgäu) Verein: agm, T2 Beiträge: 186 Status: Offline |
Beitrag 6727906
[04. Februar 2008 um 19:57]
Hallo Peter,
mir geht es um das Auslesen der Daten mit Delphi. Es ist so wie es ist, denn wenn es nicht so wäre, könnten wir nicht Fragen, warum es so ist, wie es ist. |
Peter
alias James "Pond"
Registriert seit: Sep 2000 Wohnort: D-84034 Landshut Verein: Solaris-RMB Beiträge: 2235 Status: Offline |
Beitrag 6727913
[04. Februar 2008 um 21:30]
Zitat: Hab ich fast befürchtet. In VB6 wird das gut unterstützt, aber Delphi hab ich noch nie verwendet. |
Scorpion_XIII
Poseidon Registriert seit: Jun 2005 Wohnort: Verein: Beiträge: 1154 Status: Offline |
Beitrag 6727915
[04. Februar 2008 um 23:39]
Hallo,
unter Delphi Daten zu empfangen geht eigentlich recht "einfach" Anstatt die ganzen Kommunikationsroutinen selbst zu schreiben, benutze ich eine Komponente die das für mich macht. Funktioniert super! Nennt sich SerialNG auf http://www.domis.de Gruß Scorpion_XIII t(h)rust in GARDENA |
Andreas Jörg
Raketenbauer Registriert seit: Sep 2005 Wohnort: Apfeltrach (Unterallgäu) Verein: agm, T2 Beiträge: 186 Status: Offline |
Beitrag 6728913
[06. Februar 2008 um 14:24]
Hallo Scorpion,
Danke für den Tipp, ich habe es mir mal heruntergeladen! Leider kommen bei mir wenn ich den Quellcode unter Delphi 6 öffne viele Fehlermeldungen, liegt aber an meinem Delphi, ist nämlich bei sehr vielen Dateien der Fall. Wie hast du deine Empfangssoftware, bzw. Sendesoftware gelöst? Nach welchem Muster sendest du die Werte, wie speicherst du sie oder stellst sie dar? Es ist so wie es ist, denn wenn es nicht so wäre, könnten wir nicht Fragen, warum es so ist, wie es ist. |
Scorpion_XIII
Poseidon Registriert seit: Jun 2005 Wohnort: Verein: Beiträge: 1154 Status: Offline |
Beitrag 6728929
[06. Februar 2008 um 17:36]
Hi,
generell mache ich die Kommunikation so, dass nach jedem Wert ein Sonderzeichen oä. gesendet wird und am Ende des Datensatzes kommt ein anderes Zeichen als Endmarke. Im (Delphi)Programm kann man dann z.B. immer abfragen ob was kommt (ist glaube ich ein String) und verarbeitet dann die Daten indem man sie in ein Array, eine Tabelle, eine externe Datei... speichert. So habe ich z.B. die Software für den Tischkicker realisiert Bei der Messbox gehe ich einen noch einfacheren Weg, da war ich zu faul ein extra Programm zu schreiben. Der Atmel sendet die Werte nacheinander (jeder Wert in neuer Zeile). Und im Hyperterminal von Windows speichere ich das als Textfile ab. Excel kann dann super die Werte importieren und tata schon hab ich eine Kurve. t(h)rust in GARDENA |
Andreas Jörg
Raketenbauer Registriert seit: Sep 2005 Wohnort: Apfeltrach (Unterallgäu) Verein: agm, T2 Beiträge: 186 Status: Offline |
Beitrag 6728942
[06. Februar 2008 um 21:04]
Danke, Danke, Danke! Hyperterminal, das ist es! Ansonsten war ich grad dabei mir ein Visual Basic Programm zu schreiben, in VB ist das nämlich in der Tat relativ einfach gelöst.
Es ist so wie es ist, denn wenn es nicht so wäre, könnten wir nicht Fragen, warum es so ist, wie es ist. |
Neil
99.9% harmless nerd
Registriert seit: Aug 2000 Wohnort: Delft Verein: SOLARIS Beiträge: 7776 Status: Offline |
Beitrag 6728951
[07. Februar 2008 um 07:25]
Zitat: Bei dem ATMEL habe ich so die komplette Steuerung und Datenspeicherung realisiert. Das klappt sehr gut. Man hat dann in der Datei ein komplettes Protokol der Messung. Auch mit dem was man selber getippt hat. Zumindest kann man mit HT kontrollieren was gesendet wird. Ich tendiere daher auch dazu im Klartext zu senden anstatt Byte koddiert. Ist besser verständlich, hat aber mehr Datenrate zur Folge. Gruß Neil Die Erde ist eine Scheibe. Egal in welche Richtung sich die Menschheit bewegt, sie geht immer auf einen Abgrund zu. |