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

📄 testcontrol.~pas

📁 自己用API编写的端口通讯
💻 ~PAS
📖 第 1 页 / 共 2 页
字号:
unit TestControl;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls,CabinetControler, ComCtrls, Menus,IniFiles,MyThread,OneBoxThread;

type
  TForm1 = class(TForm)
    ComboBoxCabinet: TComboBox;
    ComboBoxBox: TComboBox;
    ComboBoxUnit: TComboBox;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    ButtonOpenOneBox: TButton;
    ButtonLightOneUnit: TButton;
    ButtonLightOneBox: TButton;
    ListView1: TListView;
    PopupMenu1: TPopupMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    Label4: TLabel;
    ComboBoxCom: TComboBox;
    ButtonQuery: TButton;
    ButtonClear: TButton;
    ButtonLightAllUnit: TButton;
    ButtonStopLightAllUnit: TButton;
    ButtonStopLightOneBox: TButton;
    ButtonOpenAllBox: TButton;
    procedure ButtonOpenOneBoxClick(Sender: TObject);
    procedure ButtonLightOneUnitClick(Sender: TObject);
    procedure ButtonLightOneBoxClick(Sender: TObject);
    procedure N1Click(Sender: TObject);
    procedure N2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure ButtonQueryClick(Sender: TObject);
    procedure ButtonClearClick(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure ButtonLightAllUnitClick(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure ButtonStopLightAllUnitClick(Sender: TObject);
    procedure ButtonOpenAllBoxClick(Sender: TObject);
    procedure ButtonStopLightOneBoxClick(Sender: TObject);
  private
//    FCabinetAddress:integer;
//    FBoxAddress:integer;
//    FUnitAddress:integer;
    procedure QueryCabinet();
  public
    FUnitMaxNumber:integer;
    FCabinetControler:TCabinetControler ;
    FMyThread:LightAllBoxThread;
    FLightOneBoxThread:LightOneBoxThread;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
{
procedure TForm1.Button1Click(Sender: TObject);
var
    tempControl:TCabinetControler;
    tempState:DiskBoxOpenState;
    i:integer;
    tempItem:TListItem;
begin
     //ShowMessage(查询);
     self.ListView1.Clear;
     tempControl:=TCabinetControler.Create(ComName.Text);
     try
        if  (tempControl.GetIsDiskBoxOpen(StrToInt(Self.CabinetAddr1.Text),tempState)) then
        begin

            for i:=0 to 15 do
            begin
               tempItem:=Self.ListView1.Items.Add;
               tempItem.Caption:=IntToStr(i+1);
               if tempState[i]<>0 then
                  tempItem.SubItems.Add('开启')
               else
                  tempItem.SubItems.Add('关闭');
            end;
        end
        else
        begin
             ShowMessage('查询失败')
        end;
     finally
        tempControl.Destroy;
     end;
end;
}
{
procedure TForm1.Button2Click(Sender: TObject);
var
     tempControl:TCabinetControler;
begin
     tempControl:=TCabinetControler.Create(ComName.Text);
     try
        if not (tempControl.LighterStoreUnit(StrToInt(CabinetAddr2.Text),
            StrToInt(BoxIndex.Text),StrToInt(UnitIndex.Text))) then
        begin
            ShowMessage('点亮失败');
        end;
     finally
        tempControl.Destroy;
     end;
end;
}

{
procedure TForm1.Button4Click(Sender: TObject);
var
    tempControl:TCabinetControler;
begin
    tempControl:=TCabinetControler.Create(self.ComName.Text);
    try
       if not (tempControl.OpenDiskBox(StrToInt(self.BoxIndex2.Text),
              StrtoInt(Self.CabinetAddr3.Text))) then
       begin
           ShowMessage('打开盒子失败');
       end;
    finally
       tempControl.Destroy;
    end;
end;
}
//开启抽屉
procedure TForm1.ButtonOpenOneBoxClick(Sender: TObject);
var
   tempControl:TCabinetControler;
begin
   if ( (self.ComboBoxCabinet.Text='') or (self.ComboBoxBox.Text='') or (self.ComboBoxCom.Text='')) then
   begin
       ShowMessage('未选择抽屉、柜子、串口');
       exit;
   end;
//   tempControl:=TCabinetControler.Create(self.ComboBoxCom.Text);
// try
      if not (Self.FCabinetControler.OpenDiskBox(self.ComboBoxBox.ItemIndex,
             self.ComboBoxCabinet.ItemIndex)) then
      begin
           ShowMessage('打开抽屉失败');
      end;
// finally
//      tempControl.Destroy;
// end;
end;

//点亮
procedure TForm1.ButtonLightOneUnitClick(Sender: TObject);
var
     tempControl:TCabinetControler;
begin
     if ((self.ComboBoxCom.Text='') or (self.ComboBoxCabinet.Text='') or (Self.ComboBoxBox.Text='') or (Self.ComboBoxUnit.Text='')) then
     begin
        ShowMessage('未选择串口,柜子,抽屉,单元');
        exit;
     end;
     if not (Self.FCabinetControler.LighterStoreUnit(Self.ComboBoxCabinet.ItemIndex,
            Self.ComboBoxBox.ItemIndex,Self.ComboBoxUnit.ItemIndex)) then
     begin
        ShowMessage('电亮失败');
     end;
     {
     tempControl:=TCabinetControler.Create(self.ComboBoxCom.Text);
     try
        if not (tempControl.LighterStoreUnit(self.ComboBoxCabinet.ItemIndex,
            self.ComboBoxBox.ItemIndex,Self.ComboBoxUnit.ItemIndex)) then
        begin
            ShowMessage('点亮失败');
        end;
     finally
        tempControl.Destroy;
     end;
     }
end;

//点亮所有
procedure TForm1.ButtonLightOneBoxClick(Sender: TObject);
var
    i:integer;
begin
    if ((Self.ComboBoxCabinet.Text='') or (Self.ComboBoxBox.Text='')) then
    begin
       ShowMessage('未选择柜子、抽屉');
       exit;
    end;
    if (Self.FLightOneBoxThread<>nil) then
    begin
        Self.FLightOneBoxThread.Terminate;
        Self.FLightOneBoxThread.WaitFor;
        Self.FLightOneBoxThread.Destroy;
        Self.FLightOneBoxThread:=nil;
//        Self.FLightOneBoxThread.Free;
    end;
    if (Self.FLightOneBoxThread=nil) then
    begin
         Self.FLightOneBoxThread:=LightOneBoxThread.Create(False);
         if (Self.FLightOneBoxThread<>nil) then
         begin
             Self.ButtonQuery.Enabled:=False;
             Self.ButtonOpenOneBox.Enabled:=False;
             Self.ButtonLightOneUnit.Enabled:=False;
             Self.ButtonLightOneBox.Enabled:=False;
             Self.ButtonQuery.Enabled:=False;
             Self.ButtonLightAllUnit.Enabled:=False;
             Self.ButtonStopLightAllUnit.Enabled:=False;
             Self.ButtonStopLightOneBox.Enabled:=True;
             Self.ButtonOpenAllBox.Enabled:=False;
         end
         else
         begin
             ShowMessage('点亮所有单元失败');
             Self.FLightOneBoxThread.Terminate;
             Self.FLightOneBoxThread.Destroy;
             Self.FLightOneBoxThread:=nil;
         end;
    end;
{    if (Self.FLightOneBoxThread=nil) then
    begin
        Self.FLightOneBoxThread:=LightOneBoxThread.Create(False);
    end;
    if ((self.ComboBoxCom.Text='') or (self.ComboBoxCabinet.Text='') or (self.ComboBoxBox.Text='')) then
    begin
         ShowMessage('未选择串口、柜子、抽屉');
         exit;
    end;
//    tempControl:=TCabinetControler.Create(self.ComboBoxCom.Text);
//    try
        for i:=0 to self.FUnitMaxNumber-1 do
        begin
           //遍历是发出2次指令点亮,防止有的指令不能收到。
           if not (self.FCabinetControler.LighterStoreUnit(self.ComboBoxCabinet.ItemIndex,
                       self.ComboBoxBox.ItemIndex,i)) then
//           if not (tempControl.LighterStoreUnit(self.ComboBoxCabinet.ItemIndex,
//                       self.ComboBoxBox.ItemIndex,i)) then
           begin
              ShowMessage('点亮失败');
              exit;
           end;
           Sleep(1000);
        end;
        ShowMessage('所有单元指示灯点亮成功');
//     finally
//        tempControl.Destroy;
//     end;
}
end;

//查询
procedure TForm1.N1Click(Sender: TObject);
begin
    Self.QueryCabinet();
end;

⌨️ 快捷键说明

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