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

📄 unit1.cpp

📁 光学仪器的控制系统 用于教学和科研的仪器
💻 CPP
📖 第 1 页 / 共 5 页
字号:
  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(&current);

}
//---------------------------------------------------------------------------
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 + -