Stringlänge nur 255?

Gast #446786
Lesenswert?

Hallo an alle,

Ich habe folgendes Problem:
Ich generiere in meinem Programm einen String (mit & in einer 
for-Schleife) der ca. 600 Zeichen lang ist. Zum Test gebe ich den String 
auch in einer Textbox aus. Dort hat er die korrekte Länge. Diesen String 
möchte ich dann über die RS232 übertragen. Doch es werden nur 255 
Zeichen übertragen. Auch wenn ich mir den String im Überwachungsfenster 
ansehe, ist er nur 255 Zeichen lang. Ich dachte Strings könnten bis zu 
2^31 Zeichen enthalten? Was ist da los?

Ich programmiere mit VisualBasic 6.

Danke für eure Hilfe!

mfg
Andy
Gast #446996
Lesenswert?

lies richtig was er geschrieben hat.
> Diesen String
> möchte ich dann über die RS232 übertragen. Doch es werden nur 255
> Zeichen übertragen.
 durch die RS232 kannst du kein 600 auf einmal senden, da musst du 2*255 
+ rest senden.


Gast #447008
Lesenswert?

Didi, sorry, aber das ist ja was völlig neues.
Was hat die Framelänge mit der Wortbreite zu tun?

@Andy: Wie stellst Du fest, wieviele Zeichen übertragen werden? 
Vielleicht liegt das Problem beim Empfänger.
#447098
Lesenswert?

Das hat aber nichts damit zu tun.
Die UART hat keine Beschränkung hinsichtlich der Länge.
Das liegt vor allem daran, dass es auf der Ebene der UART
keine Datenpakete mehr gibt. Da ist alles nur
noch ein Bytestrom. Byte wird der UART übergeben -> Byte
wird gesendet. Byte wird empfangen -> Empfänger kann sich
das Byte abholen.

Eine RS232 ist normalerweise eine UART
UART steht für: Universal Asynchronous Receiver Transmitter.
Genau das trifft auf eine RS232 zu.
Das 'normalerweise' habe ich geschrieben, weil man eine RS232
theoretisch auch synchron betreiben kann. Ist mir allerdings
noch nie untergekommen (was nicht heist, dass es niemand
machen würde).
Gast #447104
Lesenswert?

@didi:

Genau.Und zwar immer ein wort fester Länge (üblicherweise 8 Bit) 
zusammen mit einem Start und einem (oder 1.5) Stopbit(s) und eventuell 
einem Paritätsbit.Das wäre dann 1 Byte,was in die UART geschrieben 
wird,in Hardware seriell herausgetaktet und wieder in Hardware im 
Empfänger zusammen gesetzt wird.Das ganze wird dann so oft wie nötig 
wiederholt,Byte für Byte.Mit einem Oszi kann man dann die Bits auf der 
Leitung springen sehen,im Sender/Empfänger wird allerdings nur Wortweise 
gearbeitet.Man kann damit natürlich deutlich mehr als 255 Bytes 
übertragen,allerdings benötigt jedes Byte eine fest definierte Zeit (bei 
9600Baud,1Stopbit,8Datenbits z.B etwas über 1ms pro Byte).

Der Fehler liegt dann eher an anderer Stelle.Ein Pascal-string z.B. hat 
die Länge im 1.Byte stehen und kann damit maximal 255 Zeichen lang 
sein.Oder im Empfänger ist ein Ringpuffer zu klein bzw. es wird in dem 
Empfangsarray nur mit einem char adressiert.Um das zu testen kannst du 
ja mal die com1 am PC per Nullkabel an die com2 hängen und im 
Terminalprogramm schauen,ob alles gesendet wird.Wenn ja muss das Problem 
beim Empfänger (Mikrocontroller? anderer PC?) liegen.
Gast #447111
Lesenswert?

@Karl-Heinz:

Soweit ich weiss (man möge mich da korrigieren,falls ich mich irre),sind 
bei UART (universal asynchronous Receiver Transmitter) keine Pegel 
vorgegeben,lediglich eine grobe Vorgabe was Start/Stopbit und Parität 
angeht. Beim RS232 Standart hingegen sind dann die entsprechenden Pegel 
festgelegt und Empfehlungen für Steckerbelegungen,Kabellängen,etc 
gegeben.
Gast #447129
Lesenswert?

@Karl
ist klar senden und empfangen.
deshalb habe ich ihn auch gesagt er sendet erstmal 255, dann nochmal 255 
das sind 500 dann der rest 100. damit hat er sein 600 schon komplt 
gesendet.

@Ronny
war professionel erklärt. :)
Gast #447500
Lesenswert?

Didi: Nein, man kann die 600 direkt senden. Die Begrenzung des 
Zahlenbereichs (0-255) von "8-Bit" hat nichts, aber auch garnichts damit 
zu tun, wieviele Bytes man senden möchte. Das ist alles eine Frage der 
Software, die Hardware beschränkt da nichts. Aber solange man von Andy 
nicht erfährt, welche Software er benutzt, kann man ihm leider nicht 
weiterhelfen.

Außerdem ist 255+255 immer noch 510 ;-)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren