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

📄 main.pas

📁 合成实验的上位机程序
💻 PAS
📖 第 1 页 / 共 2 页
字号:
    cnnUnlockCap.Parent:=MainFrm;
    cnnUnlockCap.Font.Charset:=GB2312_CHARSET;
    cnnUnlockCap.Font.Name:='宋体';
    cnnUnlockCap.Font.Size:=12;
    cnnUnlockCap.Font.Color:=clNavy;
    cnnUnlockCap.AutoSize:=True;
    cnnUnlockCap.Transparent:=True;
    cnnUnlockCap.Left:=256;
    cnnUnlockCap.Top:=634;
    cnnUnlockCap.Caption:='高压/延弧开锁:';
  end;
  //动态生成4个高压开锁通道指示灯和标签
  for I:=1 to 4 do
  begin
    cnnHighNo[I]:=TLabel.Create(Self);
    cnnHighNo[I].Parent:=MainFrm;
    cnnHighNo[I].Font.Charset:=GB2312_CHARSET;
    cnnHighNo[I].Font.Name:='宋体';
    cnnHighNo[I].Font.Size:=12;
    cnnHighNo[I].Height:=16;
    cnnHighNo[I].Width:=48;
    cnnHighNo[I].Transparent:=True;
    cnnHighImg[I]:=TImage.Create(Self);
    cnnHighImg[I].Parent:=MainFrm;
    cnnHighImg[I].Height:=36;
    cnnHighImg[I].Width:=36;
    cnnHighImg[I].AutoSize:=True;
    cnnHighImg[I].Transparent:=True;
    cnnHighImg[I].Tag:=I;
    try
      cnnHighImg[I].Picture.LoadFromFile(PictureDir+'Gray.bmp');
    except
      if MessageBox(MainFrm.Handle,'主程序调用指定文件出错,"Gray.bmp"文件不存在!'+#10+#13+
        '请在备份数据文件后重装应用程序。', '错误', MB_OK+MB_ICONERROR)=IDOK then
           Exit;
    end;
    cnnHighNo[I].Left:=382+78*(I-1);
    cnnHighNo[I].Top:=634;
    cnnHighNo[I].Caption:='高压0'+IntToStr(I);
    cnnHighImg[I].Left:=389+78*(I-1);
    cnnHighImg[I].Top:=654;
  end;
  //动态生成4个延弧开锁通道指示灯和标签
  for I:=1 to 4 do
  begin
    cnnArcNo[I]:=TLabel.Create(Self);
    cnnArcNo[I].Parent:=MainFrm;
    cnnArcNo[I].Font.Charset:=GB2312_CHARSET;
    cnnArcNo[I].Font.Name:='宋体';
    cnnArcNo[I].Font.Size:=12;
    cnnArcNo[I].Height:=16;
    cnnArcNo[I].Width:=48;
    cnnArcNo[I].Transparent:=True;
    cnnArcImg[I]:=TImage.Create(Self);
    cnnArcImg[I].Parent:=MainFrm;
    cnnArcImg[I].Height:=36;
    cnnArcImg[I].Width:=36;
    cnnArcImg[I].AutoSize:=True;
    cnnArcImg[I].Transparent:=True;
    cnnArcImg[I].Tag:=I;
    try
      cnnArcImg[I].Picture.LoadFromFile(PictureDir+'Gray.bmp');
    except
      if MessageBox(MainFrm.Handle,'主程序调用指定文件出错,"Gray.bmp"文件不存在!'+#10+#13+
        '请在备份数据文件后重装应用程序。', '错误', MB_OK+MB_ICONERROR)=IDOK then
           Exit;
    end;
    cnnArcNo[I].Left:=694+78*(I-1);
    cnnArcNo[I].Top:=634;
    cnnArcNo[I].Caption:='延弧0'+IntToStr(I);
    cnnArcImg[I].Left:=701+78*(I-1);
    cnnArcImg[I].Top:=654;
  end;
end;               

procedure TMainFrm.Timer1Timer(Sender: TObject);
var
  tTime:TSYSTEMTIME;
begin
  //**********************************读取系统时间****************************//
  GetLocalTime(tTime);
  Label1.Caption:=IntToStr(tTime.wYear)+'-'+
                  IntToStr(tTime.wMonth)+'-'+
                  IntToStr(tTime.wDay)+' '+
                  IntToStr(tTime.wHour)+':'+
                  IntToStr(tTime.wMinute)+':'+
                  IntToStr(tTime.wSecond);
end;

procedure TMainFrm.MinSpdBtnClick(Sender: TObject);
begin
  //***********窗体最小化*************//
  MainFrm.WindowState:=wsMinimized;
end;

procedure TMainFrm.CloseSpdBtnClick(Sender: TObject);
begin
  //***********关闭窗体*************//
  Close;
end;

procedure TMainFrm.FrameImgMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  //**************判断鼠标是否在标题栏,若是则MouseDownFlag为真****************//
  if (X>FrameImg.Left) and (X<(FrameImg.Left+FrameImg.Width)) and
    (Y>FrameImg.Top) and (Y<40) then
  begin
    golMouseDownFlag:=True;
    golOldMouseX:=X;
    golOldMouseY:=Y;
  end;
end;

procedure TMainFrm.FrameImgMouseMove(Sender: TObject; Shift: TShiftState;
  X, Y: Integer);
begin
  //********若MouseDownFlag为真,则鼠标在标题栏,可以实现窗体的拖动************//
  if golMouseDownFlag=True then
  begin
    MainFrm.Left:=MainFrm.Left+(X-golOldMouseX);
    MainFrm.Top:=MainFrm.Top+(Y-golOldMouseY);
  end;
end;

procedure TMainFrm.FrameImgMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  //**************清鼠标按下标志***********//
  golMouseDownFlag:=False;
end;

procedure TMainFrm.FileExitClick(Sender: TObject);
begin
  //退出主程序
  MainFrm.CloseSpdBtnClick(Sender);
end;    

procedure TMainFrm.FileExitBtnClick(Sender: TObject);
begin
  //退出主程序
  MainFrm.CloseSpdBtnClick(Sender);
end;

procedure TMainFrm.ParaAddBtnClick(Sender: TObject);
begin
  //参数添加
  MainFrm.ParaAddClick(Sender);
end;

procedure TMainFrm.ParaAddClick(Sender: TObject);
begin
  //参数添加
  ParaAddFrm.Showmodal;
end;

procedure TMainFrm.ParaDataClick(Sender: TObject);
begin
  //数据观察
  ParaDataFrm.Showmodal;
end;

procedure TMainFrm.ParaDataBtnClick(Sender: TObject);
begin
  //数据观察
  MainFrm.ParaDataClick(Sender);
end;

procedure TMainFrm.WaveViewClick(Sender: TObject);
begin
  //观察波形
  WaveViewFrm.Show;
end;

procedure TMainFrm.WaveViewBtnClick(Sender: TObject);
begin
  //观察波形
  MainFrm.WaveViewClick(Sender);
end;

procedure TMainFrm.TestRunClick(Sender: TObject);
var
  I:Integer;
  str:String;
begin
  TestControlForm.Showmodal;
  //画出基准时间线和两条测时线
  with WaveViewFrm.Chart1 do
  begin
    Series[0].AddXY(BaseTime,LeftAxis.Maximum-7.5,'',clYellow);
    Series[0].AddXY(BaseTime,LeftAxis.Minimum,'',clYellow);
    Series[1].AddXY(10,LeftAxis.Maximum-7.5,'',$000080FF);
    Series[1].AddXY(10,LeftAxis.Minimum,'',$000080FF);
    Series[2].AddXY(30,LeftAxis.Maximum-7.5,'',clTeal);
    Series[2].AddXY(30,LeftAxis.Minimum,'',clTeal);
  end;
  with WaveViewFrm.Chart2 do
  begin
    Series[0].AddXY(BaseTime,WaveViewFrm.ScrollBar3.Min,'',clYellow);
    Series[0].AddXY(BaseTime,-WaveViewFrm.ScrollBar3.Max-15,'',clYellow);
    Series[1].AddXY(10,WaveViewFrm.ScrollBar3.Min,'',$000080FF);
    Series[1].AddXY(10,-WaveViewFrm.ScrollBar3.Max-15,'',$000080FF);
    Series[2].AddXY(30,WaveViewFrm.ScrollBar3.Min,'',clTeal);
    Series[2].AddXY(30,-WaveViewFrm.ScrollBar3.Max-15,'',clTeal);
  end;
  With WaveViewFrm do
  begin
    golX1:=10;
    golX2:=30;
    golX:=abs(golX1-golX2);
  end;
  //画控制和校验波形
  for I:=1 to 20 do
  begin
    conSeries[I].Clear;
    VerSeries[I].Clear;
    if I<11 then
    begin
      conSeries[I].Active:=False;
      verSeries[I].Active:=False;
    end;
  end;
  with ParaAddFrm do
  begin
    ADOConnection1.Close;
    ADODataSet1.Close;
    ADODataSet2.Close;
    ADoConnection1.ConnectionString:=
      'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+golFileName+
      ';Persist Security Info=False;Jet OLEDB:System database="";'+
      'Jet OLEDB:Registry Path="";Jet OLEDB:Engine Type=5;'+
      'Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;'+
      'Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:Create System Database=False;';
    ADOConnection1.Connected:=True;
    ADODataSet1.CommandText:='outChannel';
    DataSource1.DataSet:=ADODataSet1;
    ADODataSet1.Connection:=ADOConnection1;
    ADODataSet1.Open;
    ADODataSet2.CommandText:='Information';
    DataSource2.DataSet:=ADODataSet2;
    ADODataSet2.Connection:=ADOConnection1;
    ADODataSet2.Open;
    golTime[0]:=0;
    //求出最长时间
    for I:=1 to ADODataSet1.RecordCount do
    begin
      golTime[I]:=ADODataSet1.FieldByName('第二段高电平起始时间').AsFloat+
                  ADODataSet1.FieldByName('第二段高电平持续时间').AsFloat;
      if golTime[I]>golTime[0] then
        golTime[0]:=golTime[I]+40;
      if I<>ADODataSet1.RecordCount then
        ADODataSet1.Next;
    end;
    ParaAddFrm.ADODataSet1.First;
    for I:=1 to ADODataSet1.RecordCount do
    begin
      with WaveViewFrm do
      begin
        conSeries[I].AddXY(0,-25,'',clRed);
        conSeries[I].AddXY(ParaAddFrm.ADODataSet1.FieldByName('第一段高电平起始时间').AsFloat,
          -25,'',clRed);
        conSeries[I].AddXY(ParaAddFrm.ADODataSet1.FieldByName('第一段高电平起始时间').AsFloat,
          -12.5,'',clRed);
        conSeries[I].AddXY(ParaAddFrm.ADODataSet1.FieldByName('第一段高电平起始时间').AsFloat+
          ParaAddFrm.ADODataSet1.FieldByName('第一段高电平持续时间').AsFloat,-12.5,'',clRed);
        conSeries[I].AddXY(ParaAddFrm.ADODataSet1.FieldByName('第一段高电平起始时间').AsFloat+
          ParaAddFrm.ADODataSet1.FieldByName('第一段高电平持续时间').AsFloat,-25,'',clRed);
        conSeries[I].AddXY(ParaAddFrm.ADODataSet1.FieldByName('第二段高电平起始时间').AsFloat,
          -25,'',clRed);
        conSeries[I].AddXY(ParaAddFrm.ADODataSet1.FieldByName('第二段高电平起始时间').AsFloat,
          -12.5,'',clRed);
        conSeries[I].AddXY(ParaAddFrm.ADODataSet1.FieldByName('第二段高电平起始时间').AsFloat+
          ParaAddFrm.ADODataSet1.FieldByName('第二段高电平持续时间').AsFloat,-12.5,'',clRed);
        conSeries[I].AddXY(ParaAddFrm.ADODataSet1.FieldByName('第二段高电平起始时间').AsFloat+
          ParaAddFrm.ADODataSet1.FieldByName('第二段高电平持续时间').AsFloat,-25,'',clRed);
        conSeries[I].AddXY(golTime[0],-25,'',clRed);
        if I<ADODataSet1.RecordCount-1 then
        begin
          Str:=ParaAddFrm.ADODataSet1.FieldByName('通道序号').AsString;
          conSeries[I].Tag:=StrToInt(Str[5]);
        end;
        conSeries[I+10].AddXY(0,2-I*4,'',clRed);
        conSeries[I+10].AddXY(ParaAddFrm.ADODataSet1.FieldByName('第一段高电平起始时间').AsFloat,
          2-I*4,'',clRed);
        conSeries[I+10].AddXY(ParaAddFrm.ADODataSet1.FieldByName('第一段高电平起始时间').AsFloat,
          3-I*4,'',clRed);
        conSeries[I+10].AddXY(ParaAddFrm.ADODataSet1.FieldByName('第一段高电平起始时间').AsFloat+
          ParaAddFrm.ADODataSet1.FieldByName('第一段高电平持续时间').AsFloat,3-I*4,'',clRed);
        conSeries[I+10].AddXY(ParaAddFrm.ADODataSet1.FieldByName('第一段高电平起始时间').AsFloat+
          ParaAddFrm.ADODataSet1.FieldByName('第一段高电平持续时间').AsFloat,2-I*4,'',clRed);
        conSeries[I+10].AddXY(ParaAddFrm.ADODataSet1.FieldByName('第二段高电平起始时间').AsFloat,
          2-I*4,'',clRed);
        conSeries[I+10].AddXY(ParaAddFrm.ADODataSet1.FieldByName('第二段高电平起始时间').AsFloat,
          3-I*4,'',clRed);
        conSeries[I+10].AddXY(ParaAddFrm.ADODataSet1.FieldByName('第二段高电平起始时间').AsFloat+
          ParaAddFrm.ADODataSet1.FieldByName('第二段高电平持续时间').AsFloat,3-I*4,'',clRed);
        conSeries[I+10].AddXY(ParaAddFrm.ADODataSet1.FieldByName('第二段高电平起始时间').AsFloat+
          ParaAddFrm.ADODataSet1.FieldByName('第二段高电平持续时间').AsFloat,2-I*4,'',clRed);
        conSeries[I+10].AddXY(golTime[0],2-I*4,'',clRed);
      end;
      if I<>ADODataSet1.RecordCount then
        ADODataSet1.Next;
    end;
    ADOConnection1.Close;
    ADODataSet1.Close;
    ADODataSet2.Close;
  end;
end;

procedure TMainFrm.TestRunBtnClick(Sender: TObject);
begin
  //开始试验
  MainFrm.TestRunClick(Sender);
end;

procedure TMainFrm.SelfCheckClick(Sender: TObject);
begin
  //自检功能
  SelfCheckFrm.ShowModal;
end;

procedure TMainFrm.SelfCheckBtnClick(Sender: TObject);
begin
  //自检功能
  MainFrm.SelfCheckClick(Sender);
end;

procedure TMainFrm.AboutClick(Sender: TObject);
begin
  with SplashFrm do
  begin
    Label2.Visible:=True;
    Image1.SendToBack;
    Label2.BringToFront;
    Showmodal;
  end;
end;

procedure TMainFrm.AboutBtnClick(Sender: TObject);
begin
  //关于
  MainFrm.AboutClick(Sender);
end;

procedure TMainFrm.N1Click(Sender: TObject);
begin
  //串口
  SPortFrm.Showmodal;
end;

procedure TMainFrm.HelpRunClick(Sender: TObject);
begin
  //帮助
  HelpFrm.Showmodal;
end;

procedure TMainFrm.HelpRunBtnClick(Sender: TObject);
begin
  //帮助
  MainFrm.HelpRunClick(Sender);
end;

end.

⌨️ 快捷键说明

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