unit1.cpp

来自「一个不错的串口调试程序」· C++ 代码 · 共 113 行

CPP
113
字号
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "com.h"        // f黵 Funktion ladeDLL();
#include <cstring>
#define HEAD1 0xAA      // Header f黵 Senden
#define HEAD2 0x55      // Header f黵 Senden

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
   B_open->Caption = "COM 鰂fnen";
}
//---------------------------------------------------------------------------

void __fastcall TForm1::B_openClick(TObject *Sender)
{
   if(B_open->Caption == "COM 鰂fnen") {
       try {
          ladeDLL();
          char parameter[] = "COM1:9600,N,8,1";
          if(!opencom(parameter)) ShowMessage("Fehler");
          else B_open->Caption = "COM schliessen";
       }
       catch(...) {
          ShowMessage("DLL kann nicht geladen werden");
       }   
    }
    else {
      closecom();
      B_open->Caption = "COM 鰂fnen";
    }
}

//---------------------------------------------------------------------------

void TForm1::senden (void)
{
   static unsigned char port;
   port = (((CB_Port0_0->Checked) * 1) + ((CB_Port0_1->Checked) * 2) +
           ((CB_Port0_2->Checked) * 4) + ((CB_Port0_3->Checked) * 8) +
           ((CB_Port0_4->Checked) * 16) + ((CB_Port0_5->Checked) * 32) +
           ((CB_Port0_6->Checked) * 64) + ((CB_Port0_7->Checked) * 128));
   E_port0->Text = AnsiString(port);
   if (B_open->Caption == "COM schliessen")
   {
      sendbyte(HEAD1);         // Header
      sendbyte(HEAD2);         // senden
      sendbyte(port);
   }
}
//---------------------------------------------------------------------------

void __fastcall TForm1::CB_clicked(TObject *Sender)
{
   senden();        
}
//---------------------------------------------------------------------------

void __fastcall TForm1::B_ChkTasterClick(TObject *Sender)
{
   int z, i;
   bool binaer[8];
   for (i = 0; i <= 7; i++) binaer[i] = false;   // Array initialisieren
   if (B_open->Caption == "COM schliessen")
   {
        timeout(100);                            // Wartezeit bis timeout in ms
        // Anfrage senden
        sendbyte(HEAD1);
        sendbyte('X');
        // Byte empfangen
        z = readbyte();
        if (z == -1)                             // Timeout oder kein Empfang
        {
           Application->MessageBoxA("Bitte Verbindung zum Controller 黚erpr黤en"
           , "Meldung !", MB_OK);
        }
        else if (z > -1)
        {
           // Umwandeln von dez nach bin鋜 und setzen der H鋕chen
           i = 7;
           while (z > 0)
           {
              binaer[i] = z % 2;
              z = z / 2;
              i--;
           }
           CB_Port2_0->Checked = binaer[7];
           CB_Port2_1->Checked = binaer[6];
           CB_Port2_2->Checked = binaer[5];
           CB_Port2_3->Checked = binaer[4];
           CB_Port2_4->Checked = binaer[3];
           CB_Port2_5->Checked = binaer[2];
           CB_Port2_6->Checked = binaer[1];
           CB_Port2_7->Checked = binaer[0];
        }
   }
   else
   {
      Application->MessageBoxA("COM-Schnittstelle noch nicht ge鰂fnet", "Meldung !", MB_OK);
   }
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?