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 + -
显示快捷键?