Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi TComPort - TXD (https://www.delphipraxis.net/140767-tcomport-txd.html)

CaptainAwsome 25. Sep 2009 18:30


TComPort - TXD
 
Hallo,
ich hoffe ich hab das richtige Unterforum für die Frage gefunden.

Ich hab mir das 'Lernpaket MSR mit dem PC' von Franzis gekauft und direkt ein paar Schaltungen gesteckt und die beiliegenden Programme dafür benutzt.
Diese sind allerdings in Visual Basic programmiert und der Quellcode liegt bei.
Da ich mich aber nicht in VB einarbeiten will, weil ich mich mit Delphi inzwischen gut zurecht komme wollte ich die Programme einfach analog in Delphi übertragen.
Dafür habe ich mir TComPort installiert(das 10er Package). Damit hab ich es jetzt auch schon geschaft über den DTR und RTS Pin eine LED zum leuchten zu bekommen.
Im Lernpaketprogramm geht das auch über TXD, leider hab ich das noch nicht hinbekommen weil ich keinen Befehl für hab.
Bei -> http://www.hsg-kl.de/faecher/inf/msr...owo04/TCPD.php hab ich gesehn, dass es eigentlich eine procedure gibt, die TXD ansteuert, allerdings funktioniert die bei mir nicht bzw existiert nicht. Hab auch schon versucht einfach die procedure von der genannten Seite zu kopieren, aber das geht leider auch nicht.
Muss ich evtl. ein anderes package installieren?
Hoffe mir kann jemand helfen :D

PS: Ich habe relativ ausführlich mein Problem geschildert, da ich mich nur Hobbymäßig damit beschäftige kenn ich mich nich bei allem so super aus und hab zu vielem nur Halbwissen, deswegen fände ich es nett, wenn auch ihr eure Antworten so formulieren könntet, dass auch Halblaien sie verstehen. ;)

Klaus01 25. Sep 2009 18:53

Re: TComPort - TXD
 
.. aber unter dem angegeben Link ist doch ein komplettes TComPort zu finden?

Wo ist denn da das Problem?

Grüße
Klaus

CaptainAwsome 25. Sep 2009 19:52

Re: TComPort - TXD
 
Hab das mal kopiert und eingebunden, da funktioniert schon direkt das Port öffnen nicht -> "Project LED.exe raised exception class EAccessVilation with message 'access violation at address 0044D8C2 in module 'LED.exe'. Read of address 00000004'. Process stopped. use Step or Run to continue.

Edit: Habs mir mal angeguckt, das liegt glaub irgendwie daran, dass mit ComPort.Open, PortHandle verglichen wird, ohne dass PortHandle je einen Wert zugewiesen bekommen hat. Ich weiß aber auch nicht wo und wie ich das machen muss.

Klaus01 25. Sep 2009 20:30

Re: TComPort - TXD
 
.. mit welcher Delphi-Version arbeitest Du denn?

Grüße
Klaus

CaptainAwsome 25. Sep 2009 20:52

Re: TComPort - TXD
 
Delphi7

LDericher 25. Sep 2009 21:13

Re: TComPort - TXD
 
Hatte mal nen ähnliches Problem...

Das hier war meine Lösung: http://www.delphipraxis.net/internal...t.php?t=136188
Hoffe das hilft auch dir!

Gruß vom LDer.

CaptainAwsome 25. Sep 2009 21:46

Re: TComPort - TXD
 
Da ist nur leider keine procedure zum ansprechen von TXD enthalten. Und um mir die selber zu schreiben blick ich da noch nicht genug durch.

EDIT: Ok habs mit der TComPort von der Inetseite hinbekommen.
Eine Sache interessiert mich noch:

der Befehl
Delphi-Quellcode:
ComPort := TComPort.Create(2);
funktioniert im gegensatz zum Befehl:
Delphi-Quellcode:
 ComPort := TComPort.OpenCom('COM2');
Obwohl der 1. Befehl auch nur folgendes hervorruft:
Delphi-Quellcode:
constructor TComport.Create (AutoInit : Integer);
begin
 case AutoInit of
  1 : OpenCOM('COM1');
  2 : OpenCOM('COM2');
  end; {CASE}
end;
Weil mit dem Create kann ich nur COM1 und 2 ansteuern, mit OpenCom jeden beliebigen. Gibt es eine Möglichkeit irgendwie direkt OpenCom aufzurufen? Natürlich könnte ich auch einfach AutoInit mit mehr Zahlen erweitern, aber das is irgend wie ne unsaubere Lösung.

Klaus01 26. Sep 2009 09:05

Re: TComPort - TXD
 
Guten Morgen,

so wäre der Befehl zum Öffnen richtig:
Delphi-Quellcode:
ComPort.OpenCom('COM2');
Den kannst Du aber solange nicht aufrufen wie die
Instanz ComPort noch nicht erzeugt wurde.

Rein theoretisch sollte es auch so gehen
(ohne am Quelltext von uComPort.pas etwas zu ändern):

Delphi-Quellcode:
ComPort := TComPort.Create(5);
ComPort.OpenCom('COM5');
Grüße
Klaus

Reinhard Kern 26. Sep 2009 13:13

Re: TComPort - TXD
 
Zitat:

Zitat von CaptainAwsome
Da ist nur leider keine procedure zum ansprechen von TXD enthalten. ...

Hallo,

vielleicht suchst du das Falsche - TxD kann man nicht auf 0 oder 1 setzen, sondern über TxD kann man nur Zeichen senden. Ich kenne TComport nicht, weil ich eigene Komponenten für COM schreibe, aber es muss da eine Methode "Senden" geben oder 2 davon, eine für ein char und eine für Strings. Solange man nichts sendet, ist TxD immer 1.

Gruss Reinhard

CaptainAwsome 7. Okt 2009 06:29

Re: TComPort - TXD
 
Habs hinbekommen, in der verlinkten Komponente ist so eine Methode enthalten.
Trial and Error ist eine legitime Lernmethode, oder so ähnlich hat nen Lehrer von mir immer gesagt xD
Das Problem dabei ist leider nur, dass ich dadurch oft nur sehr grob weiß was ich mache obwohl ichs eigentlich gern richtig verstehen würde :/


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:05 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