Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Terminal Software?! (https://www.delphipraxis.net/49751-terminal-software.html)

NewTimeLive 15. Jul 2005 11:33


Terminal Software?!
 
Hi ihrzz,
hab nen Problem mit dem Verständnis und der Ausführung meines Programms. Ich Kopiere mal den Code hier her sagt mal bitte was genau da falsch ist.

Das ganze ist eine Terminal Software die Ausgabe soll in einem Memo sein.

Kennt sich damit jemand aus?

Delphi-Quellcode:
unit DataMain;

interface

uses
  SysUtils, Classes, AdWnPort, OoMisc, AdPort, Dialogs;

type
  TDataModMain = class(TDataModule)
    ApdComPort: TApdComPort;
    ApdWinsockPort: TApdWinsockPort;
    procedure ApdComPortTriggerAvail(CP: TObject; Count: Word);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
    function DoCommand(CMD : string): boolean;
  end;

var
  DataModMain: TDataModMain;

implementation

uses Types, Controls, FrmMain;



{$R *.dfm}

procedure TDataModMain.ApdComPortTriggerAvail(CP: TObject; Count: Word);
var I : Integer;
    c : Char;
    Zeile : array[0..255] of Char;
begin
  FillChar(Zeile,SizeOf(Zeile),#0);
  for i := 1 to Count do begin
   Zeile := ApdProductName;

    c := ApdComPort.GetChar;
    Case c of

      #10, #13 : begin
                   FormMain.Memo.Lines.Add(StrPas(Zeile));
                   FillChar(Zeile,SizeOf(Zeile),#0);
                 end;
      else StrCat(Zeile, PChar(c));
    end;
  end;
end;




function TDataModMain.DoCommand(CMD: string): boolean;
begin
  //
  ApdComPort.PutString(CMD);
end;

end.
Delphi-Quellcode:
unit FrmMain;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,
  DataMain,
  ExtCtrls, OoMisc, ADTrmEmu, StdCtrls;

type
  TFormMain = class(TForm)
    Panel1: TPanel;
    ButtonHelp: TButton;
    Memo: TMemo;
    procedure FormCreate(Sender: TObject);
    procedure ButtonHelpClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  FormMain: TFormMain;

implementation

uses AdPort;


{$R *.dfm}

procedure TFormMain.FormCreate(Sender: TObject);
begin
  DataModMain := TDataModMain.Create(Self);
end;

procedure TFormMain.ButtonHelpClick(Sender: TObject);
begin
  DataModMain.DoCommand('H');
end;

end.
MfG

Sascha

jensw_2000 15. Jul 2005 11:50

Re: Terminal Software?!
 
Es wäre unheinmich hilfreich, wenn du und sagen würdest, was für Fehlermeldungen du bekommst bzw. wo es klemmt ...

Bein Überfliegen des Codes ist mit aufgefallen das du DataModMain weder in Private noch in Public deklariert hast. Eventuell hilft dir das ja schon weiter ...

Delphi-Quellcode:
  private
    { Private-Deklarationen } 
    DataModMain:TDataModMain; // <-----------------  wäre echt sinnvoll ....
  public
    { Public-Deklarationen } 
  end;

var
  FormMain: TFormMain;

implementation

uses AdPort;


{$R *.dfm} 

procedure TFormMain.FormCreate(Sender: TObject);
begin
  DataModMain := TDataModMain.Create(Self);
end;

procedure TFormMain.ButtonHelpClick(Sender: TObject);
begin
  DataModMain.DoCommand('H');
end;

Luckie 15. Jul 2005 11:50

Re: Terminal Software?!
 
Zitat:

Zitat von NewTimeLive
Ich Kopiere mal den Code hier her sagt mal bitte was genau da falsch ist.

Das ist jetzt aber ein Witz oder? :evil:

malo 15. Jul 2005 12:32

Re: Terminal Software?!
 
Zitat:

Zitat von Luckie
Zitat:

Zitat von NewTimeLive
Ich Kopiere mal den Code hier her sagt mal bitte was genau da falsch ist.

Das ist jetzt aber ein Witz oder? :evil:

Und damit auch Neulinge es verstehen, der Hinweis auf den Verhaltenskodex

NewTimeLive 18. Jul 2005 13:20

Re: Terminal Software?!
 
Naja das is halt das Problem eine wikliche Fehlermedung bekomme ich halt nicht...

er zeigt halt einfach nichts in dem Memo feld an... und daher wusste ich auch nicht was ich als Fehlermedung hier her schreiben sollte.

Er soll einfach das was das gerät zurückgibt im Memo feld anzeigen aber er macht es nicht.

MfG

Sascha

NewTimeLive 18. Jul 2005 13:33

Re: Terminal Software?!
 
Liste der Anhänge anzeigen (Anzahl: 1)
Da ich ja doch ein fluckses Burschi bin hab ich es dann doch noch geschaft das ganze zum laufen zu bekommen... ich hab euch mal den Quelltext darunter Kopiert und die Dateien Angehängt um zu zeigen wat ich da machen wollte (Einfache Kommunikation mit einem Gerät über eine Schnittstelle *g*)

Die Main Form
Delphi-Quellcode:
unit FrmMain;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,
  DataMain,
  ExtCtrls, OoMisc, ADTrmEmu, StdCtrls, Buttons;

type
  TFormMain = class(TForm)
    Memo: TMemo;
    Panel2: TPanel;
    Edit1: TEdit;
    Timer1: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure Edit1Change(Sender: TObject);
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  FormMain: TFormMain;

implementation

uses AdPort;


{$R *.dfm}

procedure TFormMain.FormCreate(Sender: TObject);
begin
  DataModMain := TDataModMain.Create(Self);
end;

procedure TFormMain.Edit1Change(Sender: TObject);
var CMD : String;
begin
  CMD := Edit1.Text;
  //DataModMain.DoCommand(CMD);
  Edit1.Text := ''
end;

procedure TFormMain.FormKeyDown(Sender: TObject; var Key: Word;Shift: TShiftState);
begin
// Zeichen an COMPort senden
  DataModMain.ApdComPort.PutChar(Char(Key));
end;

end.

[b]Das DataMod
Delphi-Quellcode:
unit DataMain;

interface

uses
  SysUtils, Classes, AdWnPort, OoMisc, AdPort, Dialogs;

type
  TDataModMain = class(TDataModule)
    ApdComPort: TApdComPort;
    ApdWinsockPort: TApdWinsockPort;
    procedure ApdComPortTriggerAvail(CP: TObject; Count: Word);
    procedure ApdComPortTriggerData(CP: TObject; TriggerHandle: Word);
    procedure DataModuleCreate(Sender: TObject);
  private
    { Private-Deklarationen }
    Zeile : string;
    CRTrig : word;
  public
    { Public-Deklarationen }
    function DoCommand(CMD : string): boolean;
  end;

var
  DataModMain: TDataModMain;

implementation

uses Types, Controls, FrmMain;


{$R *.dfm}

procedure TDataModMain.DataModuleCreate(Sender: TObject);
begin
  ApdComPort.Open := true;
  CRTrig := ApdComPort.AddDataTrigger(#13, False);
end;

procedure TDataModMain.ApdComPortTriggerData(CP: TObject; TriggerHandle: Word);
begin
  if TriggerHandle = CRTrig then begin
    FormMain.Memo.Lines.Add(Zeile);
    Zeile := '';
    // ApdComPort.RemoveTrigger(TriggerHandle);
  end;
end;

procedure TDataModMain.ApdComPortTriggerAvail(CP: TObject; Count: Word);
var i : Integer;
    c : Char;
begin
  for i := 1 to Count do begin
    c := ApdComPort.GetChar;
    case c of
      #10 :;
      #13 :;
    else Zeile := Zeile + c;
    end;
  end;
end;

function TDataModMain.DoCommand(CMD: string): boolean;
begin
  //
  ApdComPort.PutString(CMD);
end;


end.
Vielleciht können andre Leute ja zum späteren Zeitpunkt noch was damit anfangen.

MfG

Sascha


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:23 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz