AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

RS232

Offene Frage von "Studtowicz"
Ein Thema von Studtowicz · begonnen am 7. Mär 2005 · letzter Beitrag vom 9. Mär 2005
Antwort Antwort
Benutzerbild von TeronG
TeronG

Registriert seit: 19. Jul 2004
Ort: München
960 Beiträge
 
Delphi 2007 Professional
 
#1

Re: RS232

  Alt 7. Mär 2005, 15:16
hi .. Ihr wollt nen Com-Port ansteuern
oder hab ich da jetzt was missverstanden
Naja falls nicht hab ich das bis dato immer ohne kombos gemacht ..

Und zwar zum öffnen der Verbindung:
Delphi-Quellcode:
// Kommunikation mit Com-Port Initiieren
Procedure VerbindungStart;
Var
// Variablen für das öffnen der Com verbindug
    port:pansichar;
    b_fsuccess, b_RSetMask : Boolean;
    Dcb : TDCB;
    TCOM_com : TCOMMTIMEOUTS;
begin
//************** Com-Schnittstellen konfigurieren und öffnen *******************
//******************************************************************************
  hcom_3:=createfile('com1',GENERIC_READ or GENERIC_WRITE,
                    0,nil,OPEN_EXISTING, 0, 0);
  IF hcom_3=INVALID_HANDLE_VALUE then Application.Terminate;
//************** Com1 setzen: *****************************************
  // READ THE SERIAL PORT CONFIGURATION :
  b_fsuccess := GetcommState(hcom_3,dcb);
  //-------------------------------------
  dcb.BaudRate := baud;
  Dcb.ByteSize := byte;
  Dcb.Parity := Parity; {0-4     = None, Odd, Even, Mark, Space}
  Dcb.StopBits := StopBits; {0, 1, 2 = 1, 1.5, 2                   }
  dcb.flags :=$1011;

  // WRITE SERIAL PORT CONFIGURATION :
  b_fsuccess := SetcommState( hcom_3, Dcb );
  If b_fsuccess = False Then
    MessageDlg( 'WRITE SERIAL PORT CONFIGURATION : FAIL', MtError, [MbOk], 0 );

  // SPECIFIES A SET OF EVENTS TO BE MONITORED :
  b_RSetMask := SetCommMask( hcom_3, EV_RXCHAR );
  //-------------------------------------------
  If b_RSetMask = False Then
    MessageDlg( 'SPECIFIES A SET OF EVENTS TO BE MONITORED : FAIL',
               MtError, [MbOk], 0 );
  // COMPLETE THE STRUCTURE OF THE TIME OUT COMMUNICATION
  TCOM_com.ReadIntervalTimeOut := 500;
  TCOM_com.ReadTotalTimeoutMultiplier := 10;//MAXDWORD;
  TCOM_com.ReadtotalTimeOutConstant := 100;
  //--------------------------------------
  // SET THE TIME OUT OF THE COMMUNICATION
  SetCommTimeouts(hcom_3,TCOM_com);
  //-----------------------------------
  // SET THE SIZE OF THE INPUT AND OUTPUT BUFFER :
  //b_fsuccess := SetupComm( Handle_Com, 1024, 1000 );
  b_fsuccess := SetupComm( hcom_3, 2000, 2000 );
  //--------------------------------------------
  If b_fsuccess = False Then
    MessageDlg( 'SET THE SIZE OF THE INPUT AND OUTPUT BUFFER : FAIL',
                MtError, [MbOK], 0 );
  {************** Com3 Konfiguration lesen:******************************}
  IF GetcommState(hcom_3, DCB) then
  begin
  end
  else MessageDlg('read serial Port configuration: Fail',mtError,[mbOK],0);
//*********************************************************************
end;
zum Schließen:
Delphi-Quellcode:
// Kommunikation mit Com-Port beenden
Procedure VerbindungStop;
Begin
  closehandle(hcom_3);
end;
Zum senden (evtl. noch mit programmschnipseln von mir )
Delphi-Quellcode:
Procedure Senden (sendezeichen :string);
Var
  // SchreibeVar's
  Text : string;
  I,Laenge : integer;
  Zeichen : char;
  State : boolean;
  writtenBytes : dword;

Begin
// ************************ An COM3 Senden : **********************
  Text:=sendezeichen+CHR(013);
  Laenge:=length(Text);
  For I:=1 to Laenge do
  begin
    Zeichen:=Text[I];
    state:= writefile(hcom_3,Zeichen,1, writtenBytes ,nil);
    IF( not state )then
    begin
    // Hier kommt fehlermeldung
      MessageDlg('Fehler beim senden an den Com-Port.', mtWarning, [mbOK], 0);
    end;
  end;
end;
Und zum Empfangen: (evtl. auch noch mit programmschnipseln von mir )
Delphi-Quellcode:
Function Empfangen : String ;
var
  // LeseVar's
  success : boolean;
  Empfangene_Zeichen : array[0..50] of char;
  len : dword;
  Text : string;
  I : integer;
begin
  success:=readfile(hcom_3,Empfangene_Zeichen,35,LEN,nil); // Werte Empfangen
  If not success then
  begin
    MessageDlg('Fehler beim empfangen vom Com-Port.', mtWarning, [mbOK], 0);
  end;

  Result:=Empfangene_Zeichen;
end;
hmmm in der OH sollte mehr darüber stehen ... oder zumindest in der DP
龍 Der Unterschied zwischen Theorie und Praxis ist in der Praxis größer als in der Theorie.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:39 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