![]() |
RS232
Moin,
ich habe folgendes Problem: Ich finde einfach kein Tutorial,Forum Eintrag oder sonstiges über die Ansprechung einer seriellen Schnittstelle mit Delphi. Ich habe im Unterricht ein Einschubnetzteil digitalisiert d.h. es kann über eine serielle Schnittstelle bedient werden (Spannung rauf und runter). Habe mit PowerLAb eine visuelle Umgebung geschaffen und möchte dies mit delhi jetzt auch tun. Dabei möchte ich gar nicht so viel Schnick Schnack, einfach erstmal nur zwei Buttons um die Spannung einzustellen. Theoretisch müsste ich ja nur bei Button Klick die Bytefolge senden die ich mit Basic schon im PIC programmiert habe.Aber wie???? Vielleicht kann mir ja einer bitte weiterhelfen. PS:Ich bin ein Noob! :roll: |
Re: RS232
Hi und erstmal herzlich willkommen in der DP :dp: :party:
Die Zeichenfolge, die Du an die Schnittstelle schickst bleibt natürlich die gleiche. Du brauchst also nur eine Möglichkeit, die Schnittstelle anzusprechen. Dazu gibts hier im Forum jede Menge (z.B. ![]() - und als Komponente empfiehlt sich ![]() Viel Erfolg damit :) Gruß Stephan :dance: [edit]Tippfehler[/edit] |
Re: RS232
Danke für die schnelle Antwort,werd mich da erst mal durcharbeiten.
|
Re: RS232
Habe mit serialng Freeware komponente gute Erfahrung.
![]() mit Beispielen peter |
Re: RS232
:wall: Was ist denn das für eine Seite ? :shock: Englisch/deutsch gemischt. Und dann ich glaubs nicht : 3 ? Freeware Projekte, die durch Spenden gefördert werden sollen und dann noch Stundensätze von 1100 EUR ? :lol:
Ist die Seite etwa von Dir ? Ich hoffs mal nicht. Die Preisliste ist auch noch von 2002. :mrgreen: Verwende dann doch besser Async Pro. Das ist "richtige" und vor allem professionelle Freeware. Hat mich schon mal ca. 350 EUR gekostet und jetzt gibts das für nichts ! Wenn dir die 3000 Seiten Handbücher zu viel sind : es geht bei dir wegen serieller Schnittstelle praktisch nur um die Komponenten APuart oder OOCom. Aber ohne Gewähr, ob die wirklich so heißen. Sind immerhin so an die 200 verschiedene. |
Re: RS232
Moin,
afair heißt die/eine benötigte Komponente TApdComPort.. Gruß Stephan :dance: |
Re: RS232
hi .. Ihr wollt nen Com-Port ansteuern :gruebel:
oder hab ich da jetzt was missverstanden :gruebel: Naja falls nicht hab ich das bis dato immer ohne kombos gemacht .. Und zwar zum öffnen der Verbindung:
Delphi-Quellcode:
zum Schließen:
// 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;
Delphi-Quellcode:
Zum senden (evtl. noch mit programmschnipseln von mir :roll:)
// Kommunikation mit Com-Port beenden
Procedure VerbindungStop; Begin closehandle(hcom_3); end;
Delphi-Quellcode:
Und zum Empfangen: (evtl. auch noch mit programmschnipseln von mir :roll:)
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;
Delphi-Quellcode:
hmmm in der OH sollte mehr darüber stehen ... oder zumindest in der DP :dp:
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; |
Re: RS232
Danke erstmal für die ganzen Antworten.
Hab es jetzt hinbekommen, das wenn ich einen Button einmal Drücke und wieder loslasse die Spannung steigt. Beim zweiten Button genau so, nur das die Spg. sinkt. Ich möchte aber das sie steigt so lange ich den button drücke. Habe es versucht mit OnMouseDown. Aber da genau das gleiche. Sehe ich das richtig das ich evt. eine Schleife einbauen muss, und wenn ja WIE :?: Wäre nett wenn mir da nochmal einer Helfen könnte. Danke Gruss Studtowicz |
Re: RS232
Zitat:
|
Re: RS232
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:18 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