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

📄 mainform.cpp

📁 一个简明的串口通讯例子
💻 CPP
字号:
//---------------------------------------------------------------------------
//串口通讯示例程序
//作者:冯华亮
//2002.5
#include <vcl.h>
#pragma hdrstop

#include "MainForm.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TFormMain *FormMain;
//---------------------------------------------------------------------------
__fastcall TFormMain::TFormMain(TComponent* Owner)
	: TForm(Owner)
{
	SerialPort=NULL;
        ucData=0;
}
//---------------------------------------------------------------------------

void __fastcall TFormMain::ButtonOKClick(TObject *Sender)
{
	if(ButtonOK->Caption=="开始") 	//开始收发数据
        {
                int iSerialPort=RadioGroupCOM->ItemIndex+1;
                int iBaudRate=StrToInt(EditBaud->Text);
                SerialPort=new TSerialPort();
                //初始化串口,DataBits:8,StopBits:1,无校验位
                if(SerialPort->InitPort(this->Handle,iSerialPort,iBaudRate))
                        SerialPort->StartMonitoring();    //启动串口监控线程,处理I/O事件
                iNo=1;		//接收到的数据序号
		ButtonOK->Caption="停止";
        }
        else	//停止收发数据
        {
                if(SerialPort!=NULL)	//释放串口
                {
			delete SerialPort;
                        SerialPort=NULL;
                }
		ButtonOK->Caption="开始";
        }
}
//---------------------------------------------------------------------------
//串口消息(接收到一个字符)处理函数
//消息的参数WParam就是接收到的字符
void __fastcall TFormMain::OnComRx(TMessage &Message)
{
	ucData=(unsigned char)Message.WParam;
        MemoRcvData->Lines->Add(IntToStr(iNo)+" \t"+IntToStr(ucData)+" \t0x"+IntToHex(ucData,2));
        iNo++;
}
//---------------------------------------------------------------------------
//发送数据
void __fastcall TFormMain::ButtonSendClick(TObject *Sender)
{
        if(SerialPort==NULL)
        {
		Application->MessageBox("请先设置好参数后单击开始按钮,然后再发送数据!","错误",MB_ICONSTOP);
                return;
        }
	SerialPort->WriteToPort(StrToInt(EditSendData->Text));
}
//---------------------------------------------------------------------------
//关闭窗口时释放串口
void __fastcall TFormMain::FormClose(TObject *Sender, TCloseAction &Action)
{
        if(SerialPort!=NULL)
        {
        	delete SerialPort;
                SerialPort=NULL;
        }
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

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