?? 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 + -