![]() |
Delphi-Version: 2005
Ansteuerung eines Controllers (umscheiben VB --> delphi7)
Liste der Anhänge anzeigen (Anzahl: 2)
Also mein Programm bezieht sich auf folgenden Thread von mir
![]() Habe einen Controller für 64 LEDs und möchte den über ein Delphiprogramm ansteuern. Das mitgelieferte Visual Basic Programm liefert nur eine beispielhafte Anwendung und nicht komplexe Programmabläufe. Ich möchte gern, dass mein Programm eine Textdatei(Inhalt: binäre schreibweise für alle 64 LEDs an/aus). Diese wird eingelesen und entsprechend des Inhaltes werden die Programmroutinen der Reihe nach abgearbeitet. Dies habe ich zwar noch nicht implementiert, aber habe schon aus anderen Projekten von mir die entsprechenden Prozeduren. Das sollte also kein Problem sein. Ich habe aber ein großes Problem mit der Integration der RSCOM.dll(für serielle Schnittstelle). Die Prozeduren, welche das VB Programm nutzt sind alle darin enthalten und nur durch eigene Deklarationen ist die Verknüpfung hergestellt. Diese Deklarationen möchte ich gern für Delphi adaptieren. leider kann ich mein bisheriges Programm noch nicht testen, da der Compiler immer meckert "Deklaration erwartet, aber uses gefunden". Leider wird dadurch mein gesamtes Programm nicht nachvollziehbar und compilierbar. Hat jemand eine Ahnung, wie ich dass ohne großen Aufwand beheben kann? Ich bitte um Verständnis, dass die Verwendung komplett anderer Routinen zur Ansteuerung der seriellen Schnittstelle nicht gewünscht ist. Lg |
AW: Ansteuerung eines Controllers (umscheiben VB --> delphi7)
Delphi-Quellcode:
Das sollte reichen:
unit Controller; interface procedure OPENCOM (OpenString:string); stdcall; external 'RSCOM.dll'; procedure TIMEOUTS (b:integer); stdcall; external 'RSCOM.dll'; procedure BUFFERSIZE (b:integer); stdcall; external 'RSCOM.dll'; procedure CLOSECOM (); stdcall; external 'RSCOM.dll'; procedure SENDBYTE (Dat:string); stdcall; external 'RSCOM.dll'; function READBYTE (): Integer; stdcall; external 'RSCOM.dll'; procedure SENDSTRING (Dat:string); stdcall; external 'RSCOM.dll'; function READSTRING (): String; stdcall; external 'RSCOM.dll'; procedure CLEARBUFFER (); stdcall; external 'RSCOM.dll'; function INBUFFER (): Integer; stdcall; external 'RSCOM.dll'; function OUTBUFFER (): Integer; stdcall; external 'RSCOM.dll'; procedure DTR (b:integer); stdcall; external 'RSCOM.dll'; procedure RTS (b:integer); stdcall; external 'RSCOM.dll'; procedure TXD (b:integer); stdcall; external 'RSCOM.dll'; function CTS (): Integer; stdcall; external 'RSCOM.dll'; function DSR (): Integer; stdcall; external 'RSCOM.dll'; function RI (): Integer; stdcall; external 'RSCOM.dll'; function DCD (): Integer; stdcall; external 'RSCOM.dll'; function INPUTS (): Integer; stdcall; external 'RSCOM.dll'; procedure TIMEINIT (); stdcall; external 'RSCOM.dll'; function TIMEREAD (): Double; stdcall; external 'RSCOM.dll'; procedure DELAY (ms: Double); stdcall; external 'RSCOM.dll'; procedure REALTIME (); stdcall; external 'RSCOM.dll'; procedure NORMALTIME (); stdcall; external 'RSCOM.dll'; ... |
AW: Ansteuerung eines Controllers (umscheiben VB --> delphi7)
Zitat:
|
AW: Ansteuerung eines Controllers (umscheiben VB --> delphi7)
Da das Beispielprogramm ja VB ist und auch die Ansi-Variante von ShellExecute (ShellExecuteA) gewrapt wird, würde ich auf Ansi tippen. Also könnte man aus Kompatibilitätsgründen für spätere D-Versionen auch AnsiString nehmen.
|
AW: Ansteuerung eines Controllers (umscheiben VB --> delphi7)
Zitat:
Versuch es mal, indem du die uses-Klausel davor stellst :gruebel: |
AW: Ansteuerung eines Controllers (umscheiben VB --> delphi7)
die uses vor die deklarationen zu setzen, scheint es gebracht zu haben.
ich hatte es schonmal probiert, aber blöderweise die uses vor interface gesetzt, was nichts brachte. so und jetzt kasper ich die datentypen durch. |
AW: Ansteuerung eines Controllers (umscheiben VB --> delphi7)
juhu, es funktioniert.
wichtig ist die richtigen datentypen zu verwenden. jetzt kann ich weitere funkionen implementieren.
Delphi-Quellcode:
unit Controller;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; function OPENCOM (OpenString: ansistring): longint; stdcall; external 'RSCOM.dll'; procedure TIMEOUTS (b: longint); stdcall; external 'RSCOM.dll'; procedure BUFFERSIZE (b: longint); stdcall; external 'RSCOM.dll'; procedure CLOSECOM (); stdcall; external 'RSCOM.dll'; procedure SENDBYTE (Dat: longint); stdcall; external 'RSCOM.dll'; function READBYTE (): longint; stdcall; external 'RSCOM.dll'; procedure SENDSTRING (Dat: ansistring); stdcall; external 'RSCOM.dll'; function READSTRING (): ansiString; stdcall; external 'RSCOM.dll'; procedure CLEARBUFFER (); stdcall; external 'RSCOM.dll'; function INBUFFER (): longint; stdcall; external 'RSCOM.dll'; function OUTBUFFER (): longint; stdcall; external 'RSCOM.dll'; procedure DTR (b: longint); stdcall; external 'RSCOM.dll'; procedure RTS (b: longint); stdcall; external 'RSCOM.dll'; procedure TXD (b: longint); stdcall; external 'RSCOM.dll'; function CTS (): longint; stdcall; external 'RSCOM.dll'; function DSR (): longint; stdcall; external 'RSCOM.dll'; function RI (): longint; stdcall; external 'RSCOM.dll'; function DCD (): longint; stdcall; external 'RSCOM.dll'; function INPUTS (): longint; stdcall; external 'RSCOM.dll'; procedure TIMEINIT (); stdcall; external 'RSCOM.dll'; function TIMEREAD (): Double; stdcall; external 'RSCOM.dll'; procedure DELAY (ms: Double); stdcall; external 'RSCOM.dll'; procedure REALTIME (); stdcall; external 'RSCOM.dll'; procedure NORMALTIME (); stdcall; external 'RSCOM.dll'; function ShellExecuteA (hwnd: Longint; lpOperation: String; lpFile: String; lpParameters: String; lpDirectory: String; nShowCmd: Longint): Longint; stdcall; external 'shell32.dll'; type TForm1 = class(TForm) Button1: TButton; OpenDialog1: TOpenDialog; Label1: TLabel; Button2: TButton; Button3: TButton; Button4: TButton; Button5: TButton; Label2: TLabel; CheckBox1: TCheckBox; CheckBox2: TCheckBox; ScrollBar1: TScrollBar; Label3: TLabel; Button6: TButton; Button7: TButton; Button8: TButton; Button9: TButton; Timer1: TTimer; procedure Button6Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure CheckBox1Click(Sender: TObject); procedure CheckBox2Click(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure Button7Click(Sender: TObject); procedure Button8Click(Sender: TObject); procedure ScrollBar1Change(Sender: TObject); procedure Timer1Timer(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; Adr, Delaytime: longint; implementation {$R *.dfm} procedure TForm1.Button6Click(Sender: TObject); begin SENDBYTE (Adr); SENDBYTE (9); SENDBYTE (Delaytime); end; procedure TForm1.FormCreate(Sender: TObject); var i: longint; begin Randomize; i:= OPENCOM('COM1:9600,N,8,1'); If i = 0 Then begin i:= OPENCOM('COM2:9600,N,8,1'); if i = 0 then begin i:= OPENCOM('COM3:9600,N,8,1'); if i = 0 then begin i:= OPENCOM('COM4:9600,N,8,1'); if i = 0 then showmessage('Kein Gerät erkannt') else DTR (4); end else DTR (3); end else DTR (2); end else DTR (1); TIMEINIT; TIMEOUTS (300); Delaytime:= 10; Adr:= 0; Timer1.Enabled:= False; end; procedure TForm1.CheckBox1Click(Sender: TObject); begin If Adr = 0 then Adr:= 1; If Adr = 1 then Adr:= 0; If Adr = 2 then Adr:= 12; If Adr = 12 then Adr:= 2; end; procedure TForm1.CheckBox2Click(Sender: TObject); begin If Adr = 0 then Adr:= 2; If Adr = 1 then Adr:= 12; If Adr = 2 then Adr:= 1; If Adr = 12 then Adr:= 1; end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin CLOSECOM; end; procedure TForm1.Button2Click(Sender: TObject); var i: longint; begin CLOSECOM; i:= OPENCOM('COM1:9600,N,8,1'); If i = 0 Then showmessage('COM Interface Error'); TIMEOUTS (300); end; procedure TForm1.Button3Click(Sender: TObject); var i: longint; begin CLOSECOM; i:= OPENCOM('COM2:9600,N,8,1'); If i = 0 Then showmessage('COM Interface Error'); TIMEOUTS (300); end; procedure TForm1.Button4Click(Sender: TObject); var i: longint; begin CLOSECOM; i:= OPENCOM('COM3:9600,N,8,1'); If i = 0 Then showmessage('COM Interface Error'); TIMEOUTS (300); end; procedure TForm1.Button5Click(Sender: TObject); var i: longint; begin CLOSECOM; i:= OPENCOM('COM4:9600,N,8,1'); If i = 0 Then showmessage('COM Interface Error'); TIMEOUTS (300); end; procedure TForm1.Button7Click(Sender: TObject); begin Timer1.Enabled:= True; end; procedure TForm1.Button8Click(Sender: TObject); begin Timer1.Enabled:= False; end; procedure TForm1.ScrollBar1Change(Sender: TObject); begin Delaytime:= scrollbar1.Position; end; procedure TForm1.Timer1Timer(Sender: TObject); var n, d : longint; begin For n:=1 To 8 do begin SENDBYTE (1); SENDBYTE (n); d:= Random (254) +1; SENDBYTE (d); end; Timer1.Interval:= scrollbar1.position; end; End. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:26 Uhr. |
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