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

📄 unit1.cpp

📁 通过串口控件的串口小程序
💻 CPP
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "MSCommLib_OCX"
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
    if(MSComm1->PortOpen)
    {
        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 TForm1::Button1Click(TObject *Sender)
{
    if(!MSComm1->PortOpen)
    {
        MSComm1->CommPort=StrToInt(ComboBox1->Text);   //选择串口号1
        MSComm1->Settings=ComboBox2->Text+",n,8,1";   //设置串口的属性波特率、奇偶校验、数据位和停止位。
        MSComm1->InputMode=0;  //设置传入数据的格式,0表示文本形式

        MSComm1->PortOpen=true;  //打开串口

        Button1->Enabled=false;
        Button2->Enabled=true;
        Button3->Enabled=true;
        Button4->Enabled=true;
        Shape1->Brush->Color=clGreen;
        MSComm1->OutBufferCount = 0;
        MSComm1->InBufferCount = 0;
    }
    else
        ShowMessage("串口打开失败!");

}
//---------------------------------------------------------------------------
//关闭串口
void __fastcall TForm1::Button2Click(TObject *Sender)
{
    if(MSComm1->PortOpen)
    {
        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 TForm1::Button3Click(TObject *Sender)
{
    if (!MSComm1->PortOpen)
    {
        ShowMessage("串口未打开!");
        return;
    }
    buff = Memo1->Text;
    MSComm1->Output = buff;
}
//---------------------------------------------------------------------------
//保存数据
void __fastcall TForm1::Button4Click(TObject *Sender)
{
    AnsiString filename1;
    SaveDialog1->Filter="Doc files(*.doc)|*.doc|Text files (*.txt)|*.txt";//文件类型过滤器
    SaveDialog1->FilterIndex=2;//默认第2个过滤器
    if(SaveDialog1->Execute())
    {
        filename1=SaveDialog1->FileName;
        Memo2->Lines->SaveToFile(filename1);//把收到的数据保存在文件filename1中
    }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::MSComm1Comm(TObject *Sender)  //事件驱动方式
{
    if(MSComm1->CommEvent == comEvReceive)
    {
        if(MSComm1->InBufferCount)     //如果输入缓冲区不为空
        {
            buff = MSComm1->Input;
            Memo2->Text = Memo2->Text+ buff;
        }
    }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button5Click(TObject *Sender)
{
    Close();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button7Click(TObject *Sender)
{
    MSComm1->OutBufferCount = 0;
    buff = "";
    Memo1->Text = "";
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button8Click(TObject *Sender)
{
    MSComm1->InBufferCount = 0;
    buff = "";
    Memo2->Text = "";
}
//---------------------------------------------------------------------------



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -