WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Designer Forum (http://www.wcm.at/forum/forumdisplay.php?f=61)
-   -   C Gauge selber bauen (http://www.wcm.at/forum/showthread.php?t=82212)

Atze 29.12.2002 03:59

C Gauge selber bauen
 
Hallo ihr lieben Gauge-Designer.

Ich hätte da ml eine Frage, diesbezüglich der C-Gauge programmierung. Ich habe gehört, das das Programmieren von Sim Icons das leichteste auf diesem Gebiet sein soll. Da ich einigermaßen gut C kann, würde ich mal gerne sehen, wie soetwas als Quellcode also N I C H T compiliert aussieht. Hätte da mal jemand ein Quellcodebeispiel für mich, das ich da irgendwie mal ein bisschen durchblicke???


mfg Atze

harry3 29.12.2002 19:00

Hallo!
 
Also zuallererst einmal: Ich bin kein C Gauges Designer, ich mach meine Gauges mit XML. Diese sind viel schneller gebaut, und für den Freeware Bereich reichen sie allemal aus(von der Komplexität her).
Weil ein FMC mit XML zu realisieren ist nicht möglich. Aber das möchte ich auch garnicht!

Lade dir das SDK herunter, dort sind einige Bsp. drinnen. HIER

Und auf Flightsim.com findest du das Gauges Tuturial von Dai Griffits. Musst ein bisschen suchen. Aber es lohnt sich allemal, weil dort wirklich alles erklärt ist.

Und im "IdeHowTo" wird erklärt, wie man mit dem MS Visual Studio die Gauges "compiled". Zu finden auf Flightsim.com.


Ich jedenfalls bleibe nach einem kleinen Exkurs zu den C gauges doch bei "meinen" XML Gauges.
Bei XML kann ich dir weiterhelfen, bei C gauges frag leiber im Avsim Forum nach!


Viele Grüße
Harri:cool:

P.S.:Und damit du ungefähr weißt, mit was du es hier zu tun hast, hier ein kurzer Ausschnitt aus dem SDK Gauge! Das ist nur das eigentliche (Sub-)Gauge. Man braucht dann noch ein .c, wo alle Subgauges registriert werden, dann noch ein paar .h, und dann noch die Bilder. Alles zusammenmischen und dann hoffen, dass man nicht 55Errors bekommt.


// SDK.Attitude.c
// Copyright (c) 2000 Microsoft Corporation(auweh, das heißt nie was gutes). All rights reserved.(jaja, wer klaut euch den schon euren fehlerhaften Source Code...?)

// Set up gauge header
char attitude_gauge_name[] = GAUGE_NAME;
extern PELEMENT_HEADER attitude_list;
extern MOUSERECT attitude_mouse_rect[];

GAUGE_HEADER_FS700(GAUGE_W, attitude_gauge_name, &attitude_list, \
attitude_mouse_rect, 0, 0, 0, 0);


/////////////////////////////////////////////////////////////////////////////
FAILURE_RECORD attitude_fail[] =
{
{FAIL_GAUGE_ATTITUDE, FAIL_ACTION_NONE},
{FAIL_NONE, FAIL_ACTION_NONE}
};


/////////////////////////////////////////////////////////////////////////////
MAKE_SPRITE
(
attitude_sprite_outer,
BMP_ATTITUDE_SMALL_CARD2,
NULL,
attitude_fail,
IMAGE_USE_TRANSPARENCY|IMAGE_BILINEAR_COLOR,
0,
16, 13,
137,134,
1.05, 1.05,
MODULE_VAR_NONE, NULL, 0,
MODULE_VAR_NONE, NULL, 0,
ATTITUDE_INDICATOR_BANK_DEGREES, NULL, -1
)

PELEMENT_HEADER attitude_sprite_outer_list[] =
{
&attitude_sprite_outer.header,
NULL
};


/////////////////////////////////////////////////////////////////////////////
#define PITCH_LIMIT 43.0 // stop at 43 degrees

FLOAT64 FSAPI attitude_sprite_inner_cb( PELEMENT_SPRITE pelement )
{
FLOAT64 val = pelement->source_var_y.var_value.n;

if( val > PITCH_LIMIT )
val = PITCH_LIMIT;
else if( val < -PITCH_LIMIT )
val = -PITCH_LIMIT;

return val;
}

MAKE_SPRITE
(
attitude_sprite_inner,
BMP_ATTITUDE_SMALL_CARD1,
attitude_sprite_outer_list,
attitude_fail,
IMAGE_USE_TRANSPARENCY|IMAGE_BILINEAR_COLOR,
0,
55, 53,
137, 134,
0.55, 0.55,
MODULE_VAR_NONE, NULL, 0,
ATTITUDE_INDICATOR_PITCH_DEGREES, attitude_sprite_inner_cb, 2.0,
ATTITUDE_INDICATOR_BANK_DEGREES, NULL, -1
)

PELEMENT_HEADER attitude_sprite_inner_list[] =
{
&attitude_sprite_inner.header,
NULL
};


/////////////////////////////////////////////////////////////////////////////
MAKE_STATIC
(
attitude_background,
BMP_ATTITUDE_SMALL_BACKGROUND,
attitude_sprite_inner_list,
attitude_fail,
IMAGE_USE_TRANSPARENCY,
0,
0,0
)

PELEMENT_HEADER attitude_list = &attitude_background.header;


/////////////////////////////////////////////////////////////////////////////
MOUSE_BEGIN( attitude_mouse_rect, HELPID_GAUGE_ATTITUDE_INDICATOR, 0, 0 )
MOUSE_END


/////////////////////////////////////////////////////////////////////////////
#undef GAUGE_NAME
#undef GAUGEHDR_VAR_NAME
#undef GAUGE_W


harry3 29.12.2002 19:12

Damit du einen Vergleich zwischen C und XML hast:
Hier das gleiche Gauge(ein analoger ADI) in XML Sprache;der einzige Unterschied in der Funktionsweise ist der, dass ein Flight Director vorhanden ist:
Dies ist das fertige XML-gauge, es wird keine Header Datei benötigt.

Viele Grüße
Harri:cool:

PHP-Code:

<Gauge Name="Attitude Indicator" Version="1.0">
   <
Image Name="Attitude_Background.bmp" ImageSizes="118,113,186,177"/>
   <
Element>
      <
Position X="0" Y="0"/>
      <
MaskImage Name="Attitude_Card_Outside_Mask.bmp" ImageSizes="118,113,186,177">
         <
Axis X="59" Y="59"/>
      </
MaskImage>
      <
Image Name="Attitude_Card_Outside.bmp" ImageSizes="116,116,186,186">
         <
Axis X="58" Y="58"/>
      </
Image>
      <
Rotate>
         <
Value>(A:Attitude indicator bank degrees,radians)</Value>
      </
Rotate>
   </
Element>
   <
Element>
      <
Position X="0" Y="0"/>
      <
MaskImage Name="Attitude_Card_Inside_Mask.bmp" ImageSizes="118,113,186,177">
         <
Axis X="59" Y="59"/>
      </
MaskImage>
      <
Image Name="Attitude_Card_Inside.bmp" ImageSizes="131,131,205,205">
         <
Axis X="65" Y="65"/>
      </
Image>
      <
Shift>
         <
Value Minimum="-25" Maximum="25">(A:Attitude indicator pitch degrees,degrees) /-/</Value>
         <
Scale Y="0.85"/>
      </
Shift>
      <
Rotate>
         <
Value>(A:Attitude indicator bank degrees,radians)</Value>
      </
Rotate>
   </
Element>
   <
Element>
      <
Visible>(A:Autopilot flight director activebool)</Visible>
      <
Position X="0" Y="0"/>
      <
MaskImage Name="Attitude_Card_Outside_Mask.bmp" ImageSizes="118,113,186,177">
         <
Axis X="59" Y="59"/>
      </
MaskImage>
      <
Image Name="Attitude_FD_Bar.bmp" ImageSizes="118,113,186,177">
         <
Axis X="59" Y="59"/>
      </
Image>
      <
Shift>
         <
Value Minimum="-25" Maximum="25">(A:Autopilot flight director pitchdegrees) (A:Attitude indicator pitch degrees,degrees) -</Value>
         <
Scale Y="0.85"/>
      </
Shift>
      <
Rotate>
         <
Value>(A:Attitude indicator bank degrees,radians) (A:Autopilot flight director bankradians) -</Value>
      </
Rotate>
   </
Element>
   <
Element>
      <
Image Name="Attitude_Arrow_Icon.bmp" ImageSizes="118,113,186,177"/>
   </
Element>
   <
Mouse>
      <
Tooltip ID="TOOLTIPTEXT_ATTITUDE_INDICATOR_BANK_PITCH"/>
   </
Mouse>
</
Gauge


bartels 29.12.2002 23:58

Die wichtigsten Quellen sind schon von Harri angegeben. Wenn du C beherrschst ist das Gauge-Programmieren nicht weiter schwer(persönliche Meinung, aber ich mach' das schon ein bischen länger). Es ist halt persönlicher Geschmack ob man nun XML oder C wählt. Alles, was keine aufwendigen Kalkulationen bedarf, ist in XML u.U. schneller zu haben als in C, es hängt ein bischen von der Erfahrung und angesammeltem Code ab was einfacher ist.
Arne Bartels
(C-Gauge Fan, der auch mal XML-Gauges macht)

Atze 30.12.2002 12:55

Hey, danke für eure Antworten.

Also das Grundprinzip habe ich jetzt verstanden. Ich möchte mal so ein Höhenansage realisieren. z.B. don't sink:mad: , too low flap:o oder einfach nur 100 feet:D Geht das auf die gleiche Weise mit dem Einbinden der Sounds wie mit den Bildern???


Danke im Vorraus für eure Antworten


mfg Atze

harry3 30.12.2002 14:31

Hallo!
 
Also, wie schon gesagt, ich bin ein XML-Mensch :D , aber manche Fragen kann ich dir von C auch erklären.
Sounds sind eigentlich nur in C realisierbar. XML kann man da (fast)vergessen.
Sounds kannst du mit der fssound.dll in dein Gauge einbinden.
Die FsSound.dll ist im Gauge-Tut. von Dai Griffiths inkludiert. Es ist die "Developer Version", die du brauchst.

Wenn du C beherrscht, wird auch dies kein allzugroßes Problem für dich darstellen.

Viele Grüße
Harri:cool:

P.S.: @Atze: Deine Signatur ist nicht gerade toll, wenn man Gauges und so bauen will, und dann da steht, "Was schlecht ist kann ich noch schlechter". Ein bisschen positiv denken ist manchmal sehr vortilhaft :)

Ein kleiner Ausschnitt aus einem Gauge, der Bereich den ich beigefügt habe, ist für den Sound zuständig.



// --------------------------------------------------------------------------
// MOUSE CALLBACKS
// --------------------------------------------------------------------------
BOOL FSAPI mouse_left_cb(PPIXPOINT relative_point, FLAGS32 mouse_flags) {
// play a sound buffer exaclty once
// There are different play macros for file and resource sounds. The
// reason behind this is, that sound buffers can get lost (e.g. when the
// application looses input focus) and in such a case, the FSSound module
// returns false from it's Play() function. To restore a lost sound buffer,
// one can simply reregister it with the apropriate register function
// (RegisterFile() or RegisterRes()). This is exactly what the play macros
// do behind the scene and that's the reason for the two different macros.
MFSSoundResPlay(left_sound, FALSE);
return FALSE;
}

BOOL FSAPI mouse_right_cb(PPIXPOINT relative_point, FLAGS32 mouse_flags) {
// play a sound buffer from a sound file
MFSSoundFilePlay(right_sound, FALSE);
return FALSE;
}



// --------------------------------------------------------------------------
// DRAWING ELEMENT CALLBACKS
// --------------------------------------------------------------------------
// icon callbacks
FLOAT64 FSAPI left_cb(PELEMENT_ICON pelement) {
// you can check whether a sound buffer is currently playing
return MFSSoundIsPlaying(left_sound);
}

FLOAT64 FSAPI right_cb(PELEMENT_ICON pelement) {
// the button shows "on" while the sound buffer is playing
return MFSSoundIsPlaying(right_sound);
}



// --------------------------------------------------------------------------
// MAIN GAUGE CALLBACK
// --------------------------------------------------------------------------
void FSAPI over_cb(PGAUGEHDR pgauge, int service_id, UINT32 extra_data) {
switch(service_id) {
case PANEL_SERVICE_POST_INSTALL:
// sounds need to be registered before they can be played
MFSSoundFileRegister(right_sound);
// for sound resources, the handle of the module must be specified
MFSSoundResRegister(left_sound, (HMODULE)extra_data);

// the sound controlled by the left button should only be played
// on the left seaker
MFSSoundSetPan(left_sound, -10000);
// same for the sound controlled by the right button
MFSSoundSetPan(right_sound, 10000);
break;

case PANEL_SERVICE_PRE_KILL:
// never forget to unregister the sounds
MFSSoundUnregister(left_sound);
MFSSoundUnregister(right_sound);
break;
}
}



Atze 30.12.2002 16:18

ok, thx

Wie funktioniert eigentlich diese Listungsdatei mu das alles zusammen zu bekommen??? Und muss die Datei denne irgendwie in C compiliert werden??? Geht denne auch C++???

@ Harry3 Bitte beachte meine Neue Signatur:p Ist nicht böse gemeint :D


mfg Atze

bartels 30.12.2002 18:09

Am besten ackert man sich mal mindestens einmal durch die SDK samples und tutorials, dann wird schon vieles klarer.
Es ist durchaus erlaubt die .c Dateien als .cpp Dateien zu speichern und zu kompilieren (sd2gau13 Dateien sind dann Pflicht!) das heist dann aber nur dass in einer .cpp Datei C Code kompiliert wird, es wird also kein echtes C++ benutzt mit Klassen, Vererbung und dergleichen. Anderereseits ist es auch recht einfach Teile des Codes z.B. den Soundzugriff in eine Klasse auszulagern und per extern "C" Aufrufsyntax in dem Gauge zu nutzen, da ist einiges möglich. Im Übrigen ist die C-Gaugesyntax nahezu völlig statisch und benötigt u. U. überhaupt keine Implementation von Funktionen, so dass hier von C oder C++ fast gar keine Rede ist.
Für die Sound-Einbindung gibt es mehrere Ansätze, neben der FSSound.dll gibt es z.B. noch RFGutils wo man dann keine DLL mitnehmen muss, dafür gibt es aber nur ein russisches readme (kein Problem die Beispiele reichen aus).

Sounds können also eingebunden werden, sind aber eigentlich nicht vorgesehen für C-Gauges und verlanges deshalb ein bischen Nicht-Standard Code. Erstmal einige "normale" Gauges zum "Aufwärmen" sind deshalb empfehlendswert.
Arne Bartels

Atze 30.12.2002 20:13

Vielen Dank für eure zahlreiche Beteiligung:)

Ich habe die beiden Beispiele also .c und .xml mav verglichen. Ich habe gesehen, das bei den C Gauges die Sprache insgesamt andees ist als im XML Format. Gibt es da irgendwie eine Tabelle, welcher Befehl was macht??? Und kann mann den Quelltext der Gauges, die von Microsoft :motz: mitgeliefert worden sind auch irgendwie einsehen???

Danke für eure Antworten im vorraus



mfg Atze

harry3 31.12.2002 01:07

Hallo!
 
So, und schon haben wir den letzten Tag des Jahres. Ich muss noch ein bisschen aufbleiben, dann ewig lang schlafen, damit ich dann heute/morgen nachts nicht müde bin. Einer muss sich ja ums Feuerwerk bis in die Nacht hinein kümmern. Und interessant wirds sowieso erst danach;)

In Sachen XML kann ich dir sagen, dass es da ein Word Dokument von Microsoft gibt, in dem alle Variablen aufgelistet sind. Zu finden ist dieses im Panel und Gauges SDK.(link siehe oben!).

Auch ein Must-have, übrigens von Arne Bartels(siehe oben!ein wahrer Großmeister bei allem was mit Gauges zu tun hat!!!), ist das XMLGAU01, zu finden auf Avsim. Dort werden ein paar Grundlagen durchgemacht, aber vor allem die logischen Operationen(UND,ODER,...), und die if{} else etc... Funktionen, die dort aufgelistet sind, machen diesen Download für mich zu einem Must Have.

Zu C kann dir sicher Arne Bartels was sagen!


Viele Grüße
Harri:cool:

Atze 31.12.2002 02:21

@Harry3 Vielen Dank für die Antworten.

Ich habe mir das gerade gezogen und fange an, mich damit Morgen mal zu beschäftigen.


ICH WÜNSCHE ALLEN HIER FALLS MAN SICH NICHT MEHR IM ALTEN JAHR HÖRT EIN GUTES NEUES UND GESUNDES JAHR.



mfg Atze

harry3 31.12.2002 13:50

Hallo!
 
Also, Atze, deine Signatur gefällt mir sehr viel besser als die vorige.:)

Also, sollte ich es noch nicht erwähnt haben:
Für C brauchst du wenn möglich MS Visual Studio.
Für XML brauchst du nur NotePad.

Einen guten Rutsch wünsch ich euch!


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

Atze 31.12.2002 14:38

@ Harry3

Vielen Dank

Aber als was muss ich dann eigentlich das xml Gauge abspeichern. Erstmal als Text?!? oder wie macht man das???


mfg Atze

harry3 31.12.2002 14:51

Bei XML
 
Du öffnest NotePad, tippst deinen Source Code ein, und dann gehst du auf "Speichern unter", ganz unten steht dann "Textdokumente", darüber gibst du den Namen ein, z.B. Gauge.xml, und weil du das .xml dabeistehen hast, weiß Notepad, dass es hier ein XML abspeichern muss.

Wenn du einen Code für ein bestimmtes Gauge in XML erklärt haben willst, kann ich dir da behilflich sein.

Viele Grüße
Harri:cool:

harry3 01.01.2003 17:59

Zitat:

Ich habe mir das gerade gezogen und fange an, mich damit Morgen mal zu beschäftigen.
Also, schon erste Erfolge?
Oder musst du erst mal den Sylvesterrausch ausschlafen?;)


Viele Grüße
Harri:cool:

Atze 02.01.2003 17:41

@ Harry3

Danke für deine Hilfe.
Naja, ich war zu Silvester so betrunken :mad: das ich sogar neben das Klo gebrochen habe, und jetzt versuche ich es erstmal mit einem Popup Icon:D Ich meine damit, soetwas, womit man das ATC Fenster oder so öffnen kann.


mfg Atze

harry3 02.01.2003 17:57

Hallo!
 
Es ist kurz vor 17.00Uhr, jetzt bin ich online. Jeden Tag fast zur selben Zeit...Komisch

Zitat:

Naja, ich war zu Silvester so betrunken...
Zumindest zu Silvester pass ich da sehr auf, weil es irgendwie schade wäre, wenn der erste Tag des Jahres gleich so anfangen würde.
Dabei war gestern auch noch ein sooo tolles Wetter!


In welcher Sprache schreibst du dein Popup Gauge? C oder XML?


Viele Grüße
Harri:cool:

Atze 02.01.2003 18:25

Hallo Harry3

Ich probiere es gerade in xml. Ich habe leider nur Borland C++ und wollte mir nicht noch ein anderes kaufen. Aber was bedeuten denne das hier???

ImageSizes="12,12,19,19" />

Also ich könnte mir darunter nur die Bildgröße vorstellen.


mfg Atze

Bastian 02.01.2003 19:39

Hi Atze

du kannst auch mit Borland C++ Gauges in C erstellen.
Das einzige was du beachten musst ist das Du eine Win32 Dll erstellst.
Die kannst du dann in *.gau umbenennen und dann sollte das gehen.

Gruß
Bastian

harry3 02.01.2003 20:01

Das MS-Original:

PHP-Code:

<Gauge Name="Overhead Icon" Version="1.0">
   <
Image Name="Icon_Compass.bmp" ImageSizes="12,12,19,19"/>
   <
Mouse>
      <
Help ID="HELPID_GAUGE_TOGGLE_OVERHEAD_WINDOW"/>
      <
Cursor Type="Hand"/>
      <
Click>250 (&gt;K:PANEL_ID_TOGGLE)</Click>
   </
Mouse>
</
Gauge

Unter ImageSizes="x1,y1,x2,y2" versteht man in der Tat die Bildgröße.
Wobei die 4 Werte etwas verwirrend aussehen könnten, weil es ja nur zwei Werte gibt: x und y(waagrecht und senkrecht).
Die MS Standart Gauges haben immer 2 verschiedene Textursets dabei: einmal für niedrige, einmal für hohe Auflösung.
Die ersten beiden Zahlen x1 y1 sind für niedrige Auflösung[640*480], die anderen (x2,y2) für hohe Auflösung(1024*768). Damit ergibt sich auch der Umrechnungsfaktor: 1024/640=1,6!!!

Man muss aber nicht 2 Textursets verwenden, und die meisten tun das auch nicht. Es wäre einfach zu aufwendig jede Textur 2mal zu zeichnen!

Es reicht also bei deinen Gauges aus, ein Bild mit 19*19 Pixeln zu maln und dann ImageSizes="19,19" zu verwenden.


Noch ein Tipp: Im Mouse Bereich steht irgendwo HelpID. Dies ist die Hilfe, die angezeigt wird, wenn die Maus über dem Gauge ist. Mit HelpID stehen dir allerdings nur begrentzt viele Möglichkeiten zur Verfügung.(da gibts eine Tabelle). Und solche Dinge wie APU sind sicher nicht in der Tabelle vorhanden.
Aber du kannst dir eine Hilfestellung selber schreiben. Mit der Tooltip Funktion kannst du jeden beliebigen Text einfügen.
PHP-Code:

<Tooltip>Dein Hilfe Text</Tooltip

Bitte beachte aber das keine Sonderzeichen wie Ö,Ä... verwendet werden dürfen!

Ein copyright samt email kannst du natürlich auch noch hinzufügen, es hat keine Auswirkung auf dein Gauge!

Also sollte das Gauge schließlich ungefähr so aussehen:

PHP-Code:

<Gauge Name="Overhead Icon" Version="1.0">
   <
Image Name="Icon_Compass.bmp" ImageSizes="19,19"/>
   <
Mouse>
      <
Tooltip>Open or close Overhead Panel</Tooltip>
      <
Cursor Type="Hand"/>
      <
Click>250 (>K:PANEL_ID_TOGGLE)</Click>
   </
Mouse>
 <
copyright>(c)2003 by Atze [atze@email.de]</copyright>
</
Gauge

Soweit, so unklar?


Viele Grüße,
Harri:cool:

Atze 03.01.2003 01:59

Vielen Dank an alle.

Sobald mein Gauge feddisch is, werde ich es dann mal hier als Anhang anhängen:D Das wird aber noch ein bisschen dauern. Achso, wird das 19*19 als Pixel oder Millimeter gerechnet???

Gehört zwar nicht hierher, aber ich bin gerade dabei, die Bell (Der Hubschrauber) fliegen zu lernen. Es macht sehr viel Spaß, aber wenn ich eine Bruchlandung mache, dann :motz: ich mich.

mfg Atze

harry3 03.01.2003 02:25

Guten Morgen!(oder wie man bei euch sagt: Moin Moin Moin)
 
Jetzt hab ich kurz vorm Schlafengehen noch mal den Compi angeworfen, und siehe da, unser Gauge Programmierer ist auch noch auf!

Alle Größen werden in Pixel angegeben.
Du musst mit MS Paint nur mal auf die äußersten Ecken der .bmp hinfahren und die Werte unten rechts ablesen, z.B. 12,32. Das sind sie schon, die x und y Koordinaten!

Zitat:

Sobald mein Gauge feddisch is, werde ich es dann mal hier als Anhang anhängen
Da machst du mir ja Konkurrenz :D ,
weil ich damals mein erstes Gauge, auch ein SimIcon, auch ins Forum gestellt habe.
Mein zweites Gauge war dann ein EADI, der jetzt im TBM700 Panel inkludiert ist(aber mit viel mehr Funktionen als damals!).

