//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include <stdio.h>
#include "Main.h"
#include <Math.hpp>
#include <time.h>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "MSCommLib_OCX"
#pragma resource "*.dfm"
TMainForm *MainForm;
long y[30000];
int i=0;int j=0;int js;
int k=0; int sjb;
int fudu;
int q=0;
char f=4;
long t[30000];
long u[30000];
int zxcy;
int zdcy;
int zzcy;
int zycy;
int cfa;
int cfadian;
//---------------------------------------------------------------------------
__fastcall TMainForm::TMainForm(TComponent* Owner)
: TForm(Owner)
{
if(MSComm->PortOpen == true)
{
Open->Enabled=false;
Close->Enabled=true;
Save->Enabled=true;
Shape1->Brush->Color=clGreen;
}
else
{
Open->Enabled=true;
Close->Enabled=false;
Save->Enabled=false;
Shape1->Brush->Color=clRed;
}
}
//---------------------------------------------------------------------------
void shengjilu()
{int A,B;
A=0;B=0;
while(B!=500*sjb)
{if (t[A + 1] ==13&&t[A + 2]== 10)
{A=A+ 1;}
y[B]=StrToInt(t[A]);
y[B] = 400-y[B];
A = A + 1;
B = B + 1;
}
}
//---------------------------------------------------------------------------
void chquxian()
{int I,Q; double x1,y1,x0,y0;
MainForm->Image1->Canvas->Pen->Color=clRed;
MainForm->Image1->Canvas->Pen->Color=clRed;
MainForm->Image1->Canvas->Pen->Style=0;
x0=0;y0=y[zzcy]+fudu;
MainForm->Image1->Canvas->MoveTo(x0,y0);
for(I=zzcy;I<zycy;I++)
{x1=12000*(I-zzcy)/(zycy-zzcy);y1=y[I]+fudu;
MainForm->Image1->Canvas->LineTo(x1,y1);
}
}
//---------------------------------------------------------------------------
void chufa()
{int I;cfadian=0;
if(MainForm->RadioGroup2->ItemIndex==0)
{cfadian=0;}
if(MainForm->RadioGroup2->ItemIndex==1)
{for(I=zxcy;I<zdcy;I++)
{if(((y[I]+fudu)<(MainForm->cfa->Position))&&((y[I+1]+fudu)>=(MainForm->cfa->Position)))
{cfadian=I;break;}
}
}
if(MainForm->RadioGroup2->ItemIndex==2)
{for(I=zxcy;I<zdcy;I++)
{
if(((y[I]+fudu)>(MainForm->cfa->Position))&&((y[I+1]+fudu)<=(MainForm->cfa->Position)))
{cfadian=I;break;}
}
}
zzcy=cfadian;zycy=cfadian+250*sjb;
}
//---------------------------------------------------------------------------
void shuaxing()
{MainForm->Image1->Picture->Graphic=NULL;
MainForm->Image1->Canvas->Rectangle(0,0,500,400); MainForm->Image1->Canvas->Pen->Style=2;
for(int a=1;a<=7;a++){MainForm->Image1->Canvas->MoveTo(0,50*a);MainForm->Image1->Canvas->LineTo(500,50*a);}
for(int a=1;a<=9;a++){MainForm->Image1->Canvas->MoveTo(50*a,0);MainForm->Image1->Canvas->LineTo(50*a,400);}
chufa();
chquxian();
}
//---------------------------------------------------------------------------
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 = 1;
MSComm->InBufferCount = 0;
MSComm->OutBufferCount = 0;
MSComm->RThreshold=501*sjb;
MSComm->InputLen=501*sjb;
MainForm->Timer1->Enabled=true;
Open->Enabled=false;
Close->Enabled=true;
Save->Enabled=true;
Shape1->Brush->Color=clGreen;
}
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::CloseClick(TObject *Sender)
{
if(MSComm->PortOpen!=false)
{ MainForm->Timer1->Enabled=false;
MSComm->PortOpen=false;
Open->Enabled=true;
Close->Enabled=false;
Save->Enabled=false;
Shape1->Brush->Color=clRed;
}
else
{ MainForm->Timer1->Enabled=false;
Open->Enabled=true;
Close->Enabled=false;
Shape1->Brush->Color=clRed;
}
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::MSCommComm(TObject *Sender)
{
AnsiString str;
OleVariant s;
long len;
if(MSComm->CommEvent == comEvReceive)
{
if(MSComm->InBufferCount>0)
{
s=MSComm->Input;
str = s.AsType(varString);
len=s.ArrayHighBound(1);
for(int i=0;i<=len;i++)
{ t[i]=s.GetElement(i);
MemoReceive->Clear();
}
MSComm->PortOpen=false;
shengjilu();
zxcy=0;
zdcy=500*sjb;
shuaxing();
}
}
}
//---------------------------------------------------------------------------
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)
{ int I;
MainForm->Image1->Canvas->MoveTo(170,20);
MainForm->Image1->Canvas->Rectangle(0,0,500,400);
MainForm->Image1->Canvas->Pen->Style=2;
for(int a=1;a<=7;a++){MainForm->Image1->Canvas->MoveTo(0,50*a);MainForm->Image1->Canvas->LineTo(500,50*a);}
for(int a=1;a<=9;a++){MainForm->Image1->Canvas->MoveTo(50*a,0);MainForm->Image1->Canvas->LineTo(50*a,400);}
MemoSend->Clear();
MemoReceive->Clear();
for(I=0;I<30000;I++){y[I]=0;}
MainForm->RadioGroup2->ItemIndex=0;
MainForm->DoubleBuffered =true;
fudu=-50;f=4;
sjb=1;j=0;k=0;
}
//---------------------------------------------------------------------------
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;
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::BitBtn1Click(TObject *Sender)
{
ShellAboutA(Handle,"基于USB接口的虚拟示波器","李德健版权所有 [email protected] 沈阳工业大学",0);
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::Timer1Timer(TObject *Sender)
{k++;Edit1->Text=k;
if(MSComm->PortOpen == false)
{MSComm->PortOpen=true;
MSComm->Output=StringToOleStr(f);
MainForm->Image1->Picture->Graphic=NULL;//MainForm->Image1->Picture->LoadFromFile("E:\\CBuilder6\\Projects\\示波器背景.bmp");
MainForm->Image1->Canvas->Rectangle(0,0,500,400);
MainForm->Image1->Canvas->Pen->Style=2;
for(int a=1;a<=7;a++){MainForm->Image1->Canvas->MoveTo(0,50*a);MainForm->Image1->Canvas->LineTo(500,50*a);}
for(int a=1;a<=9;a++){MainForm->Image1->Canvas->MoveTo(50*a,0);MainForm->Image1->Canvas->LineTo(50*a,400);}
}
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::Button4Click(TObject *Sender)
{
switch(sjb)
{case 1:
Label6->Caption=FloatToStr((1.000))+'m'+'s'+'/'+"格"; sjb=2;
break;
case 2:
Label6->Caption=FloatToStr(2.000)+'m'+'s'+'/'+"格";sjb=4;
break;
case 4:
Label6->Caption=FloatToStr(4.000)+'m'+'s'+'/'+"格";sjb=8;
break;
case 8:
Label6->Caption=FloatToStr(5.000)+'m'+'s'+'/'+"格";sjb=10;
break;
case 10:
Label6->Caption=FloatToStr(10.000)+'m'+'s'+'/'+"格";sjb