⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 comt.~cpp

📁 一个双界面的串口调试工具程序... ... ....!
💻 ~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 + -