📄 unit1.~cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "MSCommLib_OCX"
#pragma resource "*.dfm"
Tshangweiji *shangweiji;
//---------------------------------------------------------------------------
__fastcall Tshangweiji::Tshangweiji(TComponent* Owner)
: TForm(Owner)
{
if(MSComm1->PortOpen==true)
{
Button1->Enabled=false;
Button2->Enabled=true;
Button3->Enabled=true;
Button4->Enabled=true;
Shape1->Brush->Color=clGreen;
}
else
{
Button2->Enabled=true;
Button2->Enabled=false;
Button3->Enabled=false;
Button4->Enabled=false;
Shape1->Brush->Color=clRed;
}
}
void __fastcall Tshangweiji::Button1Click(TObject *Sender) //打开串口
{
if(MSComm1->PortOpen!=true)
{
Memo1->Text=NULL;
Memo2->Text=NULL;
int COM;
if(ComboBox1->Text=="COM1")
{
COM=1;
}
else
if(ComboBox1->Text=="COM2")
{
COM=2;
}
else
if(ComboBox1->Text=="COM3")
{
COM=3;
}
else
if(ComboBox1->Text=="COM4")
{
COM=4;
}
MSComm1->CommPort=COM;//StrToInt(ComboBox1->Text);//选择串口号
MSComm1->Settings=
ComboBox2->Text+","+
ComboBox3->Text+","+
ComboBox4->Text+","+
ComboBox5->Text; //file://设置串口的属性波特率、奇偶校验、数据位和、//停止位。
MSComm1->InputMode=0;//设置传入数据的格式,0表示文本形式
MSComm1->PortOpen=true;//打开串口
Button1->Enabled=false;
Button2->Enabled=true;
Button3->Enabled=true;
Button4->Enabled=true;
Shape1->Brush->Color=clGreen;
}
}
//---------------------------------------------------------------------------
void __fastcall Tshangweiji::Button3Click(TObject *Sender)
{
int i;
const unsigned char QDM[7]={0xeb,0x90,0x03,0xaa,0x00,0x00,0x55};
OleVariant s; //声明一个用于接收数据的OleVariant变量。
String Buf;
for(i=0;i<7;i++)
{
s=QDM[i];//接收数据
Buf = Buf.IntToHex(s,2); //将数值转换为16进制数值字符
MSComm1->Output=StringToOleStr(s); //file://把AnsiString型转化成//Ole形式。
Memo2->Text=Memo2->Text+Buf;//把接收到的数据显示在Memo2中。
}
}
//---------------------------------------------------------------------------
void __fastcall Tshangweiji::Button4Click(TObject *Sender)
{
AnsiString filename1;
SaveDialog1->Filter="comm.txt";//文件类型过滤器
SaveDialog1->FilterIndex=2;
if(SaveDialog1->Execute())
{
filename1=SaveDialog1->FileName;
Memo1->Lines->SaveToFile(filename1);//把收到的数据保存在文件filename1中
}
}
//---------------------------------------------------------------------------
void __fastcall Tshangweiji::Button2Click(TObject *Sender)
{
if(MSComm1->PortOpen!=false)
{
MSComm1->PortOpen=false;
Button1->Enabled=true;
Button2->Enabled=false;
Button3->Enabled=false;
Button4->Enabled=false;
Shape1->Brush->Color=clRed;
}
else
{
Button1->Enabled=false;
Button2->Enabled=true;
Shape1->Brush->Color=clRed;
}
}
//---------------------------------------------------------------------------;
void __fastcall Tshangweiji::OnComm(TObject *Sender)
{
AnsiString str; //声明一个AnsiString类型的变量
OleVariant s; //声明一个用于接收数据的OleVariant变量。
String Buf;
if(MSComm1->CommEvent==comEvReceive) // 接收缓冲区中是否收到Rthreshold个字符。
{
if(MSComm1->InBufferCount)// 是否有字符驻留在接收缓冲区等待被取出
{
s=MSComm1->Input;//接收数据
str=s.AsType(varString); //file://把接收到的OleVariant变量转换成AnsiString类型
Memo1->Text=Memo1->Text+str;//把接收到的数据显示在Memo1中。
}
}
}
//---------------------------------------------------------------------------
void __fastcall Tshangweiji::Button5Click(TObject *Sender)
{
Memo1->Text=NULL;
Memo2->Text=NULL;
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -