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

📄 unit1.~cpp

📁 一个串口测试程序
💻 ~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 + -