Wenn ich mich da zurückerinnere, an mein erstes SimIcon. Es war ein warmer Sommerabend:D. Das SDK wurde mit Rekordgeschwindigkeit gesaugt und ich sah mir ein bereits inkludiertes SimIcon von Microsoft an. Ich glaub ich bin 2 Stunden gesessen, um den Source Code mal einigermaßen durchschaut zu haben(obwohls eh nur ein 8 Zeiler war). Inzwischen ist ein heftiges Gewitter aufgezogen, und meine Mutter wollte, dass ich den Compi abschalte. "So ein Compi halt schon ein bisschen was aus, wenns sein muss auch einen Blitz";
(wer's glaubt) ,hab ich ihr gesagt und das SDK fröhlich weitergesaugt.

Zurück zum Gauge:So 100%-tig hab ich das SimIcon erst ein paar Tage später durchschaut.

Bei dir wirds halt so sein: Es war ein eiskalter Wintertag, du warst noch ein bisschen angeheitert von Sylvester, aber das brauchtest du, um nicht bei den kryptischen Zeichen des Gauge Codes durchzudrehen...

So, jetzt hör ich schreiben auf, da kommt eh nur Blödsinn raus!:lol:

Also nicht abschrecken lassen, auch Hans Hartmann hat vor seinem FMC für die DF mal kleine Schalter etc. programmiert. Nur selten werden Gauges Programmierer geboren :D

Viele Grüße
Harri:cool:

harry3 03.01.2003 02:35

Hallo nochmal!
 
Hier noch kurz der Link zu den besagten ersten 2 Gauges, die ich programmierte: HIER
Während das SimIcon mehr oder weniger abgeschrieben vom MS-Original war, war der EADI schon eine Eigenproduktion. Damals verwendete ich noch ein XML-Editor Programm. Das ließ ich aber dann bald. Denn wenn man den Source Code manuell schreibt, bekommt man ein viel besseres Gefühl für XML Gauges. Nur so nebenbei!

Also, jetzt ist's endgültig Zeit zum Schlafengehen.

Viele Grüße
Harri:cool:

Atze 03.01.2003 03:36

Vielen Dank Harry3

Es sieht so aus, das ich nur noch das Bild malen muss. Ansonsten ist der Sourcecode schonmal fertig:D Achja, hast Du villicht mal lust, mit mir Online zu fliegen???

mfg Atze

harry3 03.01.2003 18:13

Hallo!
 
Das mit dem Onlinefliegen geht (vorerst) noch nicht, weil mein Joystick nicht mehr funktioniert. Aber jetzt kommt sowieso ein Computerfachmann in nächster Zeit, der soll das reparieren.

Aber sobald der Joystick wieder funktioniert, können wir ja mal ne Runde zwischen Deutschland und Österreich drehen.
(z.B.:München-Innsbruck mit nem kleinen Flieger, oder Berlin-Innsbruck mit ner dicken Kiste???).

Achso, und wegen meinem Namen: Musst nicht Harry3 sagen, Harri genügt. Ich heiß ja nur deswegen harry3, weil Harry,1,2,schon belegt waren.


mfg
Harri:cool:

Atze 03.01.2003 19:02

moin moin Harry

Das wäre Super. Mein Gauge Bold nimmt lansam Gestalt an:D :D :D :D :D
Und das, was das Fliegen zwischen Deutschland und Österreich angeht, freue ich mich schon drauf. Wird aber mit dem Gauge noch einige Tage dauern, weil ich auch noch ein bisschen mit GMAX rumspielen will, und mir irgendwann eine eigene Maschiene zu bauen.


mfg Atze

harry3 03.01.2003 19:32

Hallo!
 
Von Gmax (und auch FSDS) halt ich lieber Abstand.
In der Schule werden wir jetzt zwar bald einmal anfangen, mit CAD zu zeichnen. Aber ein Flugzeug zu designen kann ich mir nicht vorstellen:eek: Bei Gauges braucht man nur ein paar Werte zusammensetzen, alles ist irgendwie mehr oder weniger logisch.

Aber beim Flugzeugdesignen muss man auch noch künstlerisch begabt sein, um all die Rundungen etc. hinzubekommen. Und das kann ich nicht.

So, ich muss nun endlich mal meine TBM700 fertigmachen. Wollte ja schon zu Weihnachten releasen, wird wohl nix mit dem Termin:eek:
Naja, müssen die Leute, die sie haben wollen, eben ein bisschen länger warten :p.

Viele Grüße
Harri:cool:

Atze 03.01.2003 23:05

Naja, wennst du meinst

Ich habe bis jetzt nur kleine Objekte erstellt, aber künstlerische Begabung werde ich ja wohl haben, wenn in in Kunst also Zeichnen eine 1 habe. Und was das Gauge angeht, werde ich es bald fertig haben. Lass doch lieber mit einem Hubschrauber zwischen Deutschland und Österreich fliegen ok???


mfg Atze

harry3 04.01.2003 00:24

Hallo!
 
Damals zu den Gym Zeiten hatten wir auch noch künstl. Zeichnen, und da hatte ich auch immer einen 1er.
Jetzt haben wir Technischen Zeichnen, und da hab ich glaub ich einen 2er.

Aber irgendwie möchte ich mir so ein Großprojekt(Flugzeugmodell) noch nicht antun. Obwohl einfache Dinge wie ein einfaches Haus(Quader mit aufgesetztem Dach...u.ä.) hab ich auch schon gemacht.


Zitat:

Lass doch lieber mit einem Hubschrauber zwischen Deutschland und Österreich fliegen ok???
Naja, wenn du einen toten Harry sehen willst;)
Ich nehm da lieber einen Flächenflieger. Wahrscheinlich die TBM700, weil ich das Cockpit eh noch testen muss, ob im Flug auch alles so funktioniert wie's wirklich sein muss!

Und, wie funktioniert dein Popup Gauge? Damit kannst du jetzt Subpanels auf-poppen:lol:


Schöne Grüße
Harri:cool:

Atze 04.01.2003 02:06

Hallo Harry

Mein Popup Menü ist fast fertig. Naja, dann kannst Du ja mit deiner TBM 700 fliegen und ich mit einem Heli ok???


mfg Atze

harry3 04.01.2003 13:09

Ja, passt gut!


Grüße,
Harri:cool:

Atze 04.01.2003 14:46

Hallo Harry

Kannst Du mir mal deine E-Mail Adresse geben, das wir das ganze nicht gerade im Forum abwickeln mussen???

mfg Atze

harry3 04.01.2003 18:42

E-mail müsste schon bei dir angekommen sein.


mfg
harri:cool:

harry3 11.01.2003 17:55

Hast dein erstes Gauge schon fertiggestellt?

Sollte ja nicht so viel Arbeit sein, den 8-zeiler abzutippen, oder???


mfg
harri:cool:

Atze 15.01.2003 23:16

Moin

Ich habe jetzt ein C Gauge geschrieben und soeine Registry-Datei für das Ding. Aber wie füge ich das alles nun zusammen, kann da mal einer eine Schritt für Schritt Anleitung geben???

@Harry Ja, dat Knöppchen is schon fertig, habe es halt nur noch nicht gepostet, weil ich daran noch einiges verbessern will. Ich will nämlich nicht, das dann jemand lacht und sagt "Das is ja kagge", weil's bis jetzt noch ziemlich komisch aussieht.

mfg Atze

Atze 16.01.2003 21:55

tachchen

Wollte nur nochmal den Beitrag nach oben "poppen" POPUP

mfg Atze

bartels 16.01.2003 22:46

Willst Du in der Registry herummanipulieren oder wie war das gedacht? Ich halte sowas für einigermassen unnötig, aber bei Bedarf kannst Du ja mal ein Blick auf RegOpenKey und dergl. werfen.
Arne Bartels

Atze 16.01.2003 23:32

Hallo

Nein, ich meine das so. Man schreibt erst ein Gauge Source Code und dann muss der noch in einer bestimmten Datei, die ich schon geschrieben habe "anmelden" Nur meine Frage ist, wie compiliere ich den Sourcecode und diese Datei mit den Gauge-Registrierungen und nachher alles zu einem Gauge???

Danke im Vorraus

mfg Atze

bartels 17.01.2003 19:12

Häh, habe ich immer noch nicht kapiert. C kompilierte Gauges sind DLLs mit der Endung .gau und brauchen von keinem Programm oder weiterer Datei registriert werden.
Es gibt im Prinzip zwei Methoden um ein Gauge zu kompilieren (genauer den .c code zu kompilieren, den .rc Ressourcecode kompilieren und mit user32.lib zusammen zum .gau zu binden aka "linken"). Erstens die "makefile" Methode wie im SDK beshrieben, das Makefile an das zu kompilierende Gauge anpassen, auf der Kommandozeile "make" tippen un hoffentlich klappts.
Bei der zweiten Methode lässt man sich die Arbeit von der VC++ IDE abnehmen, indem man ein DLL Projekt erstellt die main.c und main.rc (und nur die!) zum Projekt hinzufügt und "Alles neu erstellen" oder "...gau neu erstellen" drücken und hoffen...
Leicht abgewandelte makefiles für BCC und GCC sind Teil von sd2gau13.zip, die zweite Methode ist auch dort und in "idehowto.zip" beschrieben.
Arne Bartels

harry3 17.01.2003 23:13

Hallo!
 
Also, die Datei, wo alle Subgauges definiert werden, ist die Haupt .c.
In C(++) kenn ich mich nicht aus, also kann ichs dir auch nicht ganz so erklären. Aber hier mal ein Bsp. Hast du eigentlich das SDK von Dai Griffits runtergeladen??? Denn dort steht das alles so super beschrieben!!!

Grüße,
Harri:cool:

Es gibt ganz oben die #include Zeilen. Da inkludiert man einfach mal alles, was irgendwie eine .h Endung hat...


Dann werden eh schon die SubGauges definiert. Ist irgendwie eh selbsterklärend...

Und schließlich noch der Gauge Table Entry: Das ist der Name nachdem Gaugedateinamen, mit dem man das Gauge in der panel.cfg aufruft;z.B:sdk!attitude .
-------------------------------------------------------

#include "..\inc\gauges.h"
#include "..\inc\eventid.h"
#include "oilgauge.h"

//Included gauges list

#define GAUGE_NAME "portoil\0"
#define GAUGEHDR_VAR_NAME gaugehdr_portoilstate
#define GAUGE_W 100

#include "subgauges\port_oil.c"

#define GAUGE_NAME "staroil\0"
#define GAUGEHDR_VAR_NAME gaugehdr_staroilstate
#define GAUGE_W 100

#include "subgauges\star_oil.c"

// Gauge table entries

GAUGE_TABLE_BEGIN()
GAUGE_TABLE_ENTRY(&gaugehdr_portoilstate)
GAUGE_TABLE_ENTRY(&gaugehdr_staroilstate)
GAUGE_TABLE_END()


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

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