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

📄 mainfun.~cpp

📁 串口数据采集的上位机源码
💻 ~CPP
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "MainFun.h"
#include "Setting.h"
#include "SettingSample.h"
#include "SettingSystem.h"
#include "SystemConfig.h"
#include "stdio.h"
#include "FFTDisp.h"
#include <math.h>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TfrmMain *frmMain;
bool Saved=false;
bool CheckResult=false;
int chbuff[8];     //通道临时缓冲
int chbuffpos=0;
int RxCount=0;
FILE *fplog;
FILE *fptest;

//---------------------------------------------------------------------------
__fastcall TfrmMain::TfrmMain(TComponent* Owner)
        : TForm(Owner)
{
   //syscfg.ComBaud="115200";
   //Sampling=800;
   syscfg.UpdateConfig();
}
//---------------------------------------------------------------------------
//消息的参数WParam就是接收到的字符
void __fastcall TfrmMain::OnComRx(TMessage &Message)
{
int i,j,k;
unsigned char ucRxData=(unsigned char)Message.WParam;
//ShowMessage( ucRxData);
Head0=Head1;
Head1=ucRxData;
//if(fplog!=NULL)
fprintf(fplog,"%d\n",Head1);
//return;
//如果是数据头
if(Head0==0xAA&&Head1==0x75)
{
  RxCount=0;
  tmct->Enabled=true;
  return;
}
//不是数据头,但是不是整个数字
RxCount++;
//是整个数字
if(RxCount%2==0)
{
AdValue=Head1+256* Head0;
chbuff[chbuffpos]=AdValue;
chbuffpos++;
}

/*
if(RxCount==syscfg.ADChanelCount*2)
    {
     fprintf(fptest,"%d\n",chbuff[0]);
     chbuffpos=0;
     RxCount=0;
   }
 return;  */
//是否多个通道数据都已经发送完毕
if(RxCount>=syscfg.ADChanelCount*2)
{
  RxCount=0;
  //采集到所有通道
  if(chbuffpos>=(syscfg.ADChanelCount))
    {
      chbuffpos=0;
      //保存到所有通道
      for(i=0;i<syscfg.ADChanelCount;i++)
        {
           for(j=1;j<syscfg.DataBuffLength;j++)
             syscfg.DataBuff[i][j-1]=syscfg.DataBuff[i][j];
           syscfg.DataBuff[i][syscfg.DataBuffLength-1]=chbuff[i];
           fprintf(fp[i],"%d\n",chbuff[i]);
        }
    }
}
}
//---------------------------------------------------------------------------

void __fastcall TfrmMain::tmctTimer(TObject *Sender)
{
  int i,j;

   for(i=0;i<syscfg.ADChanelCount;i++)
  {
   ct->Series[i]->Clear();
   for(int j=0;j<syscfg.DispCount;j++)
      ct->Series[i]->Add(syscfg.DataBuff[i][j],j);
  }
}
//---------------------------------------------------------------------------
 void __fastcall TfrmMain::N9Click(TObject *Sender)
{
   Application->Terminate();
}
//---------------------------------------------------------------------------




void __fastcall TfrmMain::N2Click(TObject *Sender)
{
   frmSettingDisp->ShowModal();
}
//---------------------------------------------------------------------------

void __fastcall TfrmMain::N3Click(TObject *Sender)
{
  frmSettingSample->ShowModal();
}
//---------------------------------------------------------------------------

void __fastcall TfrmMain::N5Click(TObject *Sender)
{
 frmSettingSystem->ShowModal();
}
//---------------------------------------------------------------------------

void __fastcall TfrmMain::mnStartSampleClick(TObject *Sender)
{
 int i,j,k;

SerialPort=new TSerialPort();  //实例化一个串口控制类
SerialPort->InitPort(this,syscfg.ComPort,StrToInt(syscfg.ComBaud));
//初始化串口,Baud:9600,DataBits:8,StopBits:1,无校验位
SerialPort->StartMonitoring();  //创建串口监控线程,开始监控
for(i=0;i<syscfg.ADChanelCount;i++)
  fp[i]=fopen(syscfg.DataPath[i].c_str(),"w");
fplog=fopen("c:\\datalog.txt","w");
fptest=fopen("c:\\testlog.txt","w");

}
//---------------------------------------------------------------------------

void __fastcall TfrmMain::mnEndSampleClick(TObject *Sender)
{
   SerialPort->StopMonitoring();
   for(int i=0;i<syscfg.ADChanelCount;i++)
     fclose(fp[i]);
   delete[] &SerialPort;
   tmct->Enabled=false;
   fprintf(fplog,"Storp Dataing\n");
   fclose(fplog);
   fclose(fptest);
}
//---------------------------------------------------------------------------


void __fastcall TfrmMain::FormClose(TObject *Sender, TCloseAction &Action)
{
   if(SerialPort!=NULL)
   {
   SerialPort->StopMonitoring();
   delete[] &SerialPort;
   for(int i=0;i<syscfg.ADChanelCount;i++)
     fclose(fp[i]);
   fclose(fplog);
   tmct->Enabled=false;
   }
}
//---------------------------------------------------------------------------

void __fastcall TfrmMain::FormCreate(TObject *Sender)
{
  ct->Width=this->Width;
  ct->Height=this->Height;
  ct->Left=0;
  ct->Top=0;
}
//---------------------------------------------------------------------------

void __fastcall TfrmMain::FormResize(TObject *Sender)
{
  ct->Width=this->Width;
  ct->Height=this->Height;
  ct->Left=0;
  ct->Top=0;
}
//---------------------------------------------------------------------------

//点开始上传
void __fastcall TfrmMain::N7Click(TObject *Sender)
{
  int i,j,k;

SerialPort=new TSerialPort();  //实例化一个串口控制类
SerialPort->InitPort(this,syscfg.ComPort,StrToInt(syscfg.ComBaud));
//初始化串口,Baud:9600,DataBits:8,StopBits:1,无校验位
SerialPort->SendFrame(0x02,0,0,NULL);
SerialPort->StartMonitoring();  //创建串口监控线程,开始监控
for(i=0;i<syscfg.ADChanelCount;i++)
  fp[i]=fopen(syscfg.DataPath[i].c_str(),"w");
fplog=fopen("c:\\datalog.txt","w");
fptest=fopen("c:\\testlog.txt","w");
}
//---------------------------------------------------------------------------

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


void __fastcall TfrmMain::FFT1Click(TObject *Sender)
{
FFTform->Show();
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

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