📄 comt.~cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "COMT.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "MSCommLib_OCX"
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)//第一路串口打开
{
if(MSComm1->PortOpen!=true)
{
//Memo1->Text="";
//Memo2->Text="";
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;
}
else
if(ComboBox1->Text=="COM5")
{
COM=5;
}
else
if(ComboBox1->Text=="COM6")
{
COM=6;
}
else
if(ComboBox1->Text=="COM7")
{
COM=7;
}
else
if(ComboBox1->Text=="COM8")
{
COM=8;
}
MSComm1->CommPort=COM;//StrToInt(ComboBox1->Text);//选择串口号
MSComm1->Settings=
ComboBox2->Text+","+
ComboBox3->Text+","+
ComboBox4->Text+","+
ComboBox5->Text; //file://设置串口的属性波特率、奇偶校验、数据位和、//停止位。
MSComm1->InputMode=0;//设置传入数据的格式,0表示文本形式
MSComm1->PortOpen=true;//打开串口
Timer1->Interval=StrToInt(Edit1->Text.Trim());
Timer1->Enabled=true;
//Button1->Enabled=false;
//Button2->Enabled=true;
//Button3->Enabled=true;
//Button4->Enabled=true;
//Button5->Enabled=true;
Shape1->Brush->Color=clGreen;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button5Click(TObject *Sender)//第二路串口打开
{
if(MSComm2->PortOpen!=true)
{
//Memo1->Text="";
//Memo2->Text="";
int COM;
if(ComboBox6->Text=="COM1")
{
COM=1;
}
else
if(ComboBox6->Text=="COM2")
{
COM=2;
}
else
if(ComboBox6->Text=="COM3")
{
COM=3;
}
else
if(ComboBox6->Text=="COM4")
{
COM=4;
}
else
if(ComboBox6->Text=="COM5")
{
COM=5;
}
else
if(ComboBox6->Text=="COM6")
{
COM=6;
}
else
if(ComboBox6->Text=="COM7")
{
COM=7;
}
else
if(ComboBox6->Text=="COM8")
{
COM=8;
}
MSComm2->CommPort=COM;//StrToInt(ComboBox1->Text);//选择串口号
MSComm2->Settings=
ComboBox7->Text+","+
ComboBox8->Text+","+
ComboBox9->Text+","+
ComboBox10->Text; //file://设置串口的属性波特率、奇偶校验、数据位和、//停止位。
MSComm2->InputMode=0;//设置传入数据的格式,0表示文本形式
MSComm2->PortOpen=true;//打开串口
Timer2->Interval=StrToInt(Edit1->Text.Trim());
Timer2->Enabled=true;
//Button1->Enabled=false;
//Button2->Enabled=true;
//Button3->Enabled=true;
//Button4->Enabled=true;
//Button5->Enabled=true;
Shape2->Brush->Color=clGreen;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button4Click(TObject *Sender)//第一路串口关闭
{
Timer1->Enabled=false;
if(MSComm1->PortOpen!=false)
{
MSComm1->PortOpen=false;
//Button1->Enabled=true;
//Button2->Enabled=false;
//Button3->Enabled=false;
//Button4->Enabled=false;
//Button5->Enabled=false;
Shape1->Brush->Color=clRed;
}
else
{
//Button1->Enabled=false;
//Button2->Enabled=true;
Shape1->Brush->Color=clRed;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button6Click(TObject *Sender)//第二路串口关闭
{
Timer2->Enabled=false;
if(MSComm2->PortOpen!=false)
{
MSComm2->PortOpen=false;
//Button1->Enabled=true;
//Button2->Enabled=false;
//Button3->Enabled=false;
//Button4->Enabled=false;
//Button5->Enabled=false;
Shape2->Brush->Color=clRed;
}
else
{
//Button1->Enabled=false;
//Button2->Enabled=true;
Shape2->Brush->Color=clRed;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::oncomm1(TObject *Sender) //第一路串口中断
{
AnsiString str; //声明一个AnsiString类型的变量
OleVariant s; //声明一个用于接收数据的OleVariant变量。
if(MSComm1->CommEvent==comEvReceive) // 接收缓冲区中是否收到Rthreshold个字符。
{
if(MSComm1->InBufferCount)// 是否有字符驻留在接收缓冲区等待被取出
{
s=MSComm1->Input;//接收数据
str=s.AsType(varString); //file://把接收到的OleVariant变量转换成AnsiString类型
Memo1->Text=Memo1->Text+str;//把接收到的数据显示在Memo1中。
//Memo1->Text=Memo1->Text+str+'\r'+'\n';//把接收到的数据显示在Memo1中。
//Memo1->Lines->Add(str);
}
//Memo1->Text=Memo1->Text+'\r'+'\n';
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::oncomm2(TObject *Sender) //第二路串口中断
{
AnsiString str; //声明一个AnsiString类型的变量
OleVariant s; //声明一个用于接收数据的OleVariant变量。
if(MSComm2->CommEvent==comEvReceive) // 接收缓冲区中是否收到Rthreshold个字符。
{
if(MSComm2->InBufferCount)// 是否有字符驻留在接收缓冲区等待被取出
{
s=MSComm2->Input;//接收数据
str=s.AsType(varString); //file://把接收到的OleVariant变量转换成AnsiString类型
Memo3->Text=Memo3->Text+str;//把接收到的数据显示在Memo1中。
//Memo1->Lines->Add(str);
}
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button7Click(TObject *Sender)//第一路串口发送
{
String Buf; //定义十六进制变量
DynamicArray<int> arrayOfInt; //强制转换为整形变量
AnsiString S = Memo5->Text;
AnsiString S1;
int I = 0;
arrayOfInt.Length = S.Length()/2;
if( CheckBox1->Checked )
{
{
while (S.Length() > 0)
{
S1 = "$" + S.SubString(1, 2);
S.Delete(1, 2);
arrayOfInt[I] = StrToInt(S1); //十六进制字符转为数值
Buf = Buf.IntToHex(arrayOfInt[I],2);//数值字符转换为十六进制
MSComm1->Output=StringToOleStr(Buf);//将十六进制送入串口
//MSComm1->Output= Memo2->Text+" ";
I++;
}
}
else
{
MSComm1->Output=StringToOleStr(S);
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button8Click(TObject *Sender)//第二路串口发送
{
String Buf; //定义十六进制变量
DynamicArray<int> arrayOfInt; //强制转换为整形变量
AnsiString S = Memo6->Text;
AnsiString S1;
int I = 0;
arrayOfInt.Length = S.Length()/2;
if( CheckBox3->Checked )
{
while (S.Length() > 0)
{
S1 = "$" + S.SubString(1, 2);
S.Delete(1, 2);
arrayOfInt[I] = StrToInt(S1); //十六进制字符转为数值
Buf = Buf.IntToHex(arrayOfInt[I],2);//数值字符转换为十六进制
MSComm2->Output=StringToOleStr(Buf);//将十六进制送入串口
//MSComm2->Output= Memo6->Text+" ";
I++;
}
}
else
{
MSComm2->Output=StringToOleStr(S);
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)//界面初始化
{
if(MSComm1->PortOpen==true)
{
//Button1->Enabled=false;
//Button2->Enabled=true;
//Button3->Enabled=true;
//Button4->Enabled=true;
//Button5->Enabled=true;
Shape1->Brush->Color=clGreen;
}
else
{
//Button2->Enabled=true;
//Button2->Enabled=false;
//Button3->Enabled=false;
//Button4->Enabled=false;
//Button5->Enabled=false;
Shape1->Brush->Color=clRed;
}
//-----------------------------
if(MSComm2->PortOpen==true)
{
//Button1->Enabled=false;
//Button2->Enabled=true;
//Button3->Enabled=true;
//Button4->Enabled=true;
//Button5->Enabled=true;
Shape2->Brush->Color=clGreen;
}
else
{
//Button2->Enabled=true;
//Button2->Enabled=false;
//Button3->Enabled=false;
//Button4->Enabled=false;
//Button5->Enabled=false;
Shape2->Brush->Color=clRed;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)//第一路端口定时发送
{
String Buf; //定义十六进制变量
DynamicArray<int> arrayOfInt; //强制转换为整形变量
AnsiString S = Memo5->Text;
AnsiString S1;
int I = 0;
arrayOfInt.Length = S.Length()/2;
if( CheckBox2->Checked )//选择定时发送
{
if( CheckBox1->Checked )//选择十六进制发送
{
while (S.Length() > 0)
{
S1 = "$" + S.SubString(1, 2);
S.Delete(1, 2);
arrayOfInt[I] = StrToInt(S1); //十六进制字符转为数值
Buf = Buf.IntToHex(arrayOfInt[I],2);//数值字符转换为十六进制
MSComm1->Output=StringToOleStr(Buf);//将十六进制送入串口
//MSComm1->Output= Memo5->Text+" ";
I++;
}
}
else
{
MSComm1->Output=StringToOleStr(S);
}
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer2Timer(TObject *Sender) //第二路端口定时发送
{
String Buf; //定义十六进制变量
DynamicArray<int> arrayOfInt; //强制转换为整形变量
AnsiString S = Memo6->Text;
AnsiString S1;
int I = 0;
arrayOfInt.Length = S.Length()/2;
if( CheckBox4->Checked )//选择定时发送
{
if( CheckBox3->Checked )//选择十六进制发送
{
while (S.Length() > 0)
{
S1 = "$" + S.SubString(1, 2);
S.Delete(1, 2);
arrayOfInt[I] = StrToInt(S1); //十六进制字符转为数值
Buf = Buf.IntToHex(arrayOfInt[I],2);//数值字符转换为十六进制
MSComm2->Output=StringToOleStr(Buf);//将十六进制送入串口
//MSComm2->Output= Memo6->Text+" ";
I++;
}
}
else
{
MSComm2->Output=StringToOleStr(S);
}
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button11Click(TObject *Sender)
{
Memo1->Text="";
//Memo2->Text="";
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button12Click(TObject *Sender)
{
Memo3->Text="";
//Memo4->Text="";
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button13Click(TObject *Sender)
{
Memo1->Text="";
Memo3->Text="";
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -