📄 unit1.~cpp
字号:
//------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
HANDLE hComm; //给串行端口用的Handle
boolean DTRState,RTSState;
//------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
char *ComNo;
DCB dcb;
String Temp;
//取得要打开的通信端口
Temp = "COM"+IntToStr(rdCOM->ItemIndex +1);
//转换至指针类型Char
ComNo = Temp.c_str();
hComm = CreateFile(ComNo,GENERIC_READ | GENERIC_WRITE,
0, NULL, OPEN_EXISTING, 0, 0);
if (hComm == INVALID_HANDLE_VALUE) // 如果COM 未打开
{
MessageBox(0, "打开通信端口错误!!","Comm Error",MB_OK);
return;
}
//将dcb地址传入,以取得通信参数
GetCommState(hComm,&dcb); // 得知目前COM 的状态
dcb.BaudRate = CBR_9600; // 设置波特率为9600
dcb.ByteSize = 8; // 字节为 8 bit
dcb.Parity = NOPARITY; // Parity 为 None
dcb.StopBits = ONESTOPBIT; // 1 个Stop bit
//通信端口设置
if (!SetCommState(hComm, &dcb)) { // 设置COM 的状态
MessageBox (0, "通信端口设置错误!!!","Set Error",MB_OK);
CloseHandle(hComm);
return;
}
EscapeCommFunction( hComm, CLRDTR); //将DTR降为低电位
EscapeCommFunction( hComm, CLRRTS); //将RTS降为低电位
}
//------------------------------------------------------------------
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
//若通信端口未打开,则不作动作,并跳出
if (hComm==0)
{
MessageBox (0, "通信端口未打开!!!","Open Error",MB_OK);
return;
}
//判断DTRState值,输出状态后,将原值作转态
if (DTRState)
{
//输出DTR状态为低电位
EscapeCommFunction( hComm, CLRDTR );
spDTR->Brush->Color=clWhite; //更改信号灯的颜色
}
else
{
//输出DTR的状态为高电位
EscapeCommFunction( hComm, SETDTR );
spDTR->Brush->Color=clRed; //更改信号灯的颜色
}
DTRState =~DTRState; //将DTRState转态
}
//------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
if (hComm!=INVALID_HANDLE_VALUE) CloseHandle(hComm);
exit(EXIT_SUCCESS);
}
//------------------------------------------------------------------
void __fastcall TForm1::BitBtn2Click(TObject *Sender)
{
//若通信端口未打开,则不作动作,并跳出
if (hComm==0)
{
MessageBox (0, "通信端口未打开!!!","Open Error",MB_OK);
return;
}
//判断RTSState值,输出状态后,将原值作转态
if (RTSState)
{
//输出RTS状态为低电位
EscapeCommFunction( hComm, CLRRTS );
spRTS->Brush->Color=clWhite; //更改信号灯的颜色
}
else
{
//输出RTS的状态为高电位
EscapeCommFunction( hComm, SETRTS );
spRTS->Brush->Color=clRed; //更改信号灯的颜色
}
RTSState =~RTSState; //将RTSState转态
}
//------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -