Entwickler-Ecke

Internet / Netzwerk - SendStr() Puffer leeren ?? (ICS TTnEmulVT)


OliverN_26 - Di 27.03.12 09:49
Titel: SendStr() Puffer leeren ?? (ICS TTnEmulVT)
Hey

Ich verzweifel gleich. Ich verbinde mich mit der ICS "TTnEmulVT" Komponente per telnet auf dem Server. Ich kann den auch steuern und alles machen was ich will, aber wenn ich an die Stelle gelange, wo ich meinen Text einfügen will, sendet er nur die Hälfte. Das komische ist, wenn ich vorher bei der Navigation durch das Menu den ein oder anderen String weglasse, hab ich den am Ende mehr. Gibt es bei "SendStr()" ein Maximum oder kann man/muß man das wieder resetten? Fakt ist, ich kann nicht wahllos "TnEmulVT1.SendStr('Das ist ein Text);" schreiben, da irgendwann nix mehr übertragen wird.

bissl Quellcode:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
procedure TForm1.TnEmulVT1DataAvailable(Sender: TObject; Buffer: Pointer;
  var Len: Integer);
var
  i : Integer;
begin
  if ready = false then begin
    // LogIN Daten (Benutzer / Kennwort)
    TnEmulVT1.SendStr('********' + #9);
    TnEmulVT1.SendStr('********' + #13);

    // evt. nicht geschlossene JOB's schliessen
    for i := 1 to 5 do TnEmulVT1.SendStr(#13);

    // im 'Aktivitäten-Status' anmelden
    TnEmulVT1.SendStr(#54#13);

    // Aufträge laden
    for i := 1 to 25 do TnEmulVT1.SendStr(#71#13);
    TnEmulVT1.SendStr(#32);

    // Auftragsnummer eingeben
    for i := 1 to 6 do TnEmulVT1.SendStr(#9);
    TnEmulVT1.SendStr('389179' + #13);

    // Auftragsinformationen aufrufen
    TnEmulVT1.SendStr('17' + #13);

    // Position anwählen, an die der Text geschrieben wird
    for i := 1 to 7 do TnEmulVT1.SendStr(#6);
    for i := 1 to 7 do TnEmulVT1.SendStr(#9);

    TnEmulVT1.SendStr('Das ist die Kopfzeile' + #9);  // Hier kommt an: "Das ist die Kopfz" .. danach absolut gar nix mehr
    TnEmulVT1.SendStr('Das hier ist der Text');

    ready := true;
  end;
end;


Danke


Narses - Di 27.03.12 10:20

Moin!

Bitte ändere den Titel des Topics, da er wenig über das eigentlich Thema verrät. Hier der entsprechende Absatz aus den Richtlinien:
3.4 Frage formulieren - Der richtige Titel [http://www.entwickler-ecke.de/richtlinien.html]:
Formuliere den Betreff deiner Themen so, dass der Leser (und damit möglicherweise dein Helfer) anhand des Titels bereits weiß, worum es in diesem Topic geht. Titel wie z.B. "Eine Anfängerfrage" oder "Weiß jemand, wie das geht?" machen nicht neugierig auf mehr, ehrlich. Auch "HILFEEEE!!!!" hat sich bisher nicht bewährt. Wenn du ein Topic eröffnest ist es höchstwahrscheinlich, dass du Hilfe brauchst.
Einfach unten in deinem ersten Beitrag auf user defined image klicken und den Titel ändern. Danke dir!

cu
Narses


OliverN_26 - Do 29.03.12 09:19

Keiner ne Idee ???

:-(


Narses - Do 29.03.12 11:39

Moin!

Ich kenne die Komponente nicht, sonst hätte ich schon was dazu geschrieben. :nixweiss:

Ich erinnere mich an die drei großen blauen Buchstaben in irgendeinem Screenshot, mit denen haben wir auch gelegentlich zu tun, da kann man schon mal graue Haare kriegen... :? Ich rate mal, dass der Terminalserver vielleicht nicht mit der Frequenz der Eingaben zurecht kommt, das ist ja eigentlich für manuelle Eingaben gedacht. Mach doch mal für Spaß Einzelzeichenausgabe mit Pause (+APM) dazwischen, ändert das was? Mal eine andere Komponente versucht (IdTelnet?) oder mal mit Wireshark das Protokoll auf Netzwerkebene zwischen Mensch und Maschine verglichen? :idea:

cu
Narses


OliverN_26 - Do 29.03.12 14:20

Da kommt alles richtig, aber mir is vorhin aufgefallen, dass der String am Ende nicht einfach nur nicht mehr gesendet wird, sondern das Programm bricht einfach ab. Ich hab mal einen "SLEEP(500)" reingeschrieben und nu läufts. Sehr komisch und ich verstehs nich, aber es tuts :-)