Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Relais am Com-Port [Lösung aus C in Delphi nutzerbar?] (https://www.delphipraxis.net/48949-relais-am-com-port-%5Bloesung-aus-c-delphi-nutzerbar-%5D.html)

sentinal 3. Jul 2005 00:33


Relais am Com-Port [Lösung aus C in Delphi nutzerbar?]
 
Hallo,

ich habe mir auf meinem Linux mal vor einiger Zeit eine Möglichkeit zusammengebaut um am COM-Port direkt die Spannung auf einigen Pinnen zu bestimmen. Diese Lösung war in C und ich habe sie unten hingeschrieben. Die Frage ist nun, kann man dies auch in Delphi unter Windows so direkt ansteuern?


Code:
int main(int argc, char *argv[])
{
   int fd = 0, currstat = 0;

    if((fd = open(argv[1], O_RDWR | O_NDELAY)) < 0) {
      printf("Fehler: Device \"%s\" kann nicht geöffnet werden.\n", argv[1]);
      return 2;
    } 
    currstat |= TIOCM_RTS; // RTS an
    ioctl(fd, TIOCMSET, &currstat);
    usleep(500000);
    currstat &= ~TIOCM_RTS; // RTS aus
    ioctl(fd, TIOCMSET, &currstat);
    close(fd);
    return 0;
}
sentinal

flomei 3. Jul 2005 01:53

Re: Relais am Com-Port [Lösung aus C in Delphi nutzerbar?]
 
Kommt auf die Windows-Version an.
Win9x und ME sind kein Problem, bei allem darüber brauchst du nen Treiber o.ä.

MFG Florian :hi:

sentinal 3. Jul 2005 01:59

Re: Relais am Com-Port [Lösung aus C in Delphi nutzerbar?]
 
Hallo,

es geht um Server 2003...

Kann man den Port nicht einfach öffnen so wie bei Linux?

sentinal

Robert Marquardt 3. Jul 2005 05:29

Re: Relais am Com-Port [Lösung aus C in Delphi nutzerbar?]
 
Es laesst sich machen. Schlimmstenfalls braucht man einen Treiber.
Am besten ist es in der Modding-Szene zu suchen.
Dort moechte man mit wenig Geld die unmoeglichsten Gimmicks ansteuern.
Konsequenterweise gibt es dort Software fuer serielle und parallele Schnittstellen.
http://www.modding-faq.de ist z. B. eine Adresse von der man starten kann.

x000x 3. Jul 2005 17:32

Re: Relais am Com-Port [Lösung aus C in Delphi nutzerbar?]
 
Moin moin,

dein C -code sollte in delphi so aussehen...
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var Comport : String;
    FHandle : THandle;
begin
   ComPort := '\\.\COM1'; // Für Com1
   FHandle := THandle( CreateFile(PChar(ComPort), GENERIC_READ or GENERIC_WRITE,
                       0, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL or FILE_FLAG_OVERLAPPED, 0));
   if FHandle = INVALID_HANDLE_VALUE then
      Exit;
   try
      // RTS An
      if Not EscapeCommFunction(FHandle, SETRTS) then
         // Error ?!
         Exit;
      Sleep(500);
      // RTS Aus
      if Not EscapeCommFunction(FHandle, CLRRTS) then
         // Error ?!
         Exit;
   finally
      FileClose(FHandle);
   end;
end;
PS: Denke mal es funktioniert so, schlagt mich aber nicht wenn ich falsch liege
(Habe nicht wirklich nen Plan von der Materie)

100nF 3. Jul 2005 18:16

Re: Relais am Com-Port [Lösung aus C in Delphi nutzerbar?]
 
hi,

hab auch mal sowas gebaut. den code habe ich von hier.

benutze winXP und es hat funktioniert. ich denke es solte auch auf Server 2003 laufen...

gruss
urbanbruhin

sentinal 3. Jul 2005 19:14

Re: Relais am Com-Port [Lösung aus C in Delphi nutzerbar?]
 
Hallo,

also der Code von x000x klappt super.

Nun muss ich mich nurnoch mit ISDN-Karten und Diensten rumschlagen.

Mal sehen ob man von Delphi irgendwie auf die ISDN-Karte zugreifen kann, aber das gehört dann ja nicht mehr in dieses Thema.


Besten Dank!!

sentinal


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