Seite 1 von 2

Daten einlesen und Buchstaben bilden...

Verfasst: 01.10.2014 13:25
von funkheld
Hallo, guten Tag.

In einer Textdatei befinden sich folgende Werte untereinander :
00 60 10 14 64 07 84 07
F7 F7 F7 F7 F7 F7 F7 F7
00 24 34 22 22 71 01 80
00 74 84 72 82 71 01 80
00 F4 14 72 82 71 01 80

Jede Reihe bildet ein Buchstabe aus 8 Byte untereinander.

Wie kann man diese Textdatei bitte auslesen und die Buchstaben dann im Screen anschauen ?

Danke.

Gruss

Re: Daten einlesen und Buchstaben bilden...

Verfasst: 01.10.2014 13:27
von NicTheQuick
Ich verstehe den Satz hier nicht:
funkheld hat geschrieben:Jede Reihe bildet ein Buchstabe aus 8 Byte untereinander.
Geht das etwas genauer? Danke.

Re: Daten einlesen und Buchstaben bilden...

Verfasst: 01.10.2014 14:30
von funkheld
Jede Textreihe hat 8 Byte für einen Buchstaben.
Die Bits vom 1. Byte stellen die oberste Reihe des Buchstaben dar.
8x die Bytes untereinander geschrieben stellen dann den einen Buchstaben dar.

Ich möchte erstmal den Text (Hexwerte) auslesen und dann immer von 8 Bytes einen Buchstaben auf dem Screen zum
beurteilen darstellen.

Danke.
Gruss

Re: Daten einlesen und Buchstaben bilden...

Verfasst: 01.10.2014 15:37
von STARGÅTE
sry funkheld du wirfst hier Bits, Bytes und Buchstaben völlig durcheinander.

Klarstellung:
Ein Buchstabe besteht im allgemeinen (Ascii-Modus) aus einem Byte.
Ein Byte besteht immer aus 8 Bits.
Zwei Hexadezimalziffern (wie du sie dort zu stehen hast) stellen ein Byte dar.

Du kannst nun mit Chr(Val("$34")) einen Buchstaben aus zwei Hexadezimalziffern zurück wandeln.
Dann würde nach deinem Beispiel in jeder Zeile 8 Buchstaben stehen!
(Wobei gleich der anfang 00, schon mal kein Buchstabe im eigentlichen Sinne ist)

Re: Daten einlesen und Buchstaben bilden...

Verfasst: 01.10.2014 16:58
von NicTheQuick
Ich glaube eher du verstehst funkheld falsch.
Er hat 8 Bytes pro Zeile und jede Zeile stellt einen Buchstaben dar. Seine erste Zeile war folgende:

Code: Alles auswählen

00 60 10 14 64 07 84 07 
Schlüsselt man nun jedes dieser Bytes in seiner Binärdarstellung auf stellt sie untereinander, sieht es so aus:

Code: Alles auswählen

00000000
00111100
00001010
00001110
01000000
00000111
01010100
00000111
Machen wir mal aus den Nullen Leerzeichen, steht das hier:

Code: Alles auswählen

        
  1111  
    1 1 
    111 
 1      
     111
 1 1 1  
     111
Da erkenne ich zwar noch keinen Buchstaben, aber das scheint damit gemeint zu sein.

Re: Daten einlesen und Buchstaben bilden...

Verfasst: 01.10.2014 17:25
von funkheld
Dieser Kasten besteht aus (Hex):
ff-81-81-81-81-81-81-ff

------------
11111111
10000001
10000001
10000001
10000001
10000001
10000001
11111111
--------------

Jede Reihe ist ein Buchstabe, es sind 128 Buchstaben, so sieht die Texdatei aus :

00 60 10 14 64 07 84 07
F7 F7 F7 F7 F7 F7 F7 F7
00 24 34 22 22 71 01 80
00 74 84 72 82 71 01 80
00 F4 14 72 82 71 01 80
00 F4 84 42 22 11 01 80
00 C0 21 C0 00 00 00 00
00 00 80 80 F7 80 80 F7
00 00 01 02 F7 02 01 00
00 00 E3 14 14 E3 00 00
00 00 80 00 F7 00 80 00
00 80 80 80 94 A2 C1 80
F7 00 00 00 00 00 00 00
00 F7 00 00 00 00 00 00
00 00 F7 00 00 00 00 00
00 00 00 F7 00 00 00 00
00 00 00 00 F7 00 00 00
00 00 00 00 00 F7 00 00
00 00 00 00 00 00 F7 00
00 00 00 00 00 00 00 F7
00 00 00 60 90 90 90 60
00 00 00 20 30 20 20 70
00 00 00 70 80 60 10 F0
00 00 00 70 80 60 80 70
00 00 00 40 60 50 F0 40
00 00 00 F0 10 70 80 70
00 00 00 E0 10 70 90 60
00 00 00 F0 80 40 20 10
00 00 00 60 90 60 90 60
00 00 00 60 90 E0 80 70
00 E7 F2 F2 E2 82 82 82
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 80 80 80 80 80 00 80
00 41 41 41 00 00 00 00
00 41 41 F7 41 F7 41 41
00 14 C1 22 22 22 C1 14
00 34 32 01 80 40 26 16
00 C1 22 41 80 45 22 C5
00 03 01 80 00 00 00 00
00 02 01 80 80 80 01 02
00 20 40 80 80 80 40 20
00 80 94 A2 C1 A2 94 80
00 00 80 80 F7 80 80 00
00 00 00 00 00 03 01 80
00 00 00 00 F7 00 00 00
00 00 00 00 00 00 81 81
00 04 02 01 80 40 20 10
00 C1 22 15 94 54 22 C1
00 80 C0 A0 80 80 80 E3
00 E1 12 04 83 60 10 F7
00 F7 02 01 03 04 14 E3
00 01 81 41 21 F7 01 01
00 F7 10 D3 34 04 14 E3
00 C3 24 10 D3 34 24 C3
00 F7 04 02 01 80 40 20
00 E3 14 14 E3 14 14 E3
00 E1 12 16 E5 04 12 E1
00 00 81 81 00 00 81 81
00 00 81 81 00 81 01 80
00 02 01 80 40 80 01 02
00 00 00 F7 00 F7 00 00
00 20 40 80 01 80 40 20
00 E3 14 04 83 80 00 80
00 E3 14 17 94 93 10 E3
00 80 41 22 14 F7 14 14
00 F3 24 24 E3 24 24 F3
00 C3 24 10 10 10 24 C3
00 F3 24 24 24 24 24 F3
00 F7 10 10 F1 10 10 F7
00 F7 10 10 F1 10 10 10
00 E3 14 10 17 14 14 E3
00 14 14 14 F7 14 14 14
00 E3 80 80 80 80 80 E3
00 04 04 04 04 04 14 E3
00 14 13 D0 30 D0 13 14
00 10 10 10 10 10 10 F7
00 14 36 55 94 14 14 14
00 14 34 54 94 15 16 14
00 E3 14 14 14 14 14 E3
00 F3 14 14 F3 10 10 10
00 E3 14 14 14 15 12 E5
00 F3 14 14 F3 11 12 14
00 E3 14 10 E3 04 14 E3
00 F7 80 80 80 80 80 80
00 14 14 14 14 14 14 E3
00 14 14 22 22 41 41 80
00 14 14 14 94 94 55 22
00 14 22 41 80 41 22 14
00 14 22 41 80 80 80 80
00 F7 02 01 80 40 20 F7
00 E3 60 60 60 60 60 E3
00 10 20 40 80 01 02 04
00 E3 03 03 03 03 03 E3
00 80 41 22 00 00 00 00
00 00 00 00 00 00 00 F7
00 C0 80 01 00 00 00 00
00 00 00 E3 04 E7 14 E7
00 10 10 D3 34 14 34 D3
00 00 00 E3 14 10 10 E7
00 04 04 E5 16 14 16 E5
00 00 00 E1 12 F7 10 E3
00 03 84 C1 80 80 80 80
00 00 00 C5 22 C3 12 E1
00 10 10 F3 14 14 14 14
00 80 00 C0 80 80 80 E3
00 04 00 04 04 04 12 E1
00 10 10 11 90 50 11 14
00 C0 80 80 80 80 80 C1
00 00 00 73 94 94 94 94
00 00 00 D3 34 14 14 14
00 00 00 E3 14 14 14 E3
00 00 00 D3 34 F3 10 10
00 00 00 E5 16 E7 04 04
00 00 00 93 64 20 20 20
00 00 00 E3 10 E3 04 F3
00 40 40 E0 40 40 42 81
00 00 00 12 12 12 12 E5
00 00 00 14 14 22 41 80
00 00 00 14 14 94 55 22
00 00 00 12 21 C0 21 12
00 00 00 14 22 41 80 60
00 00 00 F7 02 C1 20 F7
00 07 80 80 60 80 80 07
00 80 80 80 80 80 80 80
00 70 80 80 03 80 80 70
00 44 A2 11 00 00 00 00
00 00 00 00 00 00 00 00


Diese möchte ich einlesen und darstellen.

Danke.
Gruss

Re: Daten einlesen und Buchstaben bilden...

Verfasst: 01.10.2014 17:43
von priverteer
Also, wenn jeder Buchstabe aus 8 Byte besteht, dann könnte es sich möglichweise um Grafikbuchstaben handeln. 8x8

Re: Daten einlesen und Buchstaben bilden...

Verfasst: 01.10.2014 17:47
von Derren
Mit ReadString() jede Zeile einlesen.
Mit Mid() die Bytes auslesen
Mit Bin(Val("$"+byte), #PB_Byte) in einen binären String verwandeln (also 10101010 oder was auch immer).
Dann kannst du wiederum mit Mid() auslesen ob's ne 1 oder ne 0 ist und entsprechend deinen Pixel malen.

edit: Ach, die Bytes sind ja Leerzeichen getrennt, dann geht auch Stringfield() /edit

Geht bestimmt auch einfacher, aber das hier wäre die anfängerfreundlichste Lösung, denn so schwer ist die Aufgabe nicht.
Ich hoffe du weißt, wie du den Buchstaben dann darstellst, im Screen. Gibt ja Zig Möglichkeiten dazu. Z.B. jeden einzelnen Pixel zeichnen, oder eine Box für größere Dastellungen oder ein Sprite für 1 und für 0 anzeigen...

Re: Daten einlesen und Buchstaben bilden...

Verfasst: 01.10.2014 19:52
von STARGÅTE
kA ob es das ist was du willst.
Ich erkenne immer noch keine Buchstaben.

Code: Alles auswählen

; Zeilenumbruch: CRLF
; Fileformat: Ascii

Enumeration
	#Window
	#Gadget
	#File
EndEnumeration

If ReadFile(#File, #PB_Compiler_File)
	Define Input.s = ReadString(#File, #PB_File_IgnoreEOL)
	Define Start.i = FindString(Input, "CompilerIf #False"+#CRLF$)+Len( "CompilerIf #False"+#CRLF$)
	Define Ende.i  = FindString(Input, #CRLF$+"CompilerEndIf", Start)
	Input = Mid(Input, Start, Ende-Start)
EndIf


#Size = 3

OpenWindow(#Window, 0, 0, 800, 600, "WindowTitle", #PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)
CanvasGadget(#Gadget, 0, 0, WindowWidth(#Window), WindowHeight(#Window))

If StartDrawing(CanvasOutput(#Gadget))
	I = 1
	While StringField(Input, I, #CRLF$)
		For J = 1 To 8
			Define Bin.s = Bin(Val("$"+StringField(StringField(Input, I, #CRLF$), J, " ")), #PB_Byte)
			For K = 1 To 8
				If Mid(Bin, K, 1) = "1"
					Box(((I%10)*9+K)*#Size, (J+10*Int(I/10))*#Size, #Size, #Size, 0)
				EndIf
			Next
		Next
		I + 1
	Wend
	StopDrawing()
EndIf


Repeat
	
	Select WaitWindowEvent()
			
		Case #PB_Event_CloseWindow
			End
			
		Case #PB_Event_Gadget
			Select EventGadget()
			EndSelect
			
	EndSelect
	
ForEver

CompilerIf #False
00 60 10 14 64 07 84 07 
F7 F7 F7 F7 F7 F7 F7 F7 
00 24 34 22 22 71 01 80 
00 74 84 72 82 71 01 80 
00 F4 14 72 82 71 01 80 
00 F4 84 42 22 11 01 80 
00 C0 21 C0 00 00 00 00 
00 00 80 80 F7 80 80 F7 
00 00 01 02 F7 02 01 00 
00 00 E3 14 14 E3 00 00 
00 00 80 00 F7 00 80 00 
00 80 80 80 94 A2 C1 80 
F7 00 00 00 00 00 00 00 
00 F7 00 00 00 00 00 00 
00 00 F7 00 00 00 00 00 
00 00 00 F7 00 00 00 00 
00 00 00 00 F7 00 00 00 
00 00 00 00 00 F7 00 00 
00 00 00 00 00 00 F7 00 
00 00 00 00 00 00 00 F7 
00 00 00 60 90 90 90 60 
00 00 00 20 30 20 20 70 
00 00 00 70 80 60 10 F0 
00 00 00 70 80 60 80 70 
00 00 00 40 60 50 F0 40 
00 00 00 F0 10 70 80 70 
00 00 00 E0 10 70 90 60 
00 00 00 F0 80 40 20 10 
00 00 00 60 90 60 90 60 
00 00 00 60 90 E0 80 70 
00 E7 F2 F2 E2 82 82 82 
00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 
00 80 80 80 80 80 00 80 
00 41 41 41 00 00 00 00 
00 41 41 F7 41 F7 41 41 
00 14 C1 22 22 22 C1 14 
00 34 32 01 80 40 26 16 
00 C1 22 41 80 45 22 C5 
00 03 01 80 00 00 00 00 
00 02 01 80 80 80 01 02 
00 20 40 80 80 80 40 20 
00 80 94 A2 C1 A2 94 80 
00 00 80 80 F7 80 80 00 
00 00 00 00 00 03 01 80 
00 00 00 00 F7 00 00 00 
00 00 00 00 00 00 81 81 
00 04 02 01 80 40 20 10 
00 C1 22 15 94 54 22 C1 
00 80 C0 A0 80 80 80 E3 
00 E1 12 04 83 60 10 F7 
00 F7 02 01 03 04 14 E3 
00 01 81 41 21 F7 01 01 
00 F7 10 D3 34 04 14 E3 
00 C3 24 10 D3 34 24 C3 
00 F7 04 02 01 80 40 20 
00 E3 14 14 E3 14 14 E3 
00 E1 12 16 E5 04 12 E1 
00 00 81 81 00 00 81 81 
00 00 81 81 00 81 01 80 
00 02 01 80 40 80 01 02 
00 00 00 F7 00 F7 00 00 
00 20 40 80 01 80 40 20 
00 E3 14 04 83 80 00 80 
00 E3 14 17 94 93 10 E3 
00 80 41 22 14 F7 14 14 
00 F3 24 24 E3 24 24 F3 
00 C3 24 10 10 10 24 C3 
00 F3 24 24 24 24 24 F3 
00 F7 10 10 F1 10 10 F7 
00 F7 10 10 F1 10 10 10 
00 E3 14 10 17 14 14 E3 
00 14 14 14 F7 14 14 14 
00 E3 80 80 80 80 80 E3 
00 04 04 04 04 04 14 E3 
00 14 13 D0 30 D0 13 14 
00 10 10 10 10 10 10 F7 
00 14 36 55 94 14 14 14 
00 14 34 54 94 15 16 14 
00 E3 14 14 14 14 14 E3 
00 F3 14 14 F3 10 10 10 
00 E3 14 14 14 15 12 E5 
00 F3 14 14 F3 11 12 14 
00 E3 14 10 E3 04 14 E3 
00 F7 80 80 80 80 80 80 
00 14 14 14 14 14 14 E3 
00 14 14 22 22 41 41 80 
00 14 14 14 94 94 55 22 
00 14 22 41 80 41 22 14 
00 14 22 41 80 80 80 80 
00 F7 02 01 80 40 20 F7 
00 E3 60 60 60 60 60 E3 
00 10 20 40 80 01 02 04 
00 E3 03 03 03 03 03 E3 
00 80 41 22 00 00 00 00 
00 00 00 00 00 00 00 F7 
00 C0 80 01 00 00 00 00 
00 00 00 E3 04 E7 14 E7 
00 10 10 D3 34 14 34 D3 
00 00 00 E3 14 10 10 E7 
00 04 04 E5 16 14 16 E5 
00 00 00 E1 12 F7 10 E3 
00 03 84 C1 80 80 80 80 
00 00 00 C5 22 C3 12 E1 
00 10 10 F3 14 14 14 14 
00 80 00 C0 80 80 80 E3 
00 04 00 04 04 04 12 E1 
00 10 10 11 90 50 11 14 
00 C0 80 80 80 80 80 C1 
00 00 00 73 94 94 94 94 
00 00 00 D3 34 14 14 14 
00 00 00 E3 14 14 14 E3 
00 00 00 D3 34 F3 10 10 
00 00 00 E5 16 E7 04 04 
00 00 00 93 64 20 20 20 
00 00 00 E3 10 E3 04 F3 
00 40 40 E0 40 40 42 81 
00 00 00 12 12 12 12 E5 
00 00 00 14 14 22 41 80 
00 00 00 14 14 94 55 22 
00 00 00 12 21 C0 21 12 
00 00 00 14 22 41 80 60 
00 00 00 F7 02 C1 20 F7 
00 07 80 80 60 80 80 07 
00 80 80 80 80 80 80 80 
00 70 80 80 03 80 80 70 
00 44 A2 11 00 00 00 00 
00 00 00 00 00 00 00 00 
CompilerEndIf

Re: Daten einlesen und Buchstaben bilden...

Verfasst: 02.10.2014 08:00
von Chimorin
Das soll wohl einen kleinen Zeichensatz ergeben. Ich erkenne Alphabete, einmal groß, einmal klein und ein paar andere Zeichen.