PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mehrsprachige Firmware mit $Resource



Mitch64
18.12.2010, 22:07
Hallo,

und gleich zum Thema:

Ich möchte eine 2-sprachige Firmware in Bascom 2.0.2.0 schreiben. Dafür gibt es den Befehl
$Resource, mit dem verwendete Texte im Code exportiert werden können.

Mit dem Resource-Editor wird dann der exportiere Text bearbeitet (übersetzt).

Für die Verwendung des $Resource Statements wird jedoch eine Lib benötigt, die sich "ResourceLanguage.lib" nennt. Diese kann ich jedoch nicht im LIB-Verzeichnis finden.

Auch auf www.mcselec.com kann ich eine solche Lib nicht finden.

In der Bascom-Hilfe steht dazu, dass der Resource-Editor Part vom "Resource Add On" sei. Den Resource-Editor hab ich in der IDE und kann ihn auch verwenden.

Kann mir jemand sagen, woher ich die ResourceLanguage.lib" bekomme.
Eingentlich sollte die bei MCS-Electronic zu finden sein. Kann mir jemand einen Link geben wo die Lib zu beziehen ist?

Hier noch ein Link auf die Bascom-Hilfe mit dem Statement:

http://avrhelp.mcselec.com/resource.htm

Vielen Dank schonmal für eure Hilfe!

Gento
19.12.2010, 10:25
Ich mach da so :




Const Deutsch = 0
Const Englisch = 1
Const Sprache = Deutsch

#if Anzeige_glcd = On
Cls
#if Sprache = Deutsch
Lcdat 1 , 30 , "Grundabgleich"
#endif
#if Sprache = Englisch
Lcdat 1 , 20 , "First comparison"
#endif
Lcdat 2 , 60 , "X"
Lcdat 8 , 60 , "Y"
Line(0 , 16) -(127 , 16) , 1
Line(0 , 35) -(127 , 35) , 1
Line(0 , 54) -(127 , 54) , 1
#endif


lg Gento

Mitch64
19.12.2010, 10:39
Danke für den Vorschlag.

Der Nachteil daran ist, dass während des Betriebs nicht zwischen den Sprachen umgeschaltet werden kann.

Natürlich kann man auch Variablen nehmen, aber die Firmware wird vermutlich etwas umfangreicher und da wird der Code schnell unübersichtlich.

Die Variante mit $RESOURCE finde ich genial.
Deshalb bleibt die Frage, wo man die LIB beziehen kann und was das kostet.

Mitch64
19.12.2010, 16:02
Hat denn keiner eine Idee, woher man resourcelanguage.lib bekommt?

Jaecko
19.12.2010, 17:27
Ist das nicht genau so ein kostenpflichtiges Zusatzdingens wie die I2C-Slave-Lib?

Mitch64
19.12.2010, 17:41
ja, davon gehe ich aus.
Mich interessiert, was es kostet und woher ich es bekommen kann.

stefan_Z
19.12.2010, 20:38
Ich schau nachher mal auf meinem PC nach.. habe eine Originalversion...
Da sind ja auch die ganzen anderen LIBs dabei die im Demo nur als LBX dabei sind.

Mitch64
20.12.2010, 10:02
Wie lange geht eigentlich "nachher"? (Spaß)
Also ich habe auch die Vollversion 2.0.2.0 (Registriert) und da isses nicht dabei.

stefan_Z
20.12.2010, 12:21
Hmm in der Tat kann man den $RESOURCE DUMP nutzen, dann bekommt man das File für den Editor - in dem klickt man rechts zum Import, dann kann man die Übersetzungen einbauen.
Aber beim Compile scheiterts dann - weil eben die resourcelanguage.lib fehlt.

Ich glaube fast, dass die Lib entweder grad überarbeitet wird, oder einfach vergessen wurde. ODER es gibt sie nur als Bückware bei MCS. Wieso auch immer...

Und das habe ich noch gefunden:
http://www.mcselec.com/index2.php?option=com_forum&Itemid=59&page=viewtopic&t=8664&highlight=resourcelanguage+lib
Das Problem ist also nicht neu :-)

Vitis
20.12.2010, 15:39
das $resource läuft auf's Gleiche hinaus wie mit der #if
beim compilieren wird die entsprechende Sprachviariante gesetzt, bzw. die
entsprechenden strings mit den Pendant ersetzt, zur Laufzeit ist da nix
mit Ändern.
Bei mir gehts beim Compilieren tadellos.

...
Now recompile your project and the compiler will handle every string it will find in the resource file (BCR) in a special way. Strings that are not found in the BCR file, are not processed and handled like normal. For example when you have a PRINT "check this out" , and you did not put that in the BCR file, it will show the same no matter which value the LANGUAGE variable has. ...

Mitch64
20.12.2010, 16:48
Frage bleibt, woher bekomme ich die reaourcelanguage.lib und was kostet die.

Gento
20.12.2010, 17:57
Statt if geht's auch eleganter mit Case.
Ein paar Zeilen Tiparbeit nur.

Gento

Mitch64
20.12.2010, 18:01
if will kein Case und kein If, sondern wenns geht $RESOURCE "lang1","lang2" verwenden.

Gento
20.12.2010, 19:37
Und dahinter steckt Deiner Meinung ein Programmgenerator ?
Ohne Eintippen mit Spracherkennung *lol*

Gento

Mitch64
20.12.2010, 20:26
Hallo Gento,

wie das gemacht wird steht in der Hilfe von Bascom.
Was da intern passiert kann ich nur ahnen. Vermutlich werden Stringausgaben auf einen anderen Zeiger gesetzt. Auf welchen Zeiger hängt von der anzuzeigenden Sprache ab.

Wenn du kein Bascom hast, kannst du trotzdem mal in die Hilfe schauen, nämlich Online. Der Link steht ganz oben (1. Eintrag von mir).

Vitis
20.12.2010, 22:02
1. die Lib gibt's nicht, ist im Compiler drinnen was man dazu braucht.
2. Der Text wird beim Kompilieren einfach ersetzt durch die Entsprechungen und das war es, nachträglich wie schon geschrieben, also während des Programmablaufes die gewählte Sprache ändern ist nicht.
Kein geänderter Pointer, oder n Wörterbuch im Hintergrund, nix. Der Text wird einfach ersetzt. BEIM COMPILIEREN.

Mitch64
20.12.2010, 22:22
Wir werden sehen...

Tatsache ist, wenn ich eine Lib generiere, meckert er wegen einem fehlenden Label "_Resourcelanguage". Füge ich auch dies in die Lib ein, benötigt er noch ein Label im Programm namens: _resourcelanguageorg.
Ist beides drin, läßt sich alles kompilieren. Wenn man dann das compilat anschaut, sieht man, dass alle Sprachen ab dem Label _resourcelanguageorg eingefügt wurden.

Die Sprache läßt sich außerdem während der Laufzeit ändern. Die Variable language (wohlgemerkt Variable) lösst sich im Programm setzen. Deshalb sind auch alle Sprachen ab besagtem Label im Programm.
Wenn die Sprache fix währe nach dem compilieren, wozu dann alle Texte in den Sprachen einfügen? Macht dioch gar kein sinn, oder?

Also ich bin davon überzeugt, dass es geht. Fragt sich blos, was die lib macht, bzw. wo man die her bekommt.

Gento
21.12.2010, 02:18
Wenn es eine solche Lib die letzten 8 Jahre bei Bascom dazu gäbe.
Ich hätte die , weil da habe mir Bascom gekauft.

Gento

Mitch64
22.12.2010, 22:11
So, Problem gelöst.
Ich habe die LIB erhalten und das funktioniert soweit ich das beurteilen kann tadellos.

Wie ich vermutet habe, lassen sich die Sprachen während der Laufzeit per Variable einstellen und ändern.

Freu, ich muss jetzt nix mit #IF und #ENDIF rumeiern.

Die Lib gibts bei MCS (nicht im Shop)

stefan_Z
22.12.2010, 23:09
Interessant - das bestärkt meine Meinung von der Bückware...
War das denn jetzt kostenpflichtig, oder einfach nur auf Anfrage?

Mitch64
28.12.2010, 13:55
Ich habe es umsonst bekommen, mit dem Hinweis: Nur für mich!
Ob es grundsätzlich kostenpflichtig ist oder wird (soll ja später mal im Shop sein) weis ich nicht.

Müsst selber bei MCS anfragen.