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

📄 upubfun.pas

📁 a voice guide client ,it is the second part of voice guide center
💻 PAS
📖 第 1 页 / 共 5 页
字号:
unit uPubFun;

interface

uses
  Windows, Classes, SysUtils, Messages, tbGisIdTCPClient, IniFiles, Variants,
  uBaseDBDefs, uGPSClientVehicleInfoUtils, DB;

const
  WM_GetGpsProgressIndex = WM_USER+ 100;
  WM_GetGpsProgress = WM_USER+ 1000;

  {: 错误的Cardinal型车辆ID值。}
  ERROR_CAR_ID_CARDINAL = 777777777;
  {: 错误的Int64型车辆ID值。}
  ERROR_CAR_ID_INT64    = 13777777777;

  rsEmSpeedLow  = '低速报警';
  rsSpeed       = '速度';
  rsDefSpeedLow = '设定最低速度';

type
  PMyNodeData = ^TMyNodeData;

  TMyNodeData = record
     my_data_ptr: Pointer;
  end;

  TTimeType=(
            ttNone,
            ttDay,      //单是在这一天
            ttWeek,     //每周的星期几
            ttMonth,     //每月的多少号
            ttEveryDay  //每一天都是
            );
  //账号登陆信息
  TLnkDataState = (ldsNone, ldsLinkErr, ldsPwdErr, ldsNoTaxiAccount,
    ldsAccountDisable, ldsOk);

  TDataEditState = (desNone, desAdd, desDel, desEdit);

  EParams = Exception;

  TTaskInfo = class;
  TGpsInfo  = Class;
  //
  TGpsRect = record
    LongMin, LatMin,
    LongMax, LatMax: Double;
  end;

  TEFenceState = (efsNone, efsCtrled, efsEnterInTime, efsAlarmed);
  TEfenceItem = record
    id    : Cardinal;           //
    CarId : Cardinal;
    No    : Integer;            //从1开始的序号
    IsEFence  : Boolean;          //是否为“电子围栏”、“迟到报警”
    GpsRect   : TGpsRect;          //“电子围栏”Rect
    EnterTime,
    ExitTime  : TDateTime; //时间
    Edited: Boolean;
    State : TEFenceState;
  end;
  PEfenceItem = ^TEfenceItem;

  //登陆状态
  TLogState = (lsLogOff, lsLogOn);
  TLnkTcpState = (ltsOff, ltsConnect, ltsOn);

  //轨迹类型
  TShowTrackType = (sttNone, sttPoint, sttLine, sttAll);
  //目标颜色
  TTargetColor = (tcBlue, tcGreen, tcYellow, tcRed);

  //系统界面
  TLookFeel = (lfStard, lfNet, lfXp, lfOffice);
  TTargetHintShow = (thsGpsInfo, thsCarInfo);
  TToolIconType = (titNone, titSmall, titBig);

  //车辆信息
  TCarInfo = class(TObject)
  public
    MileagePluseCount : integer;

//    TerminalType      : TTargetType;    //终端类型
    GpsInfo           : TGpsInfo;
    GpsInfoGenOper    : TGpsInfo;
    TeamId            : Cardinal;       //所属组的ID
    TaskState         : Integer;        //(航线)任务状态ID
    TaskInfo          : TTaskInfo;      //(航线)任务信息
    Ctrled            : Byte;           //现在是否监控?0:未知;1:监控;2:不监控
    bz                : Byte;

    IsOldDB           : Boolean;
    EFenseList        : TList;
    CarinfoValueList  : TList;  // FieldValueList <- List of PFieldValue
    FieldList         : THashedStringList;

    constructor Create;
    destructor Destroy; override;
    procedure SetGpsInfo(RecvTime, GpsTime: TDateTime;
      Long, Lat: Double; Speed, Head : Single;
      GpsValid: Boolean; GpsState: string);
    procedure SetGpsOperate(RecvTime: TDateTime;
      OperateId, OperateContent, OperateScribe: String);
    procedure Assign(ASource: TCarInfo);
    procedure InitEFenseList;
    procedure AddEFense(EFense: TEfenceItem);
//  private
//    procedure SetIntToFieldValue(_field_name: string; _int: Integer);
//    procedure SetStrToFieldValue(_field_name, _str: string);
//    procedure SetValueToFieldValue(_field_name: string; _value: Variant);

  public
    // 车辆信息字段列表操作
    class procedure InitialCarInfoFieldValueList(_car_info: TCarInfo);

    // 车辆信息 通信属性 处理
    class function  ExtractCommNOIDFromCarInfo(_car_info: TCarInfo;
      var _error_str: string; var _comm_no_id: Int64; _is_short: Boolean): Boolean;
    class function  ExtractCommNOStrFromCarInfo(_car_info: TCarInfo;
      var _error_str: string; var _comm_no_str: string; _is_short: Boolean): Boolean;


    class function  GetFieldValueStrByName(_car_info: TCarInfo; _field_name: string): string;
    class function  GetFieldValueIntByName(_car_info: TCarInfo; _field_name: string): Integer;
    class function  GetFieldValueBoolByName(_car_info: TCarInfo; _field_name: string): Boolean;
    class function  GetFieldValueDateByName(_car_info: TCarInfo; _field_name: string): TDateTime;
    class function  GetFieldValueVarByName(_car_info: TCarInfo;
      _field_name: string): Variant;
//    class procedure SetStrToFieldValue(_field_name, _str: string);
//    class procedure SetIntToFieldValue(_field_name: string; _int: Integer);
//    class procedure SetValueToFieldValue(_field_name: string; _value: Variant);
//    class procedure SetValueToFieldValue(_field_name: string; _value: Variant);
    class procedure SetVarToFieldValue(_car_info: TCarInfo; _field_name: string; _value: Variant);

  private
    function getVehicleCommIDCardinal: Cardinal;
    function getVehicleCommIDInt64: Int64;
    function getVehicleCommIDStringLong: string;
    function getVehicleCommIDStringShort: string;
    function getVehicleRegistrationNO: string;
    function getVehicleTerminalType: TTargetType;
    function getVehicleTypeName: string;
    function getVehicleOwnerName: string;
    function getVehicleGroupID: Integer;
    function getVehicleTerminalTypeName: string;
    procedure setVehicleRegistrationNO(const Value: string);
    procedure setVehicleCommIDStringLong(const Value: string);
  public
    property VehicleCommIDStringShort: string read getVehicleCommIDStringShort;
    property VehicleCommIDStringLong: string read getVehicleCommIDStringLong write setVehicleCommIDStringLong;
    property VehicleCommIDInt64: Int64 read getVehicleCommIDInt64;
    property VehicleCommIDCardinal: Cardinal read getVehicleCommIDCardinal;
    property VehicleRegistrationNO: string read getVehicleRegistrationNO write setVehicleRegistrationNO;
    property VehicleTerminalType: TTargetType read getVehicleTerminalType;
    property VehicleTerminalTypeName: string read getVehicleTerminalTypeName;
    property VehicleTypeName: string read getVehicleTypeName;
    property VehicleOwnerName: string read getVehicleOwnerName;
    property VehicleGroupID: Integer read getVehicleGroupID;
  end;

  //组信息
  TTeamInfo = Class(TObject)
    TeamId    : Cardinal;               //组ID
    TeamName  : string;                 //组名称
    GroupId   : Cardinal;               //所属群ID
    CarInfos  : TStringList;
  public
    constructor Create;
    destructor Destroy; override;
  end;

  //群信息
  TGroupInfo = class(TObject)
    GroupId   : Cardinal;               //群ID
    GroupName : string;                 //群名称
  end;

  // 车辆分组信息
  TVehicleGroupInfo = class(TObject)
  public
    GroupID       : Integer;
    GroupName     : string;
    LevelID       : Integer;
    LevelNO       : Integer;
    ParentGroupID : Integer;
    VehicleList   : THashedStringList;
    SubGroupList  : THashedStringList;
    IsEmpty       : Boolean;
    IsDelete      : Boolean;
    TotalVehicle  : Integer;

  // 构造与析构
  public
    constructor Create;
    destructor  Destroy; override;

  public
    procedure MarkParentGroup(_group_list: THashedStringList;
      _vehicle_group: TVehicleGroupInfo; _parent_group_id: Integer);
    function  CountVehicle: Integer;

  public
    class function FindVehicleGroupByID(
      _group_list: THashedStringList; _group_id: Integer): TVehicleGroupInfo;
  end;

  //登陆用户信息
  TUsrInfo = class(TObject)
    UsrId       : Cardinal;
    UsrName,
    UsrPwd      : string;
    UsrPurview,
    WatchRangeId: Integer;
    Ranger      : string;
  end;

  //定位信息
  TGpsInfo= Class(TObject)
    CarId             : Cardinal;
    RecvTime, GpsTime : TDateTime;
    Long, Lat         : Double;
    Speed, Head       : Single;
    GpsValid          : Boolean;
    GpsState          : string;
    OperateTime       : TDateTime;
    OperateType       : Integer;
    OperateId,
    OperateContent,
    OperateScribe     : String;
    EmInfoList        : TStringList;

    IsAlert           : Boolean;
    IsRun             : Boolean;
    IsLoaded          : Boolean;
    IsSelected        : Boolean;
  public
    constructor Create;
    destructor Destroy; override;
  end;

  //路桥费
  TPriceInfo = class(TObject)
    EditState: TDataEditState;
    Id  : Cardinal;
    Name: string;
    RoadPrice, BridgePrice: Double;
    Distance,  OilPrice   : Double;
    StartPtName: string;
    StartPtLong1, StartPtLat1,
    StartPtLong2, StartPtLat2: Double;
    EndPtName: string;
    EndPtLong1, EndPtLat1,
    EndPtLong2, EndPtLat2: Double;
  end;

  //航行任务信息
  TTaskInfo = class(TObject)
    TaskName    : string;       //任务名称
    TaskId,                     //任务ID
    CarId,                      //
    WalkLineId  : Cardinal;
    TaskState   : Integer;      //任务状态
    CreateTime,
    StartTime,
    EndTime     : TDateTime;
    StartPointX,
    StartPointY,
    EndPointX,
    EndPointY   : Double;
    StartX,
    StartY,
    EndX,
    EndY        : Double;
    StartRanger,
    EndRanger   : Integer;
    AverageSpeed: Integer;
  end;

  TRecEditState = (rsNoneChange, rsAppend, rsEdit, rsDelete);

  TGoodsSheet = class;

  TGoods = Class(TObject)
    GoodsId,
    GoodSheetId: Cardinal;
    GoodsNo, GsnNo, ClientNo, ClientName: string;
    Name, Sort, Weitght, Bulk, Price, Remark: string;
    Number, NumberLost, NumberBreak, NumberRefuse: Integer;
    Edited: TRecEditState;
    GoodsSheet: TGoodsSheet;
  end;

  TGoodsSheet = class(TObject)
    GoodSheetId: Cardinal;
    CarId: Cardinal;
    DispatchCarNo: string;
    SheetNo, GsnNo: string;
    FromName, FromAddress, FromZip, FromTel: string;
    FromTime: TDateTime;
    ToName, ToAddress, ToZip, ToTel: string;
    ToTime: TDateTime;
    Remark: string;
    FromLong1, FromLat1, ToLong1, ToLat1: Double;
    FromLong2, FromLat2, ToLong2, ToLat2: Double;
    FromRdcLong1, FromRdcLat1: Double;
    FromRdcLong2, FromRdcLat2: Double;
    FromRadii, ToRadii: Integer;
    IsReportState: Boolean;
    StartTimePlan, EndTimePlan: TDateTime;
    Edited: TRecEditState;
    GoodsList: TStringList;
  end;

  function FormatDigit(ADigite, ALen: Integer): string;

  function GetConsume:Double;
  function GetOilPrice:Double;

