[Delphi] jalcds besturen

Pagina: 1
Acties:
  • 106 views sinds 30-01-2008
  • Reageer

Acties:
  • 0 Henk 'm!

  • Biglines
  • Registratie: September 2003
  • Laatst online: 28-02-2011

Biglines

Biglines.nl

Topicstarter
hallo, ik ben bezig met een lcd menu voor mijn pc, zodat ik mbv een paar buttons winamp/jalcds kan besturen.

zoals op http://www.jalcds.de/file...P-IP-Interface%20v3.0.pdf te vinden is, kan dit dmv tcp-ip.

op mijn pc draait:
• Winamp 2.91
• jalcds 3.11
• Winampcommcontrol (om de knoppen te besturen, wordt later nog in dit delphi progje ingebakken)
• Dit delphi progje

ik haal de menu's uit een txt file, dat is geen probleem, het probleem is dat ik via tcp/ip command wil sturen naar jaLCDs.

Weet iemand hoe? (dmv bijvoorbeeld een function die het stuurt en reply trugzet in Tstringlist?)

edit:

delphi 7 console app

[ Voor 4% gewijzigd door Biglines op 23-03-2004 14:56 ]

Konica Minolta Dynax 7D | Mijn foto gallery | Biglines.nl


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 17:03

Creepy

Tactical Espionage Splatterer

Heb je al gekeken naar de TCP componenten bij Delphi?

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • Biglines
  • Registratie: September 2003
  • Laatst online: 28-02-2011

Biglines

Biglines.nl

Topicstarter
de help van delphi is nogal onduidelijk, ik vind wel een hoop over tcp dingetjes, maar zou bij god niet weten hoe ik dat zou moeten openen, sturen, ontvangen etc.

het is toch mogelijk om gewoon localhost te gebruiken?


(pas begonnen met delphi)

[ Voor 7% gewijzigd door Biglines op 23-03-2004 15:06 ]

Konica Minolta Dynax 7D | Mijn foto gallery | Biglines.nl


Acties:
  • 0 Henk 'm!

  • Biglines
  • Registratie: September 2003
  • Laatst online: 28-02-2011

Biglines

Biglines.nl

Topicstarter
Hoe moet ik dan ook de poort (een van: 9830-9834) instellen?

Konica Minolta Dynax 7D | Mijn foto gallery | Biglines.nl


Acties:
  • 0 Henk 'm!

  • Biglines
  • Registratie: September 2003
  • Laatst online: 28-02-2011

Biglines

Biglines.nl

Topicstarter
hier is een vb voorbeeld progje, iemand enig idee hoe ik dit in delphi doe?
edit:

hier hele zipfile met alle bestanden van dit voorbeeldprogje:
http://www.jalcds.de/dl.php?id=1020884995


code:
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
VERSION 5.00
Object = "{248DD890-BB45-11CF-9ABC-0080C7E7B78D}#1.0#0"; "mswinsck.ocx"
Begin VB.Form Form1 
   Caption         =   "jaLCDs TCP-IP-Interface Beispiel"
   ClientHeight    =   1380
   ClientLeft      =   60
   ClientTop       =   360
   ClientWidth     =   3930
   LinkTopic       =   "Form1"
   ScaleHeight     =   1380
   ScaleWidth      =   3930
   StartUpPosition =   3  'Windows-Standard
   Begin VB.Timer timeout 
      Enabled         =   0   'False
      Interval        =   3000
      Left            =   2280
      Top             =   840
   End
   Begin MSWinsockLib.Winsock winsock 
      Left            =   2580
      Top             =   780
      _ExtentX        =   741
      _ExtentY        =   741
      _Version        =   393216
      RemoteHost      =   "127.0.0.1"
      RemotePort      =   9830
   End
   Begin VB.CommandButton Command2 
      Caption         =   "Ende"
      Height          =   315
      Left            =   180
      TabIndex        =   3
      Top             =   960
      Width           =   3555
   End
   Begin VB.CommandButton Command1 
      Caption         =   "setzen"
      Height          =   375
      Left            =   2400
      TabIndex        =   2
      Top             =   300
      Width           =   1335
   End
   Begin VB.TextBox varwert 
      Height          =   315
      Left            =   180
      TabIndex        =   1
      Text            =   "Wert"
      Top             =   480
      Width           =   1995
   End
   Begin VB.TextBox varname 
      Height          =   285
      Left            =   180
      TabIndex        =   0
      Text            =   "Variablenname"
      Top             =   120
      Width           =   1995
   End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Private Sub Command1_Click()
If varname.Text = "" Or varwert.Text = "" Then Exit Sub 'falls nichts eingegeben wurde, Übertragung gar nicht erst starten
winsock.Connect 'Mittels Winsock-Element eine Verbindung zu jaLCDs aufbauen, IP-Adresse und Port sind bereits in den Eigenschaften des Elements eingestellt

timeout.Enabled = True 'den Timer fürs Timeout aktivieren
Do
    DoEvents
Loop Until rcvddata <> "" Or timeout.Enabled = False 'so lange warten, bis entweder Daten ankommen oder das Timeout erreicht wurde
rcvddata = ""
If timeout.Enabled = False Then 'Im Falle eines Timeouts eine Fehlermeldung erzeugen
    MsgBox "jaLCDs konnte nicht kontaktiert werden!"
    Exit Sub
End If
timeout.Enabled = False
'ab hier sind die beiden Begrüßungszeilen nach Verbindungsaufbau fertig übertragen

winsock.SendData "setvar " + varname.Text + " " + varwert.Text & (Chr$(13) & Chr$(10)) 'Befehl, die Variable zu setzen, wird übertragen

timeout.Enabled = True
Do
    DoEvents
Loop Until rcvddata <> "" Or timeout.Enabled = False 'erneut so lange warten, bis entweder Daten ankommen oder das Timeout erreicht wurde
timeout.Enabled = False
MsgBox rcvddata 'die Antwort von jaLCDs ausgeben
rcvddata = ""
winsock.Close 'Die Verbindung wieder trennen (Anm: die Verbindung muss nicht zwingend mit "exit" getrennt werden, dies hier hat denselben Effekt
End Sub

Private Sub Command2_Click()
End
End Sub

Private Sub timeout_Timer()
timeout.Enabled = False 'wenn das Timeout erreicht ist, den Timer wieder deaktivieren
End Sub

Private Sub winsock_DataArrival(ByVal bytesTotal As Long)
winsock.GetData rcvddata 'Ankommende Daten in die globale Variable rcvddata einlesen
End Sub



(sorry voor brede text, maar tis code he.. :( )

[ Voor 7% gewijzigd door Biglines op 23-03-2004 15:32 ]

Konica Minolta Dynax 7D | Mijn foto gallery | Biglines.nl


Acties:
  • 0 Henk 'm!

  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Kijk even naar C:\Program Files\Borland\Delphi7\Demos\Internet\NetChat of de Demo's van Indy op http://www.indyproject.org/download/Borland.html

We adore chaos because we like to restore order - M.C. Escher


Acties:
  • 0 Henk 'm!

  • Biglines
  • Registratie: September 2003
  • Laatst online: 28-02-2011

Biglines

Biglines.nl

Topicstarter
het probleem is vooral dat ik een console application wil, en geen normaal proggy

Konica Minolta Dynax 7D | Mijn foto gallery | Biglines.nl


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 17:03

Creepy

Tactical Espionage Splatterer

Biglines schreef op 23 maart 2004 @ 16:51:
het probleem is vooral dat ik een console application wil, en geen normaal proggy
Dat is geen probleem. Je zult dan de gebruikte componenten zelf in code moeten creeeren i.p.v. ze op een form te slepen.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 16:56

Tomatoman

Fulltime prutser

Creepy schreef op 23 maart 2004 @ 17:53:
[...]

Dat is geen probleem. Je zult dan de gebruikte componenten zelf in code moeten creeeren i.p.v. ze op een form te slepen.
Je kunt ze ook in een TDataModule zetten, zodat je toch nog design-time support hebt.

Een goede grap mag vrienden kosten.


Acties:
  • 0 Henk 'm!

  • Biglines
  • Registratie: September 2003
  • Laatst online: 28-02-2011

Biglines

Biglines.nl

Topicstarter
Creepy schreef op 23 maart 2004 @ 17:53:
[...]

Dat is geen probleem. Je zult dan de gebruikte componenten zelf in code moeten creeeren i.p.v. ze op een form te slepen.
hoe creer ik ze dan?

Konica Minolta Dynax 7D | Mijn foto gallery | Biglines.nl


Acties:
  • 0 Henk 'm!

Verwijderd

Nou gewoon door in een boek te kijken of de help te lezen.......

Delphi:
1
2
3
4
5
6
7
8
9
var idTCPServer: TIdTCPServer;
begin
  idTCPServer := TIdTCPServer.Create(nil);
  try


  finally
    idTCPServer.Free;
  end;

Acties:
  • 0 Henk 'm!

  • Biglines
  • Registratie: September 2003
  • Laatst online: 28-02-2011

Biglines

Biglines.nl

Topicstarter
in een boek kijken wordt een beetje bemoeilijkt door het feit dat ik geen boek heb, en de help lezen heb ik gedaan (zoals eerder gezegt). maar bedankt ;)

Konica Minolta Dynax 7D | Mijn foto gallery | Biglines.nl


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 17:03

Creepy

Tactical Espionage Splatterer

Biglines schreef op 23 maart 2004 @ 19:02:
in een boek kijken wordt een beetje bemoeilijkt door het feit dat ik geen boek heb, en de help lezen heb ik gedaan (zoals eerder gezegt). maar bedankt ;)
En online tutorials heb je ook niet kunnen vinden? ;)

Sorry, maar geen boek hebben is geen excuus. En anders gebruik je de oplossing die tomatoman al aangaf

[ Voor 8% gewijzigd door Creepy op 23-03-2004 19:13 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • Biglines
  • Registratie: September 2003
  • Laatst online: 28-02-2011

Biglines

Biglines.nl

Topicstarter
uhm, als ik het kon vinden zou ik het hier toch niet posten?

maarre, tis gelukt:
code:
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
program BigOS;

{$APPTYPE CONSOLE}

uses
   SysUtils, StrUtils, Classes, Sockets, IdTelnet;


var
  text : String;
  i : Integer;
  idTelnet1: TIdtelnet;


begin
  idTelnet1 := TIdtelnet.Create(nil);
  idTelnet1.Host := '127.0.0.1';
  idTelnet1.Port := 9830;
  idTelnet1.Connect;


   try
    text := 'screen ' + ParamStr(1);
    for i := 1 to length(text) do
     idTelnet1.SendCh(text[i]);
     idTelnet1.SendCh(#13);
   finally
     idTelnet1.Disconnect;
   end;
end.


met een telnet verbinding, weenie of tcp ook gewoon werkt, maar dit werkt iig :)


edit:

hmm telnet is blijkbaar zware library, want t progje is maar liefst 165kb groot

[ Voor 29% gewijzigd door Biglines op 23-03-2004 19:52 ]

Konica Minolta Dynax 7D | Mijn foto gallery | Biglines.nl


Acties:
  • 0 Henk 'm!

Verwijderd

Alleen een try...finally...end er om heen zou wel netjes zijn, waarin je het geheugen weer vrijgeeft.

Acties:
  • 0 Henk 'm!

  • Biglines
  • Registratie: September 2003
  • Laatst online: 28-02-2011

Biglines

Biglines.nl

Topicstarter
dis mn eerst delphi app :P
hoe bedoel je geheugen vrijgeven, dis een console app, die voert t een keer uit, dan wordt t geheugen toch al gecleard?

Konica Minolta Dynax 7D | Mijn foto gallery | Biglines.nl


Acties:
  • 0 Henk 'm!

  • eghie
  • Registratie: Februari 2002
  • Niet online

eghie

Spoken words!

Biglines schreef op 23 maart 2004 @ 22:37:
dis mn eerst delphi app :P
hoe bedoel je geheugen vrijgeven, dis een console app, die voert t een keer uit, dan wordt t geheugen toch al gecleard?
Hij bedoelt dat je na "idTelnet1.Disconnect;" idTelnet1.Free; moet zetten, want dan haalt hij dat componentje ook uit het geheugen. Wel binnen je finally statement.

Acties:
  • 0 Henk 'm!

  • Biglines
  • Registratie: September 2003
  • Laatst online: 28-02-2011

Biglines

Biglines.nl

Topicstarter
hmm, een probleempje, hij veranderd de screen maar af en toe, dus ik denk dat het niet altijd helemaal door komt, hoe maak ik hiervan dat hij eerst wacht op verbinding (jalcds stuurd dan msg) en dan pas gaat versturen, en dan weer op reply wacht?

edit:

vogges mij al manier gevonden, met idtelnet1.connected
moet m vanmiddag nog ff proberen

[ Voor 21% gewijzigd door Biglines op 24-03-2004 07:35 ]

Konica Minolta Dynax 7D | Mijn foto gallery | Biglines.nl


Acties:
  • 0 Henk 'm!

  • Biglines
  • Registratie: September 2003
  • Laatst online: 28-02-2011

Biglines

Biglines.nl

Topicstarter
hmm, met idtelnet1.connected werkt het niet, iemand nog een ideetje? (een wait functie ofzow na het connecten?)

Konica Minolta Dynax 7D | Mijn foto gallery | Biglines.nl


Acties:
  • 0 Henk 'm!

  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Zou niet nodig moeten zijn. Ik zou eens gaan debuggen en kijken wat er mis gaat.

We adore chaos because we like to restore order - M.C. Escher


Acties:
  • 0 Henk 'm!

  • Biglines
  • Registratie: September 2003
  • Laatst online: 28-02-2011

Biglines

Biglines.nl

Topicstarter
uhm, hij doet het wel af en toe..

Konica Minolta Dynax 7D | Mijn foto gallery | Biglines.nl


Acties:
  • 0 Henk 'm!

  • Biglines
  • Registratie: September 2003
  • Laatst online: 28-02-2011

Biglines

Biglines.nl

Topicstarter
hmm, ik krijg m maar niet zo dattie t altijd doet, hoe zorg ik ervoor dattie in een console prog ook kan wachten tot hij data trugkrijgt? (connection reply wachten en kijken of commando goed uitgevoerd is)

Konica Minolta Dynax 7D | Mijn foto gallery | Biglines.nl


Acties:
  • 0 Henk 'm!

  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Dat doet Indy al. Indy is blocking. En met de info die jij geeft kunnen we je niet echt verder helpen. Zorg dat je een concrete vraag hebt met een duidelijk voorbeeld.

We adore chaos because we like to restore order - M.C. Escher


Acties:
  • 0 Henk 'm!

Verwijderd

Biglines schreef op 23 maart 2004 @ 19:44:
Een stukje code
code:
1
2
3
    for i := 1 to length(text) do
     idTelnet1.SendCh(text[i]);
     idTelnet1.SendCh(#13);
Ik kan me niet aan de indruk onttrekken dat je hier bedoeld:
code:
1
2
3
4
  for I:=1 to Length(text) do
    idTelnet1.SendCh(text[i]);
  idTelnet1.SendCh(#13);
  idTelnet1.SendCh(#10);

Of dat je bedoeld:
code:
1
2
3
4
5
  for I:=1 to Length(text) do
  begin
    idTelnet1.SendCh(text[I]);
    idTelnet1.SendCh(#13);
  end;

Acties:
  • 0 Henk 'm!

  • Biglines
  • Registratie: September 2003
  • Laatst online: 28-02-2011

Biglines

Biglines.nl

Topicstarter
atm heb ik de volgende code (net2.pas):
code:
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
program BigOS;

{$APPTYPE CONSOLE}

uses
   SysUtils, StrUtils, Classes, Sockets, IdTelnet;


var
  text : String;
  i : Integer;
  idTelnet1: TIdtelnet;


begin
  idTelnet1 := TIdtelnet.Create(nil);
  idTelnet1.Host := '127.0.0.1';
  idTelnet1.Port := 9830;
  idTelnet1.Connect;

   try
    text := 'screen ' + ParamStr(1);
    for i := 1 to length(text) do
     idTelnet1.SendCh(text[i]);
    idTelnet1.SendCh(#13);
    idTelnet1.SendCh(#10);
   finally
    idTelnet1.Disconnect;
    idTelnet1.Free;
   end;
end.


ik compileer dit met dcc32 net2

daarna doe ik bijv net2 Time
in de console, en dan moet ik dat een paar keer doen voordat jalcds omschakeld naar de screen Time.
Als ik met windows telnet een verbinding maak, geeft hij af en toe de reply dattie de screen niet kan vinden, dus ik moet eigenlijk een code hebben die de reply checked (goede reply: '20 Screen changed successfully' foute reply: 21 Screen not found')

hoe kan ik dus in die console app testen oftie het goed gedaan heeft, en zo niet nog een keer proberen tot hij de goede reply geeft?

[ Voor 44% gewijzigd door Biglines op 25-03-2004 18:40 ]

Konica Minolta Dynax 7D | Mijn foto gallery | Biglines.nl


Acties:
  • 0 Henk 'm!

  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Lees wat ie teruggeeft dan, zoals je zelf ook al verzonnen had

We adore chaos because we like to restore order - M.C. Escher


Acties:
  • 0 Henk 'm!

  • Biglines
  • Registratie: September 2003
  • Laatst online: 28-02-2011

Biglines

Biglines.nl

Topicstarter
idd, dat had ik zelf verzonnen, ik kan ook een heel os verzinnen, maar niet proggen...


mijn vraag was hoe dat moet in een console app... (in een window kan dat gewoon als procedure gedaan worden die als event wordt aangeroepen vogges mij)

Konica Minolta Dynax 7D | Mijn foto gallery | Biglines.nl


Acties:
  • 0 Henk 'm!

  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Ik denk niet dat Indy zo werkt, want het werkt immers blocking. Maar er is (bijna) geen verschil qua programmeren tussen een GUI en een console app. Ook daar kan je gewoon events hebben en koppelen. Natuurlijk niet designtime, maar wel in je code.
Iets in deze strekking:
Delphi:
1
2
3
4
5
  TForm1 = class(TForm)
    procedure ButtonClick(Sender: TObject);
  end;

  Button1.OnClick := ButtonClick;

We adore chaos because we like to restore order - M.C. Escher


Acties:
  • 0 Henk 'm!

  • Biglines
  • Registratie: September 2003
  • Laatst online: 28-02-2011

Biglines

Biglines.nl

Topicstarter
hij werkt dat progje af en stopt ermee...

Konica Minolta Dynax 7D | Mijn foto gallery | Biglines.nl


Acties:
  • 0 Henk 'm!

  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Ja, uiteraard...

We adore chaos because we like to restore order - M.C. Escher


Acties:
  • 0 Henk 'm!

  • Biglines
  • Registratie: September 2003
  • Laatst online: 28-02-2011

Biglines

Biglines.nl

Topicstarter
dus kan ik niet met events werken...., en dus is nog steeds de vraag hoe ik dan dat kan uitlezen (in een grafische versie werkt dat wel)

Konica Minolta Dynax 7D | Mijn foto gallery | Biglines.nl


Acties:
  • 0 Henk 'm!

  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Tuurlijk wel. Je zal een loopje moeten maken zodat je niet zomaar uit je programma valt. Je kan het uitlezen op precies dezelfde manier als designtime. Als je het allemaal te lastig vind voeg je toch een TDataModule toe aan je console appje? Die zie je ook niet, maar je kan er designtime wel componenten op gooien en properties zetten.

We adore chaos because we like to restore order - M.C. Escher


Acties:
  • 0 Henk 'm!

  • Biglines
  • Registratie: September 2003
  • Laatst online: 28-02-2011

Biglines

Biglines.nl

Topicstarter
het is al gelukt, topic mag wat mij betreft op slot

Konica Minolta Dynax 7D | Mijn foto gallery | Biglines.nl

Pagina: 1