| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen   | 
	
	
	
		| Autor | 
		Nachricht | 
	
	
		wnagy
 
 
  Anmeldungsdatum: 19.04.2011 Beiträge: 5
 
  | 
		
			
				 Verfasst am: 20.04.2011, 07:59    Titel: FB/Tiger Basic | 
				     | 
			 
			
				
  | 
			 
			
				Hallo,
 
 
ich muss immer wieder TigerBasic Programme erstellen.
 
http://de.wikipedia.org/wiki/Tiger-Basic
 
 
Die Steuerlogik ist meist "einfaches" Basic. TB Spezialitäten kann man mit einer Folge von #defines in den meisten Fällen 'hinkriegen'.
 
 
Zum Testen der Programmlogik ist FB einfach wesentlich konfortabler. Die Hardware-Teile kann/soll/muss man ja sowieso kapseln.
 
 
Hat sich jemand schon damit beschäftigt ich möchte gerne Erfahrungen austauschen.
 
 
\^/ili | 
			 
		  | 
	
	
		| Nach oben | 
		 | 
	
	
		  | 
	
	
		wnagy
 
 
  Anmeldungsdatum: 19.04.2011 Beiträge: 5
 
  | 
		
			
				 Verfasst am: 24.04.2011, 14:17    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				Weiter Überlegungen:
 
 
Problem DIM:
 
 
FB: dim s as String
 
TB: String a
 
 
Ich habe mich ein bisschen mit #DEFINE gespielt. Leider keinen großen Erfolg gehabt. Die Variablen mit
 
 
 	  | Code: | 	 		  #DEFINE FB
 
#IFDEF FB
 
 dim s as String
 
#ELSE
 
 String s
 
#ENDIF | 	  
 
 
zu deklarieren scheint mir ein overkill
 
 
Irgedeine bessere Idee? | 
			 
		  | 
	
	
		| Nach oben | 
		 | 
	
	
		  | 
	
	
		MOD Fleißiger Referenzredakteur
  
  Anmeldungsdatum: 10.09.2007 Beiträge: 1003
 
  | 
		
			
				 Verfasst am: 24.04.2011, 14:56    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				Ich weiß nicht genau was du eigentlich vorhast, willst du TB in FB umwandeln, umgekehrt oder beides parallel laufen lassen? Erklär doch bitte mal dein Vorhaben genauer.
 
 
Zum Thema Deklarieren wäre sowas möglich:
 
 	  | Code: | 	 		  #Define FreeBASIC
 
 
#Macro decl(typ, variable)
 
   #If Defined(FreeBASIC)
 
      Dim variable As typ
 
   #ElseIf Defined(TigerBasic)
 
      typ variable
 
   #Else
 
      #Print Sprache nicht bekannt
 
   #EndIf
 
#EndMacro
 
 
decl(String, s) | 	  
 
 
Der Code spuckt jetzt je nachdem was definiert wurde die richtige Deklaration aus, vorausgesetzt natürlich, der Präprozessor von TB funktioniert genauso. Alternativ einfach an FB mit Option -pp übergeben. FB löst dann die Präprozessor-Befehle auf, wird zwar dann einen Compilerfehler melden, aber den aufgelösten Code in eine Datei speichern. | 
			 
		  | 
	
	
		| Nach oben | 
		 | 
	
	
		  | 
	
	
		wnagy
 
 
  Anmeldungsdatum: 19.04.2011 Beiträge: 5
 
  | 
		
			
				 Verfasst am: 24.04.2011, 17:58    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				| DANKE! | 
			 
		  | 
	
	
		| Nach oben | 
		 | 
	
	
		  | 
	
	
		wnagy
 
 
  Anmeldungsdatum: 19.04.2011 Beiträge: 5
 
  | 
		
			
				 Verfasst am: 24.04.2011, 18:12    Titel: Erklärung | 
				     | 
			 
			
				
  | 
			 
			
				Ich schreib öffters für den Tiger Einplatinencomputer Programme. Diese haben verschiedene Aufgaben. Meist werden diese als Protokollumsetzer in Industriedrucker (Da wird auf Stahlrohre, Plastikteile, Auto Hinterachsen - aber nicht auf Papier) gedruckt. Der Druckcode besteht aus einer Steuersequenz sowas wien <stx>TMUTTERROHR<lf>11.222.3</etx> und wird in einem anderen Steuerkode umgewandelt. Dabei sind noch externe Schnittstellen usw zu beachten. Auch kommt es vor, dass der Input von verschiedenen Quellen kommt. 
 
Kurz und gut ein elendigliches Gefummel auf den RS232 Schnittstellen.
 
 
Die Verarbeitungslogik ist, wie ihr sehen könnt manchmal ziemlich komplex.
 
 
Das ganze wird dann auf den Einplatinencomputer gespielt. Ein Übertrag dauert mehr als 60 Sekunden. Auf dem SBC befinden sich nur zwei RS232 das macht das debugging zu einem Ratespiel.
 
 
Ich schreibe den Hauptteil  - ohne den Hardwarekram - in FB. Da kann ich dann Unittest usw. machen. Danach übertrage ich den Code in TB. 
 
 
Es gibt kleine aber entscheidende Unterschiede im Syntax. 
 
 
So wie es mir im Augenblick scheint gibt es zwei Methoden.
 
Ein Gefummel mit #DEFINEs oder eine Umwandlungsprogramm, welches das File von .BAS in .TIG umwandelt. | 
			 
		  | 
	
	
		| Nach oben | 
		 | 
	
	
		  | 
	
	
		MilkFreeze
 
  
  Anmeldungsdatum: 22.04.2011 Beiträge: 116
 
  | 
		
			
				 Verfasst am: 24.04.2011, 18:35    Titel: Re: Erklärung | 
				     | 
			 
			
				
  | 
			 
			
				 	  | wnagy hat Folgendes geschrieben: | 	 		  Ich schreibe den Hauptteil  - ohne den Hardwarekram - in FB. Da kann ich dann Unittest usw. machen. Danach übertrage ich den Code in TB. 
 
 
Es gibt kleine aber entscheidende Unterschiede im Syntax. 
 
 
So wie es mir im Augenblick scheint gibt es zwei Methoden.
 
Ein Gefummel mit #DEFINEs oder eine Umwandlungsprogramm, welches das File von .BAS in .TIG umwandelt. | 	  
 
 
Das "Gefummel mit den #DEFINEs" dürfte weniger Aufwändig sein, als ein programm zu schreiben das dir FB-Code übersetzt. Für einen Übersetzer müsstest du einen Parser schreiben, dann die Befehle zerlegen und in der richtigen Syntax wieder zusammen schrauben. Die DEFINE-Lösung dürfte weniger Zeitaufwändig sein.
 
 
Ich weiß natürlich nicht wie groß die Unterschiede sind. Wenn die Unterschiede zu groß sind, wirst du mit der DEFINE-Lösung nicht sehr weit kommen...
 
 
ich hoffe ich konnte dir weiterhelfen. _________________ Milch ftw   | 
			 
		  | 
	
	
		| Nach oben | 
		 | 
	
	
		  | 
	
	
		nemored
 
  
  Anmeldungsdatum: 22.02.2007 Beiträge: 4712 Wohnort: ~/
  | 
		
			
				 Verfasst am: 24.04.2011, 19:37    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				Der Unterschied ist, dass du das "#DEFINE-Gefummle" immer wieder aufs neue machen musst, den Umwandler aber nur einmal. Muss doch auch kein Parser sein. Für "DIM AS STRING variable" -> "STRING variable" z. B. reicht ein ganz einfaches suchen+ersetzen. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. | 
			 
		  | 
	
	
		| Nach oben | 
		 | 
	
	
		  | 
	
	
		MilkFreeze
 
  
  Anmeldungsdatum: 22.04.2011 Beiträge: 116
 
  | 
		
			
				 Verfasst am: 24.04.2011, 22:04    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				 	  | nemored hat Folgendes geschrieben: | 	 		  | Der Unterschied ist, dass du das "#DEFINE-Gefummle" immer wieder aufs neue machen musst, den Umwandler aber nur einmal. Muss doch auch kein Parser sein. Für "DIM AS STRING variable" -> "STRING variable" z. B. reicht ein ganz einfaches suchen+ersetzen. | 	  
 
 
Stimmt nicht so ganz. Er könnt das "#DEFINE-Gefummle" auch in eine .bi-Datei verlagern und müsste so das ganze nur einmal machen (bei jedem weiterem Code nur das Include setzen und fertig). _________________ Milch ftw   | 
			 
		  | 
	
	
		| Nach oben | 
		 | 
	
	
		  | 
	
	
		wnagy
 
 
  Anmeldungsdatum: 19.04.2011 Beiträge: 5
 
  | 
		
			
				 Verfasst am: 25.04.2011, 19:24    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				Danke für die Vorschläge.
 
 
Es geht nich allein um die defines es müssen noch andere Änderungen vorgenommen werden. 
 
z.B.
 
 
select case x
 
  case ...
 
 
durch switch x
 
  case
 
 
 
Ein vollständiges Parsen und erstzen ist nicht unbedingt notwendig. Ich denke, dass ich mit RegEx auskomme.
 
 
Es muss ja nicht unbedingt eine 100% Übersetzung sein.
 
 
Danke jedenfalls...
 
 
 
\^/ili | 
			 
		  | 
	
	
		| Nach oben | 
		 | 
	
	
		  | 
	
	
		 |