var
  //////////////////////////////////////////////////
  //by wulianghong 2004-10-28
  gPCName         : String;
  //by wulianghong 2004-11-5
  gGetStation     :Boolean;
  //////////////////////////////////////////////////
  gGetLostPropertyPoint : Boolean;
  //////////////////////////////////////////////////
  //系统登录状态、定位服务的状态
  gLogState       : TLogState;
  gLnkTcpState    : TLnkTcpState;
  gMaxMapWinCount : Integer= 10;
  //系统配置
  gTitle        : string;
  gMtscHost     : string;
  gDataHost     : string;
  gDataHostList : string;
  gIsUseDataHostList: Boolean;
  gIsCacheLogon : Boolean;
  gZPDataHost   : string;
  gDsCommHost   : string;
  gIgigHost     : string;
  gDistanceCalcHost: string;
  gGpsOnLine    : Boolean;
  gDebug        : Boolean;
  gLogonNOOP    : Boolean;
  gLookOil      : Boolean;
  gNOOPInterval : Integer;

  gETAGDispatchHost : string;
  gANADataHost   : string;
  gANADataPort   : Integer;
  gMtscPort     : Integer;
  gDataPort     : Integer;
  gReplayPort   : Integer;
  gReplayDB     : string;
  gZPDataPort   : Integer;
  gDsCommPort   : Integer;
  gIgigPort     : Integer;

  gLogName      : string;
  gPassWd       : string;
  gHistoryLogNames: string;

  {:是否使用旧库认证服务器。}
  gUseNewDBServer: Boolean;
  {:是否使用用户认证服务器。}
  gUseAuthServer: Boolean;
  {:是否使用BaseDB用户认证服务器。}
  GIsBaseDBAuth : Boolean;
  {:用户认证服务器地址。}
  gAuthServerHost: string;
  {:用户认证服务器端口。}
  gAuthServerPort: Integer;
  {: 自动升级URL地址。}
  gUpgradeURL    : string;

  //add by wulianghong
  gHistoryGpsInfoList :TList;
  gSendHistoryCmd:Boolean;//本程序是否发送了读历史命令.

  gAllGpsValid  : Boolean;
  gVersionFlag  : Integer;
  gFullExtentViewAll: Boolean;
  gFullExtentSearch: Boolean;
  gIgnorCompensate: Boolean;

  gDoorAlert    : Boolean;//车门开关报警


  // gBatteryAlert : Boolean;//电池报警
//  //是否显示刹车状态

⌨️ 快捷键说明

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