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

📄 main.cpp

📁 MSCOMM控件制作的简单串口测试程序
💻 CPP
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Main.h"
#include <Math.hpp>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "MSCommLib_OCX"
#pragma resource "*.dfm"
TMainForm *MainForm;
//---------------------------------------------------------------------------
__fastcall TMainForm::TMainForm(TComponent* Owner)
    : TForm(Owner)
{
    if(MSComm->PortOpen == true)
    {
        Open->Enabled=false;
        Close->Enabled=true;
        Send->Enabled=true;
        Save->Enabled=true;
        Shape1->Brush->Color=clGreen;
    }
    else
    {
        Open->Enabled=true;
        Close->Enabled=false;
        Send->Enabled=false;
        Save->Enabled=false;
        Shape1->Brush->Color=clRed;
    }
}

AnsiString HexToStr(Byte byte,int Digits)
{
	Byte high = byte / 16;
    Byte low =  byte % 16;
    if(Digits == 1)
    {
    	return AnsiString(char(low + '0'));
    }else if(Digits == 2)
    {
    	return AnsiString(char(high + '0')) + AnsiString(char(low + '0'));
    }else
    {
    	return "";
    }
}

Byte CRC(AnsiString string)
{
    Byte byte = 0;
    for(int i =1;i<= string.Length();i++)
    {
        byte ^= string[i];
    }

    return byte;
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::OpenClick(TObject *Sender)
{
    if(MSComm->PortOpen!=true)
    {
        MSComm->CommPort = StrToInt(Com->Text);
        MSComm->Settings=
            BotRat->Text+","+Check->Text+","+
            DataSet->Text+","+StopSet->Text;
        MSComm->InputMode = 0;
        MSComm->PortOpen = true;
        Open->Enabled=false;
        Close->Enabled=true;
        Send->Enabled=true;
        Save->Enabled=true;
        Shape1->Brush->Color=clGreen;
    }
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::CloseClick(TObject *Sender)
{
    if(MSComm->PortOpen!=false)
    {
        MSComm->PortOpen=false;
        Open->Enabled=true;
        Close->Enabled=false;
        Send->Enabled=false;
        Save->Enabled=false;
        Shape1->Brush->Color=clRed;
    }
    else
    {
        Open->Enabled=false;
        Close->Enabled=true;
        Shape1->Brush->Color=clRed;
    }
}

//---------------------------------------------------------------------------
void __fastcall TMainForm::SendClick(TObject *Sender)
{
    /*AnsiString cmd = AnsiString("#") + Edit1->Text + Edit2->Text;
    cmd += Edit3->Text + Edit4->Text +Edit5->Text +Edit6->Text;
    cmd += HexToStr(CRC(cmd.SubString(2,cmd.Length() -1)),2) + AnsiString(char(0x0d));
    MemoSend->Text = cmd;   */
    //char aaa[2] = {0xc0,0x00};
    MemoSend->Text = AnsiString((char)0xc0);//aaa;//.sprintf("%c",aaa[1]);
    MSComm->Output=StringToOleStr(MemoSend->Text);
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::MSCommComm(TObject *Sender)
{
    AnsiString str;
    OleVariant s;
    if(MSComm->CommEvent == comEvReceive)
    {
        if(MSComm->InBufferCount)
        {
            s = MSComm->Input;
            str = s.AsType(varString);
            MemoReceive->Text = MemoReceive->Text+str;
        }
    }
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::SaveClick(TObject *Sender)
{
    AnsiString filename1;
    SaveDialog1->Filter="Text files(*.txt)|*.txt|All files(*.*)|*.*";
    SaveDialog1->FilterIndex = 2;
    if(SaveDialog1->Execute())
    {
        filename1 = SaveDialog1->FileName;
        MemoReceive->Lines->SaveToFile(filename1);
    }
}

//---------------------------------------------------------------------------



void __fastcall TMainForm::FormCreate(TObject *Sender)
{
    MemoSend->Clear();
    MemoReceive->Clear();    
}
//---------------------------------------------------------------------------


void __fastcall TMainForm::MemoSendDblClick(TObject *Sender)
{
    MemoSend->Clear();
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::MemoReceiveDblClick(TObject *Sender)
{
    MemoReceive->Clear();    
}
//---------------------------------------------------------------------------


void __fastcall TMainForm::FormClose(TObject *Sender, TCloseAction &Action)
{
    if(MSComm->PortOpen == true)
        MSComm->PortOpen = false;    
}
//---------------------------------------------------------------------------


⌨️ 快捷键说明

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