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

📄 fmain.~pas

📁 This source code. simple tools for huawei CDMA platform function : read code write code read sp
💻 ~PAS
📖 第 1 页 / 共 3 页
字号:
phone: T_Handset_INFO;
i : integer;
state,stat : string;
begin
  setlength(pck,8);
  pck[0] := $0C;
  pck[1] := $14;
  pck[2] := $3A;
  pck[3] := $7E;
  pck[4] := $0C;
  pck[5] := $14;
  pck[6] := $3A;
  pck[7] := $7E;

  writecom(pck,length(pck));
  pck := ReadCMD;
  if length(pck)<=0 then exit;
  if pck[0] = $13
    then AddLinesLog('- Not Connected ')
    else
      begin
  state := IntArray2HexSTR(pck[3]);
  if  state = '43' then
  main.AddLinesLog('- Phone Connected in Download Mode');
  stat := 'Download Mode Connected';
  phone.Model := stat;
  StatusBar_UPDATE(phone);
  end;
end;


procedure TMain.Get_INFO(echo:boolean);
var
  phone: T_Handset_INFO;
begin
  if PORTnum=0 then exit;
      begin
        if not Send_CMD(Get_CMD(Q0_GET_HW_INFO)) then exit;
        phone := GetPhoneInfo(ReadCMD);
        begin
        if (phone.Model = '')then
        begin
        info_dm;
        end
        else
        begin
        StatusBar_UPDATE(phone);

        if echo then
          with phone do
            BEGIN
              main.AddLinesLog('- Model'+'            = '+phone.Model);
              main.AddLinesLog('- Boot Version'+'  = '+Boot_ver);
              main.AddLinesLog('- App Version'+'   = '+SW_Ver);
              main.AddLinesLog('- HW Version'+'   = '+HW_boot);
            end;
            end;
            end;
end;
end;


procedure TMain.btn_infoClick(Sender: TObject);

begin
if not(Main.InitializeINTERFACE) then exit;
 Get_INFO(true);
end;

procedure TMain.btn_rd_spcClick(Sender: TObject);
var pck,spc_code : t_intvect;
i : integer;
begin
  if not(Main.InitializeINTERFACE) then exit;
  setlength(pck,133);
  pck[0] := $26;
  pck[1] := $a2;
  pck[2] := $c3;
  for i:=3 to 133 do
    pck[i] := $00;
  DO_CMD(pck,True,True,False);
  pck := ReadCMD;
  if length(pck)<=0 then exit;
  if pck[0] = $13
    then AddLinesLog('-Read SPC fails :(')
    else
      begin
        spc.Text := Char(pck[3]) + Char(pck[4]) + Char(pck[5]) + Char(pck[6]) + Char(pck[7]) + Char(pck[8]);

        AddLinesLog('- Read SPC : '+spc.Text);
      end;
end;

procedure TMain.btn_restartClick(Sender: TObject);
begin
Do_CMD(Q0_MODE_OFFLINE_D,True,True,True);
sleep(100);
Do_CMD(Q0_RESET,True,True,True);
end;

procedure TMain.btn_lockClick(Sender: TObject);
var pck : t_intvect;
i : integer;
begin
  if not(Main.InitializeINTERFACE) then exit;
  setlength(pck,133);
  pck[0] := $26;
  pck[1] := $52;
  for i:=2 to 133 do
    pck[i] := $00;
  DO_CMD(pck,True,True,False);
  pck := ReadCMD;
  if length(pck)<=0 then exit;
  if pck[0] = $13
    then AddLinesLog('- Read user code fails :(')
    else
      begin
        USER_CODE.Text := Char(pck[3])+Char(pck[4])+Char(pck[5])+Char(pck[6]);
        AddLinesLog('- Read user code : '+USER_CODE.Text);
      end;
end;

procedure TMain.btn_offline_aClick(Sender: TObject);
begin
Do_CMD(Q0_MODE_OFFLINE_A,True,True,True);
end;

Function TMain.dm:boolean;
var pck : t_intvect;
phone: T_Handset_INFO;
i : integer;
state,stat : string;
begin
  setlength(pck,4);
  pck[0] := $3A;
  pck[1] := $A1;
  pck[2] := $6E;
  pck[3] := $7E;
  writecom(pck,length(pck));
  pck := ReadCMD;
  if length(pck)<=0 then exit;
  if pck[0] = $13
    then AddLinesLog('- Not Connected ')
    else
      begin
  state := IntArray2HexSTR(pck[0])+IntArray2HexSTR(pck[1])+IntArray2HexSTR(pck[2])+IntArray2HexSTR(pck[3]);
  if  state = '3AA16E00' then
  begin
  sleep(2000);
  main.AddLinesLog('- Phone on Download Mode now');
  stat := 'Download Mode Connected';
  phone.Model := stat;
  StatusBar_UPDATE(phone);
  end
  else
  begin
  main.AddLinesLog('- Download Mode Failed');
  end;
  end;
end;


procedure TMain.btn_DMClick(Sender: TObject);
begin
if (statusbar.Panels[0].Text='Phone Connected : Download Mode Connected') then
begin
main.AddLinesLog('- Phone state in download Mode');
exit;
end
else
begin
dm;
end;
end;

procedure TMain.btn_exit_dmClick(Sender: TObject);
begin
  Do_CMD(Q0_EXIT_DM,True,True,True);
end;



procedure TMain.btn_offline_dClick(Sender: TObject);
begin

Do_CMD(Q0_MODE_OFFLINE_D,True,True,True);
end;



Function Z_REFRESH_COM_LIST: Boolean;
var I : Integer;
    port: integer;
begin
//  result := False;
  if PortNum > MaxEnumComNum
    then port := PortNum-MaxEnumComNum
    else port := 0;
  with main do
    begin
      ChangeComSpeed(ComBaud);
      for i:=1 to MaxEnumComNum-1 do
        begin
          ComNum := i;
            if OpenCom(False)=Z_OK
            then
              begin
               cmb_com.Items.Add('COM'+IntToStr(ComNum));
                if (port<>0) and (ComNum = port)
                  then result := True;
                main.AddLinesLog('- Found COM : '+IntToStr(ComNum));
              end;
          end;
      comnum := port;
      if port=0 then exit;
      if result then exit;
    AddLinesLog('- COM'+IntToStr(ComNum)+' does not exist');
    comnum := 0;
    portnum := 0;
  end;

  end;

Procedure REFR_INT_SEL;
begin
   if PortNum< MaxEnumComNum
      then
        begin
         ComNum := PortNum-MaxEnumComNum;
//         main.cmb_com.Text := 'COM'+IntToStr(ComNum);

        end;
end;



procedure TMain.REFR_INTERFACE_LIST;
var speed: integer;
begin
  REFRESH_REQUESTED := False;
  if ComBaud =0
    then
      begin
        Main.AddLinesLog('- Com Speed auto-set = 115200 b/s');
        speed := 115200;
      end
    else speed := ComBaud ;
  cmb_com.clear;
  Z_REFRESH_COM_LIST;
  if ComBaud <> speed then
    begin
      ComBaud := speed;
      ChangeComSpeed(ComBaud);
    end;
  REFR_INT_SEL;
end;

procedure TMain.COM_Change(Sender: TObject);
var
  phone: T_Handset_INFO;
begin
  if cmb_com.Text = ''
    then
      begin
        PortNum := 0;
        exit;
      end;

end;

procedure TMain.ComBo_INTERFACESelect(Sender: TObject);
var txt: string;
  typ: string;
begin
  txt := cmb_com.Items.Strings[cmb_com.ItemIndex];
  typ  :=copy(txt,1,3);
  if typ='COM'
    then
      begin
        ComNum := StrToInt(copy(txt,4,length(txt)-3));
        PortNum := ComNum+MaxEnumComNum;
        Main.AddLinesLog('- COM : '+ inttostr(PortNum - 25) + ' Selected');
        main.AddLinesLog('- Interface Speed : 115200 b/s');
        ComBaud := 115200;
        ChangeComSpeed(ComBaud);
        Get_INFO(false);


      end
    else

    begin
      Main.AddLinesLog('- COM Error '+IntToStr(PortNum));
      exit;
    end;


end;




procedure TMain.idletime(Sender: TObject; var Done: Boolean);
var aux : string;
begin
  if OK_ALLOWED
    then
      begin
        OK_ALLOWED := False;
        exit;
      end;

  aux := TimeToStr(now);
  setlength(aux,length(aux)-3);
  statusbar.Panels.Items[1].Text := aux+'     ';
  if   REFRESH_REQUESTED
  then REFR_INTERFACE_LIST;
end;



procedure TMain.FormDestroy(Sender: TObject);
begin
DeviceChange1.Free;
end;




procedure TMain.FormCreate(Sender: TObject);


begin
  OK_ALLOWED := False;
  DeviceChange1 := TDeviceChange.Create(Self);
  DeviceChange1.Arrival := DevChangeArrival;
  DeviceChange1.RemoveComplete := DevChangeRemoveComplete;
  application.OnIdle := idletime;


   if Screen.DesktopHeight <= Top then Top := Screen.DesktopHeight shr 1;
   if Screen.DesktopWidth <= Left then Left := Screen.DesktopWidth shr 1;



end;



procedure TMain.FormShow(Sender: TObject);
begin

REFR_INTERFACE_LIST;
ComBaud := 115200;
cmb_com.SetFocus;
end;

Function TMain.EXIT_DM:boolean;
var pck : t_intvect;
i : integer;
state : string;
begin
  setlength(pck,6);
  pck[0] := $29;
  pck[1] := $01;
  pck[2] := $00;
  pck[3] := $31;
  pck[4] := $40;
  pck[5] := $7E;
  writecom(pck,length(pck));
  pck := ReadCMD;
  if length(pck)<=0 then exit;
  if pck[0] = $13
    then AddLinesLog('- Not Connected ')
    else
      begin
  state := IntArray2HexSTR(pck[0])+IntArray2HexSTR(pck[1])+IntArray2HexSTR(pck[2])+IntArray2HexSTR(pck[3])+IntArray2HexSTR(pck[4])+IntArray2HexSTR(pck[5]);
  if  state = '290100008A00' then
  begin
  sleep(200);
  main.AddLinesLog('- Phone on OFFLINE-D Mode now');
  end
  else
  begin
  main.AddLinesLog('- OFFLINE-D Failed');
  end;
  end;
end;

procedure TMain.btn_wdClick(Sender: TObject);
begin

  Do_CMD(Q0_EXIT_DM,True,True,True);
  SLEEP(3000);
  Do_CMD(Q0_WD,True,True,True);

end;




procedure TMain.btn_wr_lockClick(Sender: TObject);
var pck : t_intvect;
  i : integer;
begin
  if not(Main.InitializeINTERFACE) then exit;
  if (USER_CODE.Text='') then
  begin
  main.AddLinesLog('- Empty User Code');
  exit;
  end
  else
  begin
  setlength(pck,133);
  pck[0] := $27;
  pck[1] := $52;
  for i:=2 to 133 do
    pck[i] := $00;
  pck[3] := Integer(USER_CODE.Text[1]);
  pck[4] := Integer(USER_CODE.Text[2]);
  pck[5] := Integer(USER_CODE.Text[3]);
  pck[6] := Integer(USER_CODE.Text[4]);
  DO_CMD(pck,True,True,False);
  pck := ReadCMD;
  if (pck[0] = $27) and (pck[1] = $52) and (pck[2] = $00)
    and (pck[3] = Integer(USER_CODE.Text[1]))
    and (pck[4] = Integer(USER_CODE.Text[2]))
    and (pck[5] = Integer(USER_CODE.Text[3]))
    and (pck[6] = Integer(USER_CODE.Text[4]))
      then main.AddLinesLog('- Write user code : '+USER_CODE.Text)
      else main.AddLinesLog('- Read user code :(');
end;
end;



procedure TMain.btn_wr_spcClick(Sender: TObject);
var pck : t_intvect;
  i : integer;
begin
  if not(Main.InitializeINTERFACE) then exit;
  if (spc.Text='') then
  begin
  main.AddLinesLog('- Empty SPC Code');
  exit;
  end
  else
  begin
  setlength(pck,133);
  pck[0] := $27;
  pck[1] := $A2;
  pck[2] := $C3;
  for i:=3 to 133 do
    pck[i] := $00;
  pck[3] := Integer(spc.Text[1]);
  pck[4] := Integer(spc.Text[2]);
  pck[5] := Integer(spc.Text[3]);
  pck[6] := Integer(spc.Text[4]);
  pck[7] := Integer(spc.Text[5]);
  pck[8] := Integer(spc.Text[6]);
  DO_CMD(pck,True,True,False);
  pck := ReadCMD;
  if (pck[0] = $27) and (pck[1] = $A2) and (pck[2] = $C3)
    and (pck[3] = Integer(spc.Text[1]))
    and (pck[4] = Integer(spc.Text[2]))
    and (pck[5] = Integer(spc.Text[3]))
    and (pck[6] = Integer(spc.Text[4]))
    and (pck[7] = Integer(spc.Text[5]))
    and (pck[8] = Integer(spc.Text[6]))
      then main.AddLinesLog('- Write user code success: '+spc.Text)
      else main.AddLinesLog('- Read user code fails :(');
   end
end;

end.

⌨️ 快捷键说明

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