📄 unit1.cpp
字号:
Form1->BoChangJianSuo();
}
//---------------------------------------------------------------------------
void TForm1::BoChangJianSuo()
{ // 波长检索
int n1,n2,ss;
int wn2=(int)fBoChangValue;
n1=wns0*(float)wnd0;
n2=wne0*(float)wnd0;
ss=wn2*wnd0;
Form1->ChangLamp_set(ss);
{
while(wn%wnd0)
{
if(bStop==true)
goto END;
mczf(1,1);
wn=mcs+wavemove;
}
if(ss>=n1&&ss<=n2)
{
sprintf(gs,"正在进行波长检索%3.1f nm,请稍候...",(float)wn2);
StatusBar1->Panels->Items[0]->Text=gs;
Form1->StatusBar1->Repaint();
while(mcs>ss-400-wavemove)
{
mczf(0,wnd0);
wn=mcs+wavemove;
pTimeDelay->delay_ms(3);
StatusBar1->Panels->Items[1]->Text = sCurBC+FloatToStr((float)wn/(float)wnd0)+" nm";
Form1->StatusBar1->Repaint();
if(bStop==true)
break;
}
while(mcs<ss-wavemove)
{
mczf(1,wnd0);
wn=mcs+wavemove;
pTimeDelay->delay_ms(3);
StatusBar1->Panels->Items[1]->Text=sCurBC+FloatToStr((float)wn/(float)wnd0)+" nm";
Form1->StatusBar1->Repaint();
if(bStop==true)
break;
}
filter_set();
if(bStop==true)
{
StatusBar1->Panels->Items[0]->Text="波长检索中断";
Form1->StatusBar1->Repaint();
}
else
{
StatusBar1->Panels->Items[0]->Text="波长检索完毕";
Form1->StatusBar1->Repaint();
}
if(csd[4]==3)
{ //如果是时间扫描,在横坐标下显示
//show(168,370,1,0,14,1,"时间扫描 当前波长 ");
}
}
}
END:
Scan->Enabled=true;
Search->Enabled=true;
EnableMenuItems(); // 显示菜单
StatusBar1->Panels->Items[0]->Text="请选择操作...";
Form1->StatusBar1->Repaint();
Repaint();
}
//---------------------------------------------------------------------------
void TForm1::mczf(int m, int step)
{// m=0 扫描电机反走step步; m=1 扫描电机正走step步
bool machinescan = true;
if(m==0)
{
pInterface->USBDataDown(0x12,0,0,step); //扫描电机反走S步
do
{
if(pInterface->Delay(0x12,3,6))
{
mcs = mcs - step;
machinescan = false;
}
}while(machinescan);
}
else
{
pInterface->USBDataDown(0x11,0,0,step); //狭缝电机正走S步
do
{
if(pInterface->Delay(0x11,3,6))
{
mcs = mcs + step;
machinescan = false;
}
}while(machinescan);
}
}
//---------------------------------------------------------------------------
void TForm1::mszf(int m, int step)
{ // m=0 狭缝电机反走step步; m=1 狭缝电机正走step步
bool machinescan = true;
if(m==0)
{
pInterface->USBDataDown(0x18,0,0,step); //狭缝电机反走S步
do
{
if(pInterface->Delay(0x18,3,6))
{
mss = mss - step;
machinescan = false;
}
}while(machinescan);
}
else
{
pInterface->USBDataDown(0x17,0,0,step); //狭缝电机正走S步
do
{
if(pInterface->Delay(0x17,3,6))
{
mss = mss + step;
machinescan = false;
}
}while(machinescan);
}
}
//---------------------------------------------------------------------------
void TForm1::mfzf(int m, int step)
{ // m=0 滤光片电机反走step步; m=1 滤光片电机正走step步
bool machinescan = true;
if(m==0)
{
pInterface->USBDataDown(0x14,0,0,step); //滤光片电机反走S步
do
{
if(pInterface->Delay(0x14,3,6))
{
mfs = mfs - step;
machinescan = false;
}
}while(machinescan);
}
else
{
pInterface->USBDataDown(0x13,0,0,step); //滤光片电机正走S步
do
{
if(pInterface->Delay(0x13,3,6))
{
mfs = mfs + step;
machinescan = false;
}
}while(machinescan);
}
}
//---------------------------------------------------------------------------
void TForm1::mlzf(int m, int step)
{ // m=0 灯电机走反走step步; m=1 灯电机走正走step步
bool machinescan = true;
if(m==0)
{
pInterface->USBDataDown(0x16,0,0,step); //光源电机反走S步
do
{
if(pInterface->Delay(0x16,3,6))
{
mls = mls - step;
machinescan = false;
}
}while(machinescan);
}
else
{
pInterface->USBDataDown(0x15,0,0,step); //光源电机正走S步
do
{
if(pInterface->Delay(0x15,3,6))
{
mls = mls + step;
machinescan = false;
}
}while(machinescan);
}
}
//---------------------------------------------------------------------------
void TForm1::dely(int t)
{
LARGE_INTEGER frequent,interval,previous,current;
QueryPerformanceFrequency(&frequent);
interval.QuadPart=t*(float)frequent.QuadPart/10000;
QueryPerformanceCounter(&previous);
current=previous;
while(current.QuadPart-previous.QuadPart<interval.QuadPart)
QueryPerformanceCounter(¤t);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::KeDuKuoZanClick(TObject *Sender)
{ // 光谱刻度扩展
SetZuoBiao->wnhs=wns;//横坐标
SetZuoBiao->wnhe=wne;
SetZuoBiao->wnzs=tnl;//纵坐标
SetZuoBiao->wnze=tnh;
SetZuoBiao->ShowModal();
if(SetZuoBiao->ifOK==true)
{
wns=SetZuoBiao->wnhs;//横坐标
wne=SetZuoBiao->wnhe;
tnl=SetZuoBiao->wnzs;//纵坐标
tnh=SetZuoBiao->wnze;
DrawBK();
DrawQX();
}
StatusBar1->Panels->Items[0]->Text="请选择操作...";
Form1->StatusBar1->Repaint();
}
//---------------------------------------------------------------------------
float TForm1::tbb() //返回1
{
// int l;
float w;
w=(float)wn/(float)wnd0;
if(w<ptb.wns)
return(1.0);
else if(w>ptb.wne)
return(1.0);
else
{
// l=int((w-ptb.wns)*(float)wnd0/(float)itl[csd[0]]+0.49);
return tb[int((w-ptb.wns)*(float)wnd0/(float)itl[csd[0]]+0.49)];
}
}
//---------------------------------------------------------------------------
int TForm1::gotown()
{ // 波长检索到起始波长 wns 处
int start;
bool gostart, dir=false;
sprintf(gs,"正在进行波长检索%3.1f nm,请稍候...",wns);
pTimeDelay->delay_ms(3);
StatusBar1->Panels->Items[0]->Text=gs;
pTimeDelay->delay_ms(4);
Form1->StatusBar1->Repaint();
pTimeDelay->delay_ms(35);
start=wns*wnd0-wavemove-wnd0*10;
while(mcs<start)
{
dir = true;
if(wn%100 != 0)
{
int decuple = int(wn/100+1)*100-wavemove;
gostart = true;
pInterface->USBDataDown(0x19,0,decuple>>8,decuple&0xff);
pTimeDelay->delay_ms(4);
do
{
if(pInterface->Delay(0x19,10,15))
{
mcs = (speedh<<8 | speedl);
gostart = false;
}
}while(gostart);
wn=mcs+wavemove;
StatusBar1->Panels->Items[1]->Text=sCurBC+FloatToStr((float)wn/40)+" nm";
Form1->StatusBar1->Repaint();
}
gostart = true;
pInterface->USBDataDown(0x19,0,(mcs+wnd0*10)>>8,(mcs+wnd0*10)&0xff);
pTimeDelay->delay_ms(4);
do
{
if(pInterface->Delay(0x19,10,15))
{
mcs = (speedh<<8 | speedl);
gostart = false;
}
}while(gostart);
wn=mcs+wavemove;
StatusBar1->Panels->Items[1]->Text=sCurBC+FloatToStr((float)wn/40)+" nm";
Form1->StatusBar1->Repaint();
}
while(mcs>start)
{
if(dir == true)
{
if(mcs<start+wnd0*10) break;
}
if(wn%100 != 0)
{
int decuple = int(wn/100)*100-wavemove;
gostart = true;
pInterface->USBDataDown(0x19,0,decuple>>8,decuple&0xff);
pTimeDelay->delay_ms(4);
do
{
if(pInterface->Delay(0x19,10,15))
{
mcs = (speedh<<8 | speedl);
gostart = false;
}
}while(gostart);
wn=mcs+wavemove;
StatusBar1->Panels->Items[1]->Text=sCurBC+FloatToStr((float)wn/40)+" nm";
Form1->StatusBar1->Repaint();
}
gostart = true;
pInterface->USBDataDown(0x19,0,(mcs-wnd0*10)>>8,(mcs-wnd0*10)&0xff);
pTimeDelay->delay_ms(4);
do
{
if(pInterface->Delay(0x19,10,15))
{
mcs = (speedh<<8 | speedl);
gostart = false;
}
}while(gostart);
wn=mcs+wavemove;
StatusBar1->Panels->Items[1]->Text=sCurBC+FloatToStr((float)wn/40)+" nm";
Form1->StatusBar1->Repaint();
}
if(wn==wns*wnd0 && dir==false)
{
gostart = true;
pInterface->USBDataDown(0x19,0,start>>8,start&0xff);
pTimeDelay->delay_ms(4);
do
{
if(pInterface->Delay(0x19,10,15))
{
mcs = (speedh<<8 | speedl);
gostart = false;
}
}while(gostart);
wn=mcs+wavemove;
StatusBar1->Panels->Items[1]->Text=sCurBC+FloatToStr((float)wn/40)+" nm";
Form1->StatusBar1->Repaint();
}
gostart = true;
pInterface->USBDataDown(0x19,0,(start+wnd0*10)>>8,(start+wnd0*10)&0xff);
pTimeDelay->delay_ms(4);
do
{
if(pInterface->Delay(0x19,10,15))
{
mcs = (speedh<<8 | speedl);
gostart = false;
}
}while(gostart);
wn=mcs+wavemove;
StatusBar1->Panels->Items[1]->Text=sCurBC+FloatToStr((float)wn/40)+" nm";
Form1->StatusBar1->Repaint();
return wn;
}
//---------------------------------------------------------------------------
void TForm1::parameter_set_ch()
{ //改变系统状态
//StatusBar1->Panels->Items[0]->Text="正在改变系统状态,请稍候...";
//Form1->StatusBar1->Repaint();
Form13->Show();
Form13->Repaint();
//选择扫描速率
switch(csd[3])
{
case 1:con=90;
break;
case 2:con=120;
break;
case 3:con=180;
break;
case 4:con=250;
}
//能量方式选择
if(csd[1]==3)
set_emode();
else
set_tmode();
pTimeDelay->delay_ms(4);
//设置负高压
if(csd[1]==3)
{
if(csd[10]<1||csd[10]>8)
csd[10]=1;
NHighVoltage(csd[10]);
}
else
{
NHighVoltage(1);
}
//设置狭缝
int yy;
switch(csd[9])
{
case 1: pInterface->USBDataDown(0x1c,0,0,0);
pInterface->Delay(0x1c,10,200);
break;
case 2: pInterface->USBDataDown(0x1c,0,90>>8,90);
pInterface->Delay(0x1c,10,200);
break;
case 3: pInterface->USBDataDown(0x1c,0,180>>8,180&0xff);
pInterface->Delay(0x1c,10,200);
break;
case 4: pInterface->USBDataDown(0x1c,0,300>>8,300&0xff);
pInterface->Delay(0x1c,10,200);
break;
case 5: pInterface->USBDataDown(0x1c,0,442>>8,442&0xff);
pInterface->Delay(0x1c,10,200);
break;
case 6: pInterface->USBDataDown(0x1c,0,715>>8,715&0xff);
pInterface->Delay(0x1c,10,200);
break;
case 7: pInterface->USBDataDown(0x1c,0,800>>8,800&0xff);
pInterface->Delay(0x1c,10,200);
break;
}
pTimeDelay->delay_ms(50);
Form13->Close();
}
//---------------------------------------------------------------------------
void TForm1::getdattim(int m)
{// 获得当前时间和日期
SYSTEMTIME time;
GetLocalTime(&time);
if(m==1)
{
ptc.dattim[1]=time.wYear;
ptc.dattim[2]=time.wMonth;
ptc.dattim[3]=time.wDay;;
ptc.dattim[4
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -