WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Designer Forum (http://www.wcm.at/forum/forumdisplay.php?f=61)
-   -   Suche gute Gauges-Tutorials (http://www.wcm.at/forum/showthread.php?t=69253)

A319 08.09.2002 19:17

Suche gute Gauges-Tutorials
 
Moin,
wer weiß wo es gute Gauges-Tutorials möglichst in deutsch gibt.

Danke

Gruß Hannes:)

harry3 09.09.2002 10:45

Teil1
 
Hallo!

Zuerst einmal musst du dich entscheiden, ob du XML-Gauges erstellen willst oder C-programmierte Gauges. Da ich nichts von C-programmieren verstehe, nahm ich das XML Format. Es ist seit FS2002 eingeführt(die 747 und die Baron haben standartmäßig XML-Gauges.)
Die Vorteile sind: Du kannst in bereits bestehende Gauges Dateien hineinschauen, und dann ganze Seiten daraus in dein Gauge kopieren.
Auch das Prinzip der Gauge Erstellung ist leicht zu verstehen.
Als Nachteil fällt mir eigentlich nur ein, dass man keine Vektorgraphikgauges programmieren kann, die für Moving Map gebraucht wird. Allerdings kann das jedem Gaugeprogrammierer egal sein, der nicht gerade vor hat, eine Dreamfleet 737 zu programmieren.
Die C-programmierten Gauges sind komplizierter, weil man sich nicht einfach mal eine bereits bestehende Gauge Datei anschauen kann, man muss also von Anfang an alles sich selber ausdenken.

Ich schlage dir also XML vor, da dies die neue Technik im Gauge Design ist und sicher mit jedem neuen Flusi mehr und mehr ausgebaut werden wird. Und um so früher man lernt, damit umzugehen, desto besser werden dann die Resultate im FS2010 ausschauen!

Ich habe im Anfang Juli angefangen, Gauges zu designen, und heute gehts eigentlich schon recht gut. Unten siehst du noch ein Bild des EFIS Systems für die TBM700.

http://mypictures.i-networx.de/efis.jpg
http://mypictures.i-networx.de/tbm700_panel_project.jpg

harry3 09.09.2002 11:15

Teil2
 
Also, wenn du mit XML anfängst, so probiers doch am besten einmal mit einem SimIcon(die Schalter, wo man draufdrückt, und dann öffnet sich ein Schubhebel oder das Overhead und so).
Mit denen hab ich auch angefangen.
Also, das hier möchten wir machen:
http://mypictures.i-networx.de/overhead_icon.jpg
Doch bevor du das Gauge zu programmieren versuchst, brauchst du das Panels and Gauges SDK(HIER) und das XML-Gauge Tuturial von Bartels, zu finden auf AVSIM[xmlgau01.zip]

Und so sieht der Code dazu aus:

Sorry, durch denn blöden HTML Code in dem Forum wird der Text nicht angezeigt, ich habe den Gauge Code also in gauge.txt gepeichert.
EDIT:Jetzt hab ichs auch noch als .zip probiert, funktioniert genauso wenig wie das txt in dem Forum. Welcher Koffer hat den dieses Forum programmiert???Ich probiers jetzt als link: Klick hier!

<
heißt dass ein neuer Abschnitt eröffnet wird,
/> heißt das der Abschnitt geschloßen wird. Zuerst wird das Gauge eröffnet <Gauge und zum Schluß wird das Gauge geschloßen </Gauge>
Der Abschnitt Image sollte klar sein

Der Mouse Abschnitt bestimmt das Maussymbol, und was geschieht, wenn man draufklickt. Und ein Hilfeabschnitt ist auch noch dabei, der im FS angezeigt wird.
Unter Click steht 250 (&gt;K:PANEL_ID_TOGGLE) 250 ist die Panelidentifizierung für das Overheadpanel, und >K(=&gt;K) heißt dass eine Information oder ein Befehl an den Flusi geschickt wird.
Zum Schluß kannst du noch, wenn du willst, einen Copyrigh Abschnitt machen, und deine e-mail hineinschreiben.

Bei weiteren Fragen steh ich dir gerne zur Verfügung!

Viele Grüße
Harald:cool:

harry3 09.09.2002 11:36

Bei weiteren Fragen schreib mir, dann machen wir's und per e-mail aus, denn in dem Forum kann man nicht mal ein .zip anhängen, das dann funktioniert:mad2:

Was du vielleicht noch benötigst ist ein XML-Editor, dann ersparst du dir die komplizierten < > und so! Und wenn du dann Erfahrung im XML-programmieren hast, kannst ja umsteigen auf manuelles Editieren mit Notepad!

www.daveswebsite.com ->Da bekommst du einen guten FreewareEditor her!
Und gib mal Cabpacker in Google ein, dann kannst du dir auch dieses Tool runterladen, um alles dann in eine Cab Datei zu speichern.

So, und jetzt bin ich ruhig und lass dich arbeiten. Ich werde inzwischen über das Forum fluchen, dass sich so blöd anstellt:mad2:

Beste Grüße
Harry:cool:

randomize 09.09.2002 21:56

Hmmm, also harry3 hat ja XML gauges betreffend schon so ziemlich alles gesagt.

Falls Du C gauges gemeint hast, muss ich leider sagen, kannst du (fast) vergessen. Das einzige (und demnach beste) ist sd2gau13.zip von Dai Griffiths. Desweiteren sollte man sich mal das M$ Panel and Gauges SDK reingezogen haben.

Ansonsten, zum compilen: www.borland.com und von dort den kostenlosen BCC5.5 runterladen.

XML <==> C:
Also soweit ich weiß aktualisieren sich XML gauges immer sofort im Sim. D. h. Man ändert den Quellcode, speichert und *peng* sofort hat man as Ergebnis im Simulator ohne neu zu laden.
Dafür kann man in C weitaus komplexere gauges machen, wie gesagt, für Luftfahrzeuge der GA mögen XML geeignet sein (na, nur weil die Stndard-747 kein GA Flugzeug ist... Das Panel ist trotzdem nicht viel aufwändiger! ;-)), aber ein FMS in XML zu erstellen dürfte 'minimal' problematisch werden. :-) Abgesehen davon kann man dann durchaus sehr viel vom 'Standard-C++' in eine gauge einbauen, so z. B. Datei-Ein-/Ausgabe. Soviel dazu.

Viel Glück,
Etienne

harry3 10.09.2002 09:03

Hallo!

Also mit dem Neuladen: vielleicht hab ich dich jetzt falsch verstanden, aber normalerweise muss man auf ein anderes Flugzeug wechseln, dann den Quellcode ändern, und dann wieder auf dein Flugzeug mit dem Gauge wechseln. Also das Flugzeug muss man schon neu laden, den Flusi aber nicht. Man kann nämlich nicht abspeichern, wenn dass Flugzeug mit dem Gauge ausgewählt ist!

Viele Grüße
Harald:cool:

harry3 10.09.2002 09:13

Ach noch was: Das XML nur für die GA brauchbar ist, würd ich nicht sagen. Weil die meisten Freeware Designer haben auch bei einem A340 Panel nicht vor, Moving Map und FMC zu programmieren. Und für den Rest funktioniert auch XML recht gut. Schau dir nur mal Karl Pettersens Sandel-EHSI an.(wirst du sicher schon gesehen haben im AVSIM Forum, ansonsten hab ich die Datei angehängt). Dieser ist XML und kann eigentlich recht viel! Nur so nebenbei-sein Gauge hat bereits eine Größe von sagenhaften 45kb!!! (Zum Vergleich Mein EADI hatdagegen nur 7kb!)

Schöne Grüße
Harry:cool:

randomize 10.09.2002 14:19

Der ADI sieht ja echt nett aus! :)

Na das mit dem Neuladen hab' ich dann wohl falsch verstanden, ich dachte unser Avsim-Pfarrer Bill hätte sowas mal gesagt... Ahh, mei Gedächtnis...

Klar geht XML gut, keine Frage, aber IMHO kann man sehr viel übersichtlicher callbacks etc. programmieren. Vielleicht liegt's ja auch nur daran, dass ich schon bevor ich mit gauges angefangen habe, mit C++ zu tun hatte... ;) Ich persönlich kann mir selbst aus den mitgelieferten bzw. runtergeladenen XML gauges nicht im entferntesten etwas anfangen.
Ich überlass' das denen, die es auf mir höchst rätselhafte Weise verstanden haben. :)

Tschüss
Etienne

harry3 11.09.2002 21:12

Hi!
 
So geht's mir mit den C-programmierten Gauges, mit denen kann ich nichts anfangen. Aber mir fehlt einfach das nötige Wissen zu C. Wenn ich C-programmieren könnte, so hätte ich C-gauges erstellt.
Dieses Jahr fangen wir in der Schule programmieren an(ich hoffe das wir da auch C lernen, sollte aber eigentlich dazugehören, oder?:rolleyes: ). Bei der Gelegenheit werd' ich dann zwei gleiche Gauges erstellen, eines in XML, eines im .gau Format. Bin gespannt wo die Vorteile/Nachteile der beiden Erstellungsarten liegen.

Weil du gerade die callbacks erwähnst: Was ist denn das genau?:confused:
Wahrscheinlich hab ich schon einen Callback programmiert, ohne es zu wissen. Das wäre dann typisch für mich:D

Bill der Avsim-Pfarrer:D :lol: Das ist genau der richtige Ausdruck für ihn. Aber Hut ab vor ihm, wenn mein Pfarrer auch Gauges designen würde, so wär ich sicher jeden Sontag in der Messe.:D

Viele Grüße,
Harald:cool:

randomize 12.09.2002 19:34

Hmmmm, also wir hatten in der 8. mal sowas, was sich 'IKG' nannte... Das beinhaltete auch 'programmieren'... Na, war nicht wirklich ein Problem, hatte ja schon davor mit C++ rumgemacht, aber von programmieren war da wirklich nicht die Rede. Lag wohl daran, dass unser 'Lehrer' das selber nicht konnte. Wir haben dann einen 'Einblick' ins Programmieren bekommen, der nannte sich 'SuperLogo, Programmieren für Kinder' LOL (kotz)... Ein Programm, mit dem man Bilder 'programmieren' kann. Kein Witz! Da ist so eine Art Zeichenfläche, in der Mitte ist der Stift. Jetzt gibt man in eine Engabefeld die deutschen (!) Befehle ein, z. B.:

vorwärts 100
links 90
vorwärts 100

... und man hätte einen rechten Winkel ge'malt'. Ähem, ja, so ist das. Boaaa, man sehe und staune, man konnte sogar Schleifen machen:

wiederhole 360 (vorwärts 1 links 1)

... und man bekommt einen Kreis. Wow.

Also, *räusper*, wie man sieht, hat nicht allzuviel mit Programmieren zu tun. Ich hoffe nur, ihr bleibt davon verschont und macht wenigstens Basic oder so. Ob C drankommt, wage ich zu bezweifeln... Weiß aber nicht.

Zu den callbacks:
Also, in C gauges hat man zunächst mal die Bildelemente, also z. B. eine Nadel, ein statisches Bild (für den Hintergrund) oder einen String. Jetzt hat man halt das Bild, aber es braucht ja irgendwoher seine Daten, d. h. eine Nadel muss ja wissen, wann sie wohin zeigen soll. Dazu gibt man in der Definition der Nadel die FS-Variable an (z. B. GROUND_ALTITUDE für einen RA), auf die die Nadel reagieren soll. Jetzt braucht man eventuell noch besagtes callback: Das ist schlicht und ergreifend eine normale C-Funktion, in der man die Variable des Bildelementes (in dem Fall halt GROUND_ALTITUDE) sozusagen noch 'nachbearbeiten' kann. Das Bildelement und das callback werden dann sozusagen eindeutig 'verbunden', denn in einer gauge kann man logischerweise viele Bildelemente und callbacks haben... Dieses callback gibt dann an die Nadel einen Wert zurück. Also zum Beispiel kann man in der callback programmieren, dass die Nadel nicht mehr als 1500 ft anzeigen soll, damit sich die Nadel halt nicht im Instrument rumrotiert wenn man höher als 1500 ft fliegt... Man programmiert das callback also so, dass der sogenannte Rückgabewert, egal wie hoch man wirklich ist, nicht größer als 1500 ft ist.
Whew, ich hoffe, das veranschaulicht so uuuuungefähr was ein callback ist. Ist übrigens nur ein winziger Teil, denn mit callbacks kann man einfach ALLES machen. Eigentlich so ziemlich alles, was man in C auch machen kann. Datei ein-/ausgabe zum Beispiel.

Das Du schon ein callback programmirt hast, glaube ich deshalb nicht, weil es sie in XML schlicht und ergreifend in dieser Form garnicht gibt! Das wird ja dann irgendwie mit diesen 'Stacks' gelöst... Ja genau das ist es, was mit am wenigsten begreiflich wurde, als ich mich einst an XML heranwagte.

Na, mein Pfarrer (eigentlich Kaplan) kann auch keine Gauges programmieren, ich bin aber trotzdem (fast) jeden Sonntag in der Kirche... :)

Bis bald,
Etienne

EDIT
BTW - Welche Klasse bist du denn

harry3 12.09.2002 20:27

Hallo!
 
Ich geh in die zweite Klasse der Maschinenbau-HTL. Ich weiß nicht, obs sowas bei euch in Deutschland auch gibt, Wenn man die 4.Klasse(bei euch heißts glaub ich 8.Klasse...) Hauptschule oder Gym hinter sich hat, kann man ja entweder Gym weitergehen, oder man wechselt in eine Schule, die dann schon einen Schwerpunkt hat, wie Wirtschaft(HAK), "Mädchenschule" :) (HBLA), oder eben Technik(HTL). Die HTL ist wiederum in verschiedene Sparten ausgeteilt, wie z.B. Bautechnik, Computertechnik, oder Maschinenbau. Ich geh Mechatronik(Nachfolger von Maschinenbau). Da lernt man so ziemlich alles, was mich interessiert. Angefangen von Maschinenbau über Elektrotechnik bis hin zu Computertechnk.
Ich hab heute den Lehrer gefragt, was wir denn tun werden, und er hat gesagt, dass wir C lernen, weil man das überall brauchen kann. Er will uns die Basics beibringen, für mehr sei leider nicht Zeit(zumindest in der 2.Klasse). Und zu guter letzt wollen wir ein Programm schreiben, mit dem man die Volumen von Körpern ausrechnen kann.
Also nix mit >>links vorwärts 100<< ;)

Gibts bei euch in Deutschland nur das Gym und die Hauptschule nach der Volksschule, oder ist es ziemlich gleich wie in Österreich???

Viele Grüße

harry3 12.09.2002 20:35

Callbacks
 
Achja, um noch auf die Callbacks einzugehen. Wenn ich z.B. mal den Rising Runway als Beispiel verwende: Da wird zuerst mal das Value eingegeben, also Radar Alt oder so ähnlich, und dann noch ein Minuimum und ein Maximum, also 0 und 2500[ft].
Das ist doch dann auch ein Callback, oder???
Und was ein Stack ist, weiß ich selber auch nicht. Und trotzdem schaffe ich es, etwas zu programmieren. Da sieht man wieder, wie unwichtig die Theorie ist, so lange man alles in der Praxis schafft, ist's ja gut!


Viele Grüße,
Harald:cool:

Andragar 12.09.2002 21:27

Da hier auch die XML-Gauges angesprochen wurden... Habt ihr es schon mal geschaft die Frequenz eines Radios zu setzen? Das klappt bei mir irgendwie nicht. Ich nehme wohl die falschen Einheiten und Variablen... :rolleyes: Aber vielleicht geht's tatsächlich nicht. Ein XML-Radio gibt's nämlich noch nicht. (Zumindest nicht von MS)
Werd meinen Funkpeiler wohl doch als C Gauge realisieren.

harry3 12.09.2002 22:27

Hallo Andragar!
 
Frag mal im Avsim Forum, die XML-Experten wie Karl R. Petterson oder bartels werden dir sicher diese Frage beantworten können!
Überhaupt bevorzuge ich das Avsim Forum den deutschen Foren in Sachen Add-on Design sehr!
Für den Sonstigen Tratsch sind mir die deutschen Foren wieder lieber.

Viel Spaß bei deinem Projekt,
Harri:cool:

randomize 12.09.2002 22:49

Hehe :)
Also betreffend Schule: Wir haben halt 4 Jahre Grundschule (da kommt man so mit 5 oder 6 rein), danach geht man entweder auf die Gesamtschule (Haupt-, Real-, oder Gymnasialzweig) oder auf's Gymnasium. Also der Gymnasialzweig einer Gesamtschule ist schon noch was anderes als ein Gymnasium. Wenn man auf der Gesamtschule ist, gibt's eben diese drei 'Stufen', je nachdem wie gut bzw. schlecht man ist. Wenn man in Hauptschule ist, geht man nach der 10, macht dann 'ne Lehre oder so, Realschüler gehen nach der 11 und die Gymnasial-Zweigler (also ein 'normales' Gymnasium hat doch noch ein höheres 'Niveau' glaube ich) gehen auch nach der 11, gehen auf ein Gymnasium und machen dann Abitur oder auch nicht...

Wenn man, wie ich, auf dem Gymnasium ist (nicht Gymnasialzweig... ;)), kommt man eben nach der Grundschule da hin und bleibt auch bis zum bitteren Ende, also von Klasse 5 bis 13. Am Ende der 13 macht man halt Abitur und das war's. Ich glaube, wir beide sind so ungefähr in der gleichen 'Klasse', egal wie man's nun nennt... Also jedenfalls von den 'Jahren' her.

Das ist ja great, dass ihr C macht! :) Unser 'Lehrer' war, wie gesagt, dessen nicht mächtig. Weißt Du schon, welchen Compiler ihr benutzen werdet?

Ja, also wegen der rising runway, das ist dann wahrscheinlich das Äquivalent zum callback. Anscheinend schon, ja. Weiß nicht genau, wie das dann in XML aussieht.

So, und zu guter Letzt, auch an Andragar gerichtet, ich weiß nicht genau, ob XML gauges die gleichen Token Vars benutzen wie C gauges, aber jedenfalls ist es in C so, dass die COM, NAV etc. freqs BCDs (Binary Coded Decimal) sind. Deshalb kann es schon sein, das was mit dem Datentyp etc. nicht stimmt.

Tschüss
Etienne

Andragar 12.09.2002 23:54

Hmm... kann sein dass das der Fehler war...
Verwendet werden die gleichen Token. Nur aus der Panel/Gauge SDK geht nicht so ganz eindeutig hervor, welche Einheit verwendet werden muß.

BCD kenne ich auch noch aus dem Studium. Wozu hat man denn damals Elektrotechnik studiert? Doch bloß um später dann Gauges im Flusi zu bauen zu können. :lol:

harry3 26.09.2002 23:05

Hallo!
 
So, jetzt haben wir in der ersten Stunde mal ein bisschen C gemacht, aber natürlich nur so einfache Programme wie das anhängende.
Naja, dann auch noch ein Rechenprogramm, welches ich aber zuhause am Compi nicht mehr zusammengebracht habe.(Habe das aus der Schule mir nicht mitheim genommen!).

Doch wie jetzt .gau Gauges funktionieren, versteh ich noch nicht.
Mein Compiler heißt Turbo C++. Im SDK von Dai Griffits steht aber: C++ programmer, keep your hands away! Das hab ich nicht ganz verstanden. Kann man mit Turbo C++ keine Gauges erstellen?

Vielleicht kann mir mal wer kurz in eigenen Worten erklären, wie so ein Gauge aufgebaut ist! Da ist mal die .c Datei, wo alle Subgauges und die Namen aufgeführt werden, und dann gibts eben die Subdirectories wie Bitmap oder Subgauges, wo dann die .h und .c drinnen sind.
Muss man den die Header(.h) nun auch selber schreiben?
Ich dachte immer der gauges.h genügt!?

Vielleicht sollte ich doch noch ein paar mehr C++ Stunden hinter mich bringen, und mir dann einmal das ewig ange Dai Griffits SDK ansehen!:rolleyes:

Viele Grüße
Harald:cool:

randomize 01.10.2002 11:07

Ach, dieser Thread ist ja immer noch aktiv... ;)

Also. Hast ja eigentlich schon alles gesagt. Für eine 'typische' Multigauge braucht man (normalerweise):

- Eine .c-Datei, die alles 'zusammenhält', also in der die einzelnen Subgauges ge-#included werden und die Gaugenamen festgelegt werden,

- Eine .h-Datei (jaja, alles schön selberschreiben! :)), in der wird jeder Resource eine eindeutige ID zugewiesen,

- Eine .rc-Datei, da kommt die Dateiinformation (z. B. Copyright) rein, außerdem die Pfade der einzelnen Resourcen,

- Ein paar .c-Dateien der einzelnen Subgauges (egal, ob die in irgendeinem Ordner sind oder nicht),

- Mehr oder weniger viele Bitmaps und evtl. Sounds (auch egal, wo die sind),

- Ein bisschen graue Hirnmasse,

- und Sehr viel Zeit & Geduld.

Na also. Das perfekte Rezept für eine funktionierende Multigauge, man probiere und staune. :) Hehe, dat iss cool, C Gauges programmieren.

Na viel Spass damit,
Etienne

P.S. HALLO.EXE - :lol: lol, cool, sogar mit Beep, oder habe ich mich da verhört? ;) Bis jetzt habe ich keine Programme für die Konsole geschrieben. Nur C++ in einer IDE (BCB). Dann bekommt man auch eine GUI, aber vom Hardcore-Code, der dahintersteht, bekommt man nicht viel mit, das wäre auch viel zu stressig.

Ach ja, noch was, wegen TurboC++. Ich habe ihn nicht ausprobiert. Wenn's nicht klappen sollte, kannst Du auf jedenfall auf BCC o. ä. zurückgreifen (direkter Downloadca. 8MB, ohne Registrierung bei Borland... ;) ftp://ftpd.borland.com/download/bcpp...dLinetools.exe).

HansHartmann 01.10.2002 11:27

Kann mir jemand sagen, wie die gauges.h (FS2002) modifiziert werden muss, um mit dem BC++ zu funktionieren? Ich benutze zwar Visual Studio .NET, aber interessieren würde es mich trotzdem mal.

EDIT: Ich gehe mal davon aus, dass sie modifiziert werden muss. Probiert habe ich es noch nicht. Aber selbst für VS.NET muss die gauges.h modifiziert werden....

Andragar 01.10.2002 12:28

@Hans
"Aber selbst für VS.NET muss die gauges.h modifiziert werden...."

Echt? Oh.... vielleicht sollte ich C++.NET wirklich mal anfangen zu nutzen. :lol: Die IDE vom Studio ist jedenfalls klasse.

HansHartmann 01.10.2002 12:42

Ist ganz einfach zu ändern. Du bekommst irgendwo eine Fehlermeldung bzgl. eines unmöglichen Typecasts im Makro GAUGE_HEADER_FS800. Da brauchst Du nur ein '(PINSTALL_ROUTINE)' vor die Zeile mit dem Aufruf der Install-Routine setzen, schon geht's.

Andragar 01.10.2002 12:46

Merçi.

harry3 01.10.2002 20:49

Hallo!
 
Zitat:

lol, cool, sogar mit Beep, oder habe ich mich da verhört?
Einer meiner vielen Special Effects:D

Jetzt hab ich mich zu Hause noch mal ein bisschen herumgespielt, um ein Programm zu programmieren, welches uns der Lehrer vorgeschlagen hat: Ein Art Hörtest, also wie weit man hört. Probierts mal aus, und sagt mir, bis wieviel Hz ihr hört!
So, morgen geht's weiter in der Schule, bin mal gespannt was dran kommt. Vielleicht ja ein Gauge:D (wär ja zu schön um war zu sein:) )

Schöne Grüße,
Harri:cool:

randomize 01.10.2002 23:22

Bei 12 kHz hört's bei mir auf. Vielleicht schafft es aber auch der Lautsprecher nicht. Ma waaases net... ;)

Ach Schule hassu? Na, bei uns haben jetzt gerade Herbstferien begonnen (zwei Wochen). :) Was ein Glück. Viel Zeit für Gauges. :D

Und an die Anderen: Ich musste rein gar keine Änderung an der gauges.h in Verbinung mit dem BCC vornehmen, und bei mir klappt alles, sogar unter WinXP, bei dem ja einige Probleme zu haben scheinen. :p

bartels 02.10.2002 00:25

Auf die Gefahr hin mal wieder für Dai Griffiths' Tutorial zu werben, eine überarbeitete gauges.h und passende makefiles für BCC und GCC sind enthalten.
Was die BCD codes angeht, im wesentlichen ist bei COM und NAV Frequenzen die führende 1 wegzustreichen, alles mal 100 zu nehem und dann nach BCD zu konvertiern. Z.B. 123.45MHz => 23.45 => 2345 => 0x2345.
Für C-gauges müßte die eine oder ander Konversionsroutine in dem angesprochenen Tutorial sein, für XML habe ich mal was bei avsim.com gepostet.
Arne Bartels

Andragar 02.10.2002 10:40

@Arne

Oh... nun verstehe ich warums bei mir nicht geklappt hat, mit dem Setzen der Frequenzen. Danke!

randomize 02.10.2002 13:33

Ach was! Arne also auch im FXP Forum... :D

Das mit dem BCD habe ich irgendwie immer noch nicht ganz gerafft (ehrlich gesagt auch noch nicht probiert... :rolleyes: ). Im Avsim Forum hast du gesagt, die wären so ähnlich wie hexadezimale. Nur weiß ich dummerweise mit Hexadezimalen nicht anzufangen, habe sie bis jetzt nur in der Header benutzen müssen...

HansHartmann 02.10.2002 13:42

Also, ich versuche es mal zu erklären. Bei einer BCD-Zahl wird jede Ziffer (!!!) der Zahl in 4 Bit codiert. 4 Bit ergeben einen Zahlenbereich von 0 bis 15 bzw. 0x0 bis 0xF. Das hat den angenehmen Nebeneffekt, dass bei Darstellung einer BCD-Zahl in Hexadezimalschreibweise die Zahl für uns als Klartext lesbar ist.

Normal 1205 = BCD 0x1205

BCD-Zahlen sind immer Ganzzahlen, d.h. das Komma muss an einer von Dir definieren Position eingefügt werden. Beispielsweise an der vorletzten Stelle:

Normal 3607.6 = BCD 0x36076

Das ist alles.

Andragar 02.10.2002 13:59

Aaaaaaalso:

1. Hexadezimal:

In einer Zeit, als Computer noch kleine Brotdosen oder große Schränke mit Röhren waren... uhm... ich kürze mal ab.

Es ist eine Darstellungsart einer Zahl mit Binärzeichen.

Binärzeichen bestehen aus '1'en und '0'en und bedeuten An und Aus, den Zuständen die eine elektrische Leitung annehmen kann. (Es gibt noch andere Formen wie tri-state und analog-rechner, die lasse ich hier aber mal außen vor.)

Früher gab's dann meist 8 Leitungen parallel. Man konnte den Strom dann an und ausschalten.

z.B.: 01010101 (jede zweite Leitung ist an.)

um nun Zahlen zu codieren hat man diese acht Leitungen zusammen genommen und einer Zahl gleichgesetzt.

0000000 = 0
0000001 = 1
0000010 = 2
0000011 = 3
:
:
u.s.w.

Dadurch kann man Zahlen von 0 bis 255 darstellen.

Nun gibt/gab es früher Anzeigen, die dezimale Zahlen darstellen konnten. (Diese Zeichen, die aus den Balken aufgebaut sind.) Um nun alle unsere Ziffern darzustellen brauchen wir wieviele? Genau, vier Leitungen.

0000 = 0
0001 = 1
0010 = 2
0011 = 3
0100 = 4
0101 = 5
0110 = 6
0111 = 7
1000 = 8
1001 = 9

Da man für die restlichen Kombinationen noch Zustände übrig hatte, hat man diese mit Buchstaben als Zahlen aufgefüllt.

1010 = A
1011 = B
1100 = C
1101 = D
1110 = E
1111 = F

Und Voilà, wir haben den Hexadezimal code.

Zahlen von 0 bis 15 können wir so mit einer Stelle beschreiben:

9 = 9
C = 12

Danach brauchen wir mehr stellen:

z.B. ist
11 nicht 11 sondern (16 + 1 =) 17

Um nun die Zahlen nicht zu verwechseln wird meist ein H oder H& oder 0x davorgestellt. Also statt 11 wird H&11 geschrieben.

Der BCD-Code macht jetzt folgendes. Wir wollen ja unser schönes Dezimalsystem anzeigen und nicht Zahlen wie FFE5D.

Also nehmen wir nur die zustände 0 bis 9 als gültige an.

Unsere 17 wird dann im HEX Code H&11 zu BCD 17.
Als Binärcode (oder Leitungscode) sieht das dann so aus:
0001 0111 (Ich habe die vier Leitungsbündel mal getrennt.)

Wenn wir also in unserem Radio den Code 0x2345 setzen wollen, schreiben wir in wirklichkeit (im Dezimalsystem ausgedrückt) eine
(((((2 * 16) + 3) * 16) + 4) * 16) + 5
in die Speicherstelle.

Ich hoffe das war einigermaßen verständlich. :)

Ach ja, und jetzt verstehen wir auch, warum MS sich die führende 1 (die ja im Prinzip unnötig ist, da man weiß, dass die Frequenz im 100er bereich ist) schenkt.
Die vier Stellen kann man wunderbar in ein Datenpacket aus 4 * 4 Leitungen unterbringen. und diese 16 Leitungen... 16? Genau. 16 bit ist eine sehr handliche Einheit für einen Computer. Denn wenn er wegen der eins noch bits = Leitungen dazunehmen müßte, bräuchte er gleich die doppelte Menge, nämlich 32.
Je nachdem wie breit (sprich wieviele Leitungen) die interne Verdrahtung des Processors hat, braucht er länger für die Verarbeitung. Weitere betrachtungen führen hier aber wohl zu weit. :D


Alle Zeitangaben in WEZ +2. Es ist jetzt 11:36 Uhr.

Powered by vBulletin® Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag