📄 unit1.cpp
字号:
csd[2]=ptc.lamp;
csd[3]=ptc.speed;
csd[4]=ptc.m3;
csd[5]=ptc.m4;
csd[8]=ptc.source;
csd[9]=ptc.slit;
csd[10]=ptc.vol;
strcpy(samp,ptc.samp);
strcpy(oper,ptc.oper);
gpdata=1;
gpdisp=1;
}
else
{
ws=0;
we=(int)ptc.wne;
for(i=ws;i<=we;i++)
FileWrite(iFileHandle,&tc[i],4);
}
FileClose(iFileHandle);
bSaveFile=true;
}//if( (iFileHandle = FileOpen(file_name1, fmOpenWrite))!=-1)
else
{
Application->MessageBox("无法存储文件!","存储文件错误",MB_OK|MB_ICONWARNING);
}
//FileClose(iFileHandle);
}
//---------------------------------------------------------------------------
void TForm1::file_load_option()
{
int iFileHandle;
if( (iFileHandle = FileOpen(file_name1, fmOpenRead))!=-1)// -1 失败
{
FileRead(iFileHandle,wfz25bj,10);
if(!strcmp(wfz25bj2,wfz25bj))
{
FileRead(iFileHandle,&csd[1],2);
FileRead(iFileHandle,&csd[2],2);
FileRead(iFileHandle,&csd[3],2);
FileRead(iFileHandle,&csd[4],2);
FileRead(iFileHandle,&csd[5],2);
FileRead(iFileHandle,&csd[0],2);
FileRead(iFileHandle,&tnh,4);
FileRead(iFileHandle,&tnl,4);
FileRead(iFileHandle,&wns,4);
FileRead(iFileHandle,&wne,4);
FileRead(iFileHandle,&csd[8],2);
FileRead(iFileHandle,&csd[9],2);
FileRead(iFileHandle,&csd[10],2);
FileRead(iFileHandle,wfz25bj2,10);
}
else
{
Application->MessageBox("不是光谱参数文件!"
,"文件错误",MB_OK|MB_ICONWARNING);
}
FileClose(iFileHandle);
}
else
{
Application->MessageBox(file_name1,"不能打开文件",MB_OK|MB_ICONWARNING);
}
//FileClose(iFileHandle);
}
//---------------------------------------------------------------------------
void TForm1::file_save_ascii()
{
int iFileHandle;
char deschar[7];
char datachar[10];
//float start;
float interval;
int data_total_n;
//start=ptc.wns;
interval=(float)itl[ptc.interval]/(float)wnd0;
data_total_n=(ptc.wne-ptc.wns)/(int)(interval*1000)*1000;
strcat(file_name1,".txt");
if( (iFileHandle = FileCreate(file_name1))!=-1)
{
for(int i = 0;i<=data_total_n;i++)
{
sprintf(deschar,"%3.1f",ptc.wns+interval*(float)i);
FileWrite(iFileHandle,deschar,5);
if(tc[i]<10)
{
sprintf(datachar," %1.3f",tc[i]);
strcat(datachar,"\r\n");
FileWrite(iFileHandle,datachar,8);
}
else if(tc[i]<100)
{
sprintf(datachar," %2.2f",tc[i]);
strcat(datachar,"\r\n");
FileWrite(iFileHandle,datachar,8);
}
else if(tc[i]<1000)
{
sprintf(datachar," %3.2f",tc[i]);
strcat(datachar,"\r\n");
FileWrite(iFileHandle,datachar,9);
}
else
{
sprintf(datachar," %4.1f",tc[i]);
strcat(datachar,"\r\n");
FileWrite(iFileHandle,datachar,9);
}
strcat(datachar,"\r\n");
//FileWrite(iFileHandle,"/n")
}
FileClose(iFileHandle);
}
}
//---------------------------------------------------------------------------
void TForm1::file_save_option()
{ /*光谱参数存盘*/
int iFileHandle = FileCreate(file_name1);
if( iFileHandle!=-1)
{
FileWrite(iFileHandle,wfz25bj2,10);
FileWrite(iFileHandle,&csd[1],2);
FileWrite(iFileHandle,&csd[2],2);
FileWrite(iFileHandle,&csd[3],2);
FileWrite(iFileHandle,&csd[4],2);
FileWrite(iFileHandle,&csd[5],2);
FileWrite(iFileHandle,&csd[0],2);
FileWrite(iFileHandle,&tnh,4);
FileWrite(iFileHandle,&tnl,4);
FileWrite(iFileHandle,&wns,4);
FileWrite(iFileHandle,&wne,4);
FileWrite(iFileHandle,&csd[8],2);
FileWrite(iFileHandle,&csd[9],2);
FileWrite(iFileHandle,&csd[10],2);
FileWrite(iFileHandle,wfz25bj2,10);
FileClose(iFileHandle);
}
else
{
Application->MessageBox("无法存储文件!","存储文件错误",MB_OK|MB_ICONWARNING);
}
//FileClose(iFileHandle);
}
//---------------------------------------------------------------------------
void TForm1::file_load_a()
{ // 光谱数据读入
int iFileHandle;
int i,n1,n2,ws,we;
try
{
if( (iFileHandle = FileOpen(file_name1, fmOpenRead))!=-1)// -1 失败
{
FileRead(iFileHandle,wfz25bj,10);
if(!strcmp(wfz25bj1,wfz25bj))
{
FileRead(iFileHandle,&ptc.m1,2);
FileRead(iFileHandle,&ptc.m2,2);
FileRead(iFileHandle,&ptc.m3,2);
FileRead(iFileHandle,&ptc.m4,2);
FileRead(iFileHandle,&ptc.wns,4);
FileRead(iFileHandle,&ptc.wne,4);
FileRead(iFileHandle,&ptc.tnh,4);
FileRead(iFileHandle,&ptc.tnl,4);
FileRead(iFileHandle,&ptc.lamp,2);
FileRead(iFileHandle,&ptc.speed,2);
FileRead(iFileHandle,&ptc.interval,2);
FileRead(iFileHandle,&ptc.source,2);
FileRead(iFileHandle,&ptc.slit,2);
FileRead(iFileHandle,&ptc.vol,2);
FileRead(iFileHandle,ptc.samp,50);
FileRead(iFileHandle,ptc.oper,50);
FileRead(iFileHandle,&ptc.dattim[1],2);
FileRead(iFileHandle,&ptc.dattim[2],2);
FileRead(iFileHandle,&ptc.dattim[3],2);
FileRead(iFileHandle,&ptc.dattim[4],2);
FileRead(iFileHandle,&ptc.dattim[5],2);
FileRead(iFileHandle,&ptc.dattim[6],2);
FileRead(iFileHandle,wfz25bj,10);
if(ptc.m3!=3)//不是时间扫描
{
ws=ptc.wns*10;
we=ptc.wne*10;
n1=0;
n2=(ptc.wne-ptc.wns)*(float)wnd0/(float)itl[ptc.interval];//??
if(ws>=wns0*10&&ws<wne0*10&&we>wns0*10&&we<=wne0*10)
{
for(i=n1;i<=n2;i++)
FileRead(iFileHandle,&tc[i],4);
FileClose(iFileHandle);
if(ptc.m3!=3)
{
wns=ptc.wns;
wne=ptc.wne;
}
tnh=ptc.tnh;
tnl=ptc.tnl;
csd[0]=ptc.interval;
csd[1]=ptc.m1;
csd[2]=ptc.lamp;
csd[3]=ptc.speed;
csd[4]=ptc.m3;
csd[5]=ptc.m4;
if(ptc.source>=320&&ptc.source<=400)
csd[8]=ptc.source;
csd[9]=ptc.slit;
if(ptc.vol>=1&&ptc.vol<=8)
csd[10]=ptc.vol;
strcpy(samp,ptc.samp);
strcpy(oper,ptc.oper);
gpdata=1;
gpdisp=1;
}
}
else
{
ws=0;
we=(int)ptc.wne;
if(we<=6000)//6000秒,100分
{
for(i=ws;i<=we;i++)
FileRead(iFileHandle,&tc[i],4);
FileClose(iFileHandle);
//if(ptc.m3!=3)
//{
// wns=ptc.wns;
// wne=ptc.wne;
//}
wns=ptc.wns;
wne=ptc.wne;
tnh=ptc.tnh;
tnl=ptc.tnl;
csd[0]=ptc.interval;
csd[1]=ptc.m1;
csd[2]=ptc.lamp;
csd[3]=ptc.speed;
csd[4]=ptc.m3;
csd[5]=ptc.m4;
ptc.interval=1;
ptc.speed=1;
csd[8]=ptc.source;
csd[9]=ptc.slit;
csd[10]=ptc.vol;
strcpy(samp,ptc.samp);
strcpy(oper,ptc.oper);
gpdata=1;
gpdisp=1;
}
}
}
else
{
Application->MessageBox("不是光谱数据文件!","文件错误",MB_OK|MB_ICONWARNING);
gpdata=0;
}
}
else
{
Application->MessageBox(file_name1,"不能打开文件",MB_OK|MB_ICONWARNING);
}
}// try
catch(...)
{
//FileClose(iFileHandle);
Application->MessageBox(file_name1, "打开文件错误", MB_OK|MB_ICONWARNING);
}
}
//---------------------------------------------------------------------------
void TForm1::DrawQX(void)
{ // 画光谱曲线
int n1,n2,x,y,i;
float t = 0.0;
if(ptc.m2==0) return; // 如果没有光谱数据就返回
if(csd[1]==3&&ptc.m1!=3) return;
if(csd[1]!=3&&ptc.m1==3) return;
if(ptc.m2==8&&csd[4]!=3) return;
if(wns>ptc.wns)
n1=(wns-ptc.wns)*(float)wnd0/(float)itl[ptc.interval];
else
n1=0;
if(wne<ptc.wne)
n2=(wne-ptc.wns)*(float)wnd0/(float)itl[ptc.interval];
else
n2=(ptc.wne-ptc.wns)*(float)wnd0/(float)itl[ptc.interval];
t=tc[n1];
switch(csd[1])
{
case 1:break;
case 2:t=toa(t);break;
case 3:break;
}
x=wx0+(wx1-wx0)/(wne-wns)*(-wns+(ptc.wns+(float)(n1*itl[ptc.interval])/(float)wnd0));
y=wy0+(float)(wy1-wy0)*(tnh-t)/(tnh-tnl);
if(x<wx0)
x=wx0;
else if(x>wx1)
x=wx1;
if(y>(wy1+5))
y=wy1+5;
else if(y<(wy0-5))
y=wy0-5;
Image1->Canvas->MoveTo(x,y);
Image1->Canvas->Pen->Style=psSolid;
Image1->Canvas->Pen->Color=clQX;
for(i=n1;i<=n2;i++)
{
t=tc[i];
switch(csd[1])
{
case 1:break;
case 2:t=toa(t);break;
case 3:break;
}
x=wx0+(wx1-wx0)/(wne-wns)*(-wns+(ptc.wns+(float)(i*itl[ptc.interval])/(float)wnd0));
y=wy0+(float)(wy1-wy0)*(tnh-t)/(tnh-tnl);
if(x<wx0)
x=wx0;
else if(x>wx1)
x=wx1;
if(y>(wy1+5))
y=wy1+5;
else if(y<(wy0-5))
y=wy0-5;
Image1->Canvas->LineTo(x,y);
}
if(bReadData==true)//正在读取数据
{
IMTemp->Canvas->CopyRect(RSRect,Image1->Canvas,RDRect);//Get
/*Image1->Canvas->MoveTo(Rx-5,Ry-5);
Image1->Canvas->LineTo(Rx+5,Ry+5);
Image1->Canvas->MoveTo(Rx-5,Ry+4);//?
Image1->Canvas->LineTo(Rx+5,Ry-5);*/
DrawCross(Rx,Ry);
GetData(Rwi);
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormResize(TObject *Sender)
{ //限制窗体的大小
//if(WindowState!=wsMaximized)
// WindowState=wsMaximized;
if(Form1->Width<200) Form1->Width=200;
if(Form1->Height<200) Form1->Height=200;
//Image1->Canvas->MoveTo(Image1->Width-100,0);
//Image1->Canvas->LineTo(Image1->Width-5,Image1->Height-5);
DrawBK();
if(ptc.m2!=0)
DrawQX();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::IdleHandler(TObject *Sender, bool &Done)
{
//
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
SetResetorNot(false);
ReadDelay();
sCurBC="当前波长:"; sCurEn="测量值:"; sBaseEn="基线值:";
Thread1=NULL;// 线程指针
clQX=clBlue; // 曲线颜色
clCross=clRed;// 读取数据十字颜色
clBK=clBlack; // 光谱框颜色
clMulti[0]=clFuchsia; clMulti[1]=clGreen; clMulti[2]=clOlive; clMulti[3]=clNavy; clMulti[4]=clPurple;
clMulti[5]=clRed; clMulti[6]=clYellow; clMulti[7]=clAqua; clMulti[8]=clSkyBlue; clMulti[9]=clCream;
bReadData=false;// 读取数据标志 =true 读取;=false 不读取
bOnIdle=true; // 闲循环为真
mfs=0; mls=0; mss=0;
mcs=6400-wavemove; wn=6400; // 当前波长和电机总步数
StatusBar1->Font->Size=12;
//FormTest_On->Show();
//FormTest_On->Repaint();
//delaypara=165;
//Pci1->initial();
//baseaddr=Pci1->GetBaseAddr();
baseaddr=0x3e0;
Init();
ReadPP();
//Application->OnIdle = IdleHandler;
}
//---------------------------------------------------------------------------
void TForm1::Init(void)
{// 系统初始化
bSaveFile=false;
bMouseLeft=false;
wx0=JUKUAN; wy0=JUKUAN;
wx1=Image1->Width-JUKUAN;
wy1=Image1->Height-JUKUAN;
memset(&ptb,0,sizeof(para));//清零
memset(&ptc,0,sizeof(para));
memset(&ptd,0,sizeof(para));
pp1=0.0;pp2=1.0;
dds=-75;wds=80;
con=750;con1=4;con2=2;
wac=40;was=80;waf=80;wal=100; //wac=30;was=80;waf=80;wal=100;
wnd0=40; //wnd0=40;
wns0=190.0; //wns0=190.0;
wne0=900.0; //wne0=900.0;
itl[0]=40; itl[1]=40; itl[2]=20; itl[3]=4; itl[4]=1;
grid[0]=1;grid[1]=2;grid[2]=5;grid[3]=10;
bScale=false;
bGrid=false;
Xgridindex=2;
Ygridindex=2;
wns=wns0;
wne=wne0;
tnl=0; tnh=4095;
csd[0]=1;
csd[1]=3; // 测量模式为 透过率
csd[2]=1; // 工作光源为 氘灯
csd[3]=2; // 扫描速度为 快速
csd[4]=1; // 扫描方式为 重复扫描
csd[5]=1; // 次数时间为 1次
csd[8]=360; // 换灯波长为 360 nm
csd[9]=5; // 狭缝宽度为 2 nm
csd[10]=2; // 负高压为 1 档
csd[11]=1; // 增 益为 1 档
//26改完
pad1[0]=baseaddr+4;pad1[1]=baseaddr+5;pad1[2]=baseaddr+6;pad1[3]=baseaddr+7;
pad2[0]=baseaddr+0;pad2[1]=baseaddr+1;pad2[2]=baseaddr+2;pad2[3]=baseaddr+3;
//26改完
add_c=pad1[1];
add_f=pad1[1];
add_l=pad1[2];
add_s=pad1[2];
add_csfl=pad2[1];
//26改完
in_c0=0x20; in_s0=0x80; in_f0=0x01; in_l0=0x40;
//26改完
//0514 增加小刻度距离数组
iArrayScale[0]=1;iArrayScale[1]=2;iArrayScale[2]=5;iArrayScale[3]=10;
iScaleIndex=2;
for(int i=0;i<28500;i++)
{ tc[i]=0.0;
tb[i]=1.0;
td[i]=0.0;}
for(int i=0;i<8100;i++)
{ pkw1[i]=0;
pkw2[i]=0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -