![]() |
Von Com-Port zum WinAmp-Player
Hallo liebe Delphi-Programmierer,
ich oute mich jetzt mal als völliger Neuling. Habe ein wenig Bascom und Internetkram (html, php, ...) Erfahrung, mehr nicht. Üblicherweise Programmiere ich Microcontroller, aber mein neues Projekt benötigt auch ein Pc-Programm und zwar geht es um Folgendes: Am Com-Port kommen Daten an, wie die aussehen kann ich beliebig verändern, jedenfalls so 15 Signale. Die sind: - Nichts :-D - PC Boot - PC Shut Down - PC Reboot - Volume up - Volume down - next track - previous track - Mute - Shuffle On/Off - Repeat On/Off - Play/Pause - Stop - Standby - next playlist vielleicht kommen noch ein oder zwei Funktionen dazu... Es geht nun darum, diese Befehle wie sie am Comport ankommen zu verarbeiten und umzusetzen. Dazu schweben mir bisher zwei Lösungskonzepte vor: 1. das einfachere Ich simuliere mit einem Delphiprogramm eine Tastatur und lege in Winamp Hotkeys fest, die dann die entsprechenden Funktionen ausführen. Nachteil: Ich kann nur den Winamp steuern (und z.B. keine Reboot-Funktion) und Tastenkombinationen sind belegt... 2. Ich spreche aus dem Delphi-Programm die anderen Programme und Windows an. Nachteil: hoher Programmieraufwand... Also eure Meinungen sind gefragt: a) Ist das möglich? b) Schaff ich das? c) mit welchem Zeitaufwand rechnet ihr bei mir? d) Wieviel Zeit würde euch bzw. einen erfahrenen Programmierer sowas kosten? e) Wieviel Systemleistung würde für dieses Hintergrundprogramm draufgehen? Ich Glaub das waren erstmal alle Fragen :lol: Danke schonmal im Vorraus! Gruß Denis edit: Delphi 2005 ist doch Delphi.NET oder? [edit=Christian Seehase]Kategorisierung auf Delphi Win32 geändert, da es wohl doch Win32 ist. Mfg, Christian Seehase[/edit] |
Re: Von Com-Port zum WinAmp-Player
Zitat:
zu deinen fragen: a) definitiv möglich b) schaffst du auch c) zeitaufwand ist schwer zu bestimmen. komtm auf deine delphi-erfahrung an und darauf, ob du fertige dinge nehmen möchtest, oder lieber alles selber programmierst d) ich schätze ich hätte das nach 5 bis 7 stunden fertig e) systemleistung ist quasi zu vernachlässigen. garantiert weniger als winamp im leerlauf braucht edit: delphi 2005 nennt sich das neueste delphi-produkt von borland, dass IDE, compiler und den ganzen kram beinhaltet. delphi.NET heißt die sprache an sich ;) aenogym |
Re: Von Com-Port zum WinAmp-Player
Vielen Dank für deine Antwort.
Wie gesagt, Delphi Erfahrungen gleich Null, aber ich Stufe mich als schnell lernfähig ein :mrgreen: Also bei diesem Projekt geht es mir erstmal nur um die Funktion, Grundlagen werd ich dann später nachholen :angel2: Darum würde ich auch auf fertige Codeschnippsel zurückgreifen, aber ein Programm so wie ich es möchte gibt es glaube ich nicht... Also ein Freund von mir hat Delphi 2005, bei dem könnte ich Programmieren, aber der kann das auch nicht :wall: Jetzt ist die Frage, wie finde ich den Anfang? Gibt's so'ne Art Tutorials für Com-Ansteuerung etc.? Gruß Denis |
Re: Von Com-Port zum WinAmp-Player
also wenn du null ahnung hast, würde ich dir empfehlen, erstmal ein delphi grundlagen tutorial zu absolvieren.
>> ![]() wenn du die grundlagen drauf hast, sollte der rest kein problem sien (im zweifelsfall immer die delphi-hilfe konsultieren) tutorials zum com-port gibts garantiert hunderte. dieses hübsche board hier hat eine mega tolle suchfunktion, die dir gleich oben interessante treffer bietet. dort einfach mal nachlesen: ![]() aenogym |
Re: Von Com-Port zum WinAmp-Player
Das ähnelt Bascom ja enorm...
Werde mich da mal durchlesen und wenn Fragen auftauchen hier wieder melden. Danke! Gruß Denis |
Re: Von Com-Port zum WinAmp-Player
Hallo,
danke für diene Hilfe. Hab nun nach einem Taschenrechner, mal das halbe Programm geschrieben. Lese noch nicht den Comport aus, sondern erstelle erstmal Virtuelle Tastaturkommandos, die mit den Standart Winamp Hotkeys übereinstimmen. Die jetzigen Buttons sollen dann im fertigen Programm durch die Befehle des Comports ersetzt werden, Gruß Denis ![]() |
Re: Von Com-Port zum WinAmp-Player
So, ich nähere mich dem Com-Port, habe aber fast nur Misserfolge :-D
Kann mir einer sagen warum ich immer ein "undefinierter Bezeichner" zurückgeworfen bekomme? Über try and error komm ich langsam nicht mehr weiter... Gruß Denis
Delphi-Quellcode:
unit rs232;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, SerialNG, StdCtrls; type TForm1 = class(TForm) SerialPortNG1: TSerialPortNG; Label1: TLabel; procedure Button1Click(Sender: TObject); procedure Label2Click(Sender: TObject); procedure machwas2(port: TSerialPortNG); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.DFM} procedure machwas; var port: TSerialPortNG; begin // schnittstelle aufmachen port := TSerialPortNG.Create(nil); // objekt kerstellen try port.CommPort := 'COM1'; // comport einstellen port.BaudRate := 9600; // baud-rate einstellen port.Active := true; // schnittstelle öffnen if 1 = 1 then machwas2(port: TSerialPortNG); finally // schnittstelle zumachen port.Active := false; freeandnil(port); end; end; procedure machwas2(port: TSerialPortNG); var text: String; begin text := 'Hallo'; port.SendString(text + #11); end; end. |
Re: Von Com-Port zum WinAmp-Player
Mh wo taucht den der Fehler auf, welche weiteren angaben gibt es denn?
|
Re: Von Com-Port zum WinAmp-Player
Zitat:
Dies liegt daran, dass port keine Globale Variable ist, sondern in machwas deklariert wurde, und somit it machwas2 keine gültigkeit hat. Lösungsmöglichkeit: Falls du die Geschichte in eine Klasse kapselst, kannst du port als privates Member deklarieren. Ansonsten kannst du sie als globale Varibale deklarieren (ist aber nicht allzuschön), oder als Parameter übergeben. |
Re: Von Com-Port zum WinAmp-Player
Zitat:
Delphi-Quellcode:
procedure machwas2(port: TSerialPortNG);
|
Re: Von Com-Port zum WinAmp-Player
Zitat:
Tja, dann wären mehr infos oder Source echt hilfreich. (Wobei ich ersteres bevorzugen würde ;) ) |
Re: Von Com-Port zum WinAmp-Player
Also, ich habe halt völlig ahnungslos den Code im Internet gesucht, der mir an einfachsten erschien.
Also habe ich von hier ![]() Dann noch diese Komponente installiert und soweit bin ich jetzt... Ich suche halt nur die einfachste Möglichkeit den COM-Port abzufragen. An dem kommt alle 500ms eine Zahl zwischen 0-16 an, dahinter vielleicht noch was zum erkennen, dass die Nachricht zu Ende ist. Diese Zahl hätte ich danach ganz gerne in einer Variable, mehr nicht... bin für alles offen :-D Gruß Denis |
Re: Von Com-Port zum WinAmp-Player
Ich denke, wir haben uns falsch verstanden ;)
Relevante Informationen für das derzeitige Problem wären bspw. wo der Fehler auftritt, und welcher Bezeichner unbekannt ist. Wenn ich mir den Code im DF angucke, denke ich, dass es sein könnte (ich bin vorsichtiger mit meinen Fehleranalysen geworden ^^), dass nicht Port selbst, sondern die Paramterübergabe das Problem darstellt. Aber am besten einfach mal den Code posten, wo der Fehler auftritt ;) |
Re: Von Com-Port zum WinAmp-Player
Hallo,
also der Fehler tritt hier auf: if 1 = 1 then machwas2(port: TSerialPortNG); Das hat mir ein Feund so empfohlen, im Originaltext steht nur machwas2(port: TSerialPortNG); Ruft aber halt beides die selbe Fehlermeldung auf, obwohl es ja nur aus einem angeblich funktionierenden Quellcode kopiert wurde... Gibt es vielleicht Probleme, weil ich noch Delphi 5 nutze? Gruß Denis |
Re: Von Com-Port zum WinAmp-Player
Hi Denis
Zitat:
Wenn du eine Prozedur/Funktion deklarierst, schreibst du das mit procedure Name(Parameter: Typ; Parameter: Typ); Hingegen beim Aufrufen einer Prozedur/Funktion müssen nur mehr die Parameter übergeben werden: Name(Variable, Variable); Damit brauchst du nur noch aufzurufen:
Delphi-Quellcode:
Natürlich musst du port irgendwo als Variable vom Typ TSerialPortNG definiert haben :)
machwas2(port);
|
Re: Von Com-Port zum WinAmp-Player
Klar liegt der Fehler bei mir, hät ich nicht anders erwartet, Programme sind schließlich perfekt ;-)
Also, ich kann deinen Erläuterungen folgen, muss sie aber falsch verstanden haben, denn ich bekomme kein Ergebnis zustande. Nochmal mein kompletter Code, könnt mir vielleicht jemand mit Rotstift editieren was falsch ist, die Fehlermeldung ist immer noch die gleiche in Zeile 41 "undefinierter Bezeichner" Tut mir Leid das ich mich so blöd anstelle... Gruß Denis
Delphi-Quellcode:
unit rs232;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, SerialNG, StdCtrls; type TForm1 = class(TForm) SerialPortNG1: TSerialPortNG; Label1: TLabel; procedure Button1Click(Sender: TObject); procedure Label2Click(Sender: TObject); procedure machwas2(port: TSerialPortNG); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; port: TSerialPortNG; implementation {$R *.DFM} procedure machwas; begin // schnittstelle aufmachen port := TSerialPortNG.Create(nil); // objekt kerstellen try port.CommPort := 'COM1'; // comport einstellen port.BaudRate := 9600; // baud-rate einstellen port.Active := true; // schnittstelle öffnen machwas2(port:); finally // schnittstelle zumachen port.Active := false; freeandnil(port); end; end; procedure machwas2(port: TSerialPortNG); var text: String; begin text := 'Hallo'; port.SendString(text + #11); end; end. |
Re: Von Com-Port zum WinAmp-Player
Einmal das:
Zitat:
Du hast keine forward-deklaration deiner Funktionen, soll heißen: Der Compiler kennt die funktion erst, ab wann sie deklariert wurde. soll heißen:
Delphi-Quellcode:
Was man dagegen tun kann?
procedure machwas;
//code.... //Hier ist aber machwas2 noch unbekannt procedure machwas2(port: TSerialPortNG); //erst ab hier ist sie dem compiler bekannt 2 Möglichkeiten
PS: Zitat:
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:37 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