Announcement

Collapse
No announcement yet.

Borland C++Builder 5. Zugriff auf Rs232 ?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Borland C++Builder 5. Zugriff auf Rs232 ?

    Im Borland C++ Builder 5 Professional, suche ich eine Möglichkeit Daten über die RS232 Schnittstellen zu senden und zu empfangen. Wer kann mir weiter helfen. Wenn möglich mit Mustercode.

    Vielen Dank im voraus.

    Jochen Bayer

  • #2
    Der C++ Builder bietet keine direkten VCL-Funktionen um auf die serielle Schnittstelle zugreifen zu können. Da mußt du schon auf die Windows API-Befehle zurückgreifen. Hilfe findest du in der Windows SDK Helpfile.

    Wichtig um einen COM-Port zu öffnen ist die CreateFile-Methode mit der du einen Handle auf die Schnittstelle bekommst. Anschließend kannst du mit diesem Handle z. B. die Funktionen GetBaudRate oder SetBaudRate erstellen. Achtung bei dem CreateFile. Diese Funktion darf nur einmal aufgerufen werden, ansonsten kannst du ja den Handle wieder schließen. Hier ein kleines Beispiel

    <body bgcolor=#FFFFFF text=#000000>
    <code>
    <font color=#3E3EFF><i>//---------------------------------------------------------------------------</i></font><br>
    <br>
    <font color=#008000>#include&nbsp;<vcl.h></font><br>
    <font color=#008000>#pragma&nbsp;hdrstop</font><br>
    <br>
    <font color=#008000>#include&nbsp;"MainU.h"</font><br>
    <font color=#3E3EFF><i>//---------------------------------------------------------------------------</i></font><br>
    <font color=#008000>#pragma&nbsp;package(smart_init)</font><br>
    <font color=#008000>#pragma&nbsp;resource&nbsp;"*.dfm"</font><br>
    TfrmMain&nbsp;*frmMain;<br>
    <font color=#3E3EFF><i>//---------------------------------------------------------------------------</i></font><br>
    <font color=#000000><b>__fastcall</b></font>&nbsp;TfrmMain::TfrmMain(TComponent*&nbsp;Own er)<br>
    &nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;TForm(Owner)<br>
    {<br>
    }<br>
    <font color=#3E3EFF><i>//---------------------------------------------------------------------------</i></font><br>
    HANDLE&nbsp;hCom;<br>
    DCB&nbsp;dcb;<br>
    BOOL&nbsp;fSuccess;<br>
    <br>
    <br>
    <font color=#000000><b>void</b></font>&nbsp;<font color=#000000><b>__fastcall</b></font>&nbsp;TfrmMain::btnSerialPortClick(TObject&nb sp;*Sender)<br>
    {<br>
    &nbsp;&nbsp;&nbsp;&nbsp;DWORD&nbsp;dwError;<br>
    <br>
    &nbsp;&nbsp;&nbsp;&nbsp;<font color=#000000><b>if</b></font>&nbsp;(hCom&nbsp;==&nbsp;INVALID_HANDLE_VALUE )<br>
    &nbsp;&nbsp;&nbsp;&nbsp;{<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dw Error&nbsp;=&nbsp;GetLastError();<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sh owMessage(<font color=#0000A0><b>"XXXXXXXXXXXX"</b></font>);<br>
    &nbsp;&nbsp;&nbsp;&nbsp;}<br>
    <br>
    <br>
    &nbsp;&nbsp;&nbsp;&nbsp;<font color=#3E3EFF><i>//&nbsp;Fill&nbsp;in&nbsp;the&nbsp;DCB:&nbsp;baud=96 00,&nbsp;8&nbsp;data&nbsp;bits,&nbsp;no&nbsp;parit y,&nbsp;1&nbsp;stop&nbsp;bit.</i></font><br>
    <br>
    &nbsp;&nbsp;&nbsp;&nbsp;dcb.BaudRate&nbsp;=&nbsp;S trToInt(edtBaudNeu->Text);<br>
    &nbsp;&nbsp;&nbsp;&nbsp;dcb.ByteSize&nbsp;=&nbsp;< font color=#0000A0><b>8</b></font>;<br>
    &nbsp;&nbsp;&nbsp;&nbsp;dcb.Parity&nbsp;=&nbsp;NOP ARITY;<br>
    &nbsp;&nbsp;&nbsp;&nbsp;dcb.StopBits&nbsp;=&nbsp;O NESTOPBIT;<br>
    <br>
    &nbsp;&nbsp;&nbsp;&nbsp;fSuccess&nbsp;=&nbsp;SetCo mmState(hCom,&nbsp;&dcb);<br>
    <br>
    &nbsp;&nbsp;&nbsp;&nbsp;<font color=#000000><b>if</b></font>&nbsp;(!fSuccess)<br>
    &nbsp;&nbsp;&nbsp;&nbsp;{<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sh owMessage(<font color=#0000A0><b>"Leider&nbsp;konnten&nbsp;die&nbs p;Werte&nbsp;nicht&nbsp;gesetzt&nbsp;werden!"</b></font>);<br>
    &nbsp;&nbsp;&nbsp;&nbsp;}<br>
    <br>
    }<br>
    <font color=#3E3EFF><i>//---------------------------------------------------------------------------</i></font><br>
    <font color=#000000><b>void</b></font>&nbsp;<font color=#000000><b>__fastcall</b></font>&nbsp;TfrmMain::Oeffnen()<br>
    {<br>
    &nbsp;&nbsp;&nbsp;&nbsp;hCom&nbsp;=&nbsp;CreateFil e<br>
    &nbsp;&nbsp;&nbsp;&nbsp;(<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<f ont color=#0000A0><b>"COM1"</b></font>,<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GE NERIC_READ&nbsp;|&nbsp;GENERIC_WRITE,<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<f ont color=#0000A0><b>0</b></font>,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nb

    Comment


    • #3
      hallo jochen,

      vor kurtzem hatte ich dieses problem auch in delphi (barcodescanner). leider hatte
      ich noch keine zeit dieses problem zu lösen, da im betrieb wichtigere dinge anstanden.
      aber zu dieser problematik habe ich die infos gefunden, das es dazu komponenten gibt.
      eine davon ist im delphi5 kochbuch als beispielprogramm. auf s.839. hier handelt es sich
      aber nur um eine demo-version. die vollversion kostet mit source 120. diese komponente
      müßte auch mit dem cpp-builder einsetzbar sein. falls du nähere infos willst schreib mir
      einfach ([email protected])
      ak

      Comment


      • #4
        Ich benutze für diese Fälle die Komponenten aus AsyncProfessional von TurboPower.
        Die bieten noch wesentlich mehr Funktionen.
        Zu finden unter www.turbopower.co

        Comment


        • #5
          Die besten Komponenten findest du bei www.torry.net

          Unter communications/Port and Modem findest du die, wie ich finde vom Preis-Leistungsverhältnis beste Shareware Komponente ComPort von Eric salaj (30$ mit Source!) (www.cybermagic.co.nz/winsoft
          Außerdem die sehr gute freeware TComPort von Dejan Crnila auch mit Source

          Comment

          Working...
          X