Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi RS232 (https://www.delphipraxis.net/41683-rs232.html)

SubData 8. Mär 2005 15:57

Re: RS232
 
Geht sowas nich mit dem SpeedButton? Ich glaub der hat da gleich was für drin :>

TeronG 8. Mär 2005 16:01

Re: RS232
 
Laut OH hatter "nur" DAS:
OnClick
OnDblClick
OnMouseDown
OnMouseMove
OnMouseUp


Ohhh cool OnDblClick .. wusst ich garnet :stupid:

Ultimator 8. Mär 2005 16:02

Re: RS232
 
@TeronG:
Dafür wäre ne Endlosschleife geeignet, aber man sollte bedenken, dass man auch Pausen einsetzen sollte, damit die Spannung nicht zu schnell nach oben geht ;-)

TeronG 8. Mär 2005 16:06

Re: RS232
 
Zitat:

Zitat von Ultimator
@TeronG:
Dafür wäre ne Endlosschleife geeignet, aber man sollte bedenken, dass man auch Pausen einsetzen sollte, damit die Spannung nicht zu schnell nach oben geht ;-)

Klar ... Punkt für dich :gruebel:
ich mach das gerne mit "meiner" Wait-Procedure
Delphi-Quellcode:
procedure Wait(milliseconds: Cardinal);
var
  Start : Integer;
begin
  Start := GetTickCount;
  while GetTickCount-Start <= milliseconds do
    application.ProcessMessages;
end;

Studtowicz 8. Mär 2005 16:20

Re: RS232
 
wie bau ich denn die schleife ein?
bei mir sieht es jetzt so aus


unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, OoMisc, AdPort, Buttons;

type
TForm1 = class(TForm)
ApdComPort1: TApdComPort;
Button1: TButton;
Button2: TButton;
SpeedButton1: TSpeedButton;

procedure Button1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);

procedure Button2MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);

private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}



procedure TForm1.Button1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
ApdComPort1.Open := true;
ApdComPort1.Output := '+'
end;



procedure TForm1.Button2MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
ApdComPort1.Open := true;
ApdComPort1.Output := '-'
end;



end.




Kann ich dafür WHILE und DO nehmen?
und welcher Befehl kommt hinter DO????

Sorry ich bin ein nOOOOb

Ultimator 8. Mär 2005 18:02

Re: RS232
 
Müsste gehen, wenn du nen ApdComPort1 und 2 Buttons auf der Form hast ;-)
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Button1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Button2MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
  private
    ButtonPressed: boolean;
    procedure SendSign(Zeichen: char);
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}


procedure Wait(milliseconds: Cardinal);
var
  Start : Integer;
begin
  Start := GetTickCount;
  while GetTickCount-Start <= milliseconds do
    Application.ProcessMessages;
end;

procedure TForm1.SendSign(Zeichen: char);
begin
 while ButtonPressed do
  begin
   ApdComPort1.Output := Zeichen;
   Wait(200);
  end;
end;

procedure TForm1.Button1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
 ButtonPressed := true;
end;

procedure TForm1.Button1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
 ButtonPressed := false;
end;

begin

procedure TForm1.Button2Click(Sender: TObject);
begin
 SendSign('+');
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 SendSign('+');
end;

procedure TForm1.Button2MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
 ButtonPressed := true;
end;

procedure TForm1.Button2MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
 ButtonPressed := false;
end;

end.

TeronG 9. Mär 2005 08:17

Re: RS232
 
moin moin :)
Zitat:

Zitat von Studtowicz
Kann ich dafür WHILE und DO nehmen?
und welcher Befehl kommt hinter DO????

Klar kannste Delphi-Referenz durchsuchenWHILE benutzen .. nach DO kommt das was du machen willst ... entweder eine einzelne Aweisung oder mit Begin und End ein ganzer Haufen von anweisungen. ^^

Zitat:

Zitat von Studtowicz
wie bau ich denn die schleife ein?

Du könntest zum beispiel eine WHILE DO schleife bei OnMouseDown starten. Und bei OnMouseUp setzt du einen Boolean der die Schleife beendet auf High.
btw.: vergiss nicht den Boolean irgendwo wieder auf False zu Setzen sonnst läuft das ding nicht mehr an ^^

Delphi-Quellcode:
While not Global_bool_fuer_OnMouseUp DO
begin
  // Sannung hoch setzen
  // bissl warten
end;
Zitat:

Zitat von Studtowicz
bei mir sieht es jetzt so aus

Mach doch bitte die code-tag's (nennt man das so :gruebel: ) um deinen Code .. ist leserlicher dann :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:22 Uhr.
Seite 2 von 2     12   

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