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

📄 driverlogin.c

📁 在ARM7和UC/OSII的平台上实现了GPS自动报站的功能,涉及GPS模块LEA_4S的驱动,位置速寻算法,语音芯片ISD4004的录放音驱动,LED页面管理等等.从启动代码到操作系统的移植以及到业
💻 C
字号:
/****************************************************************
**                                                              *
**  FILE         : DriverLogin.c                                *
**                                                              *
**  By : Cyb 2007.07.01                                         *
****************************************************************/
#include "includes.h"
#include "hardware.h"
#include "Structs.h"
#include "Public.h"
#include "TimeTask.h"
#include "GpsRecer.h"
#include "Public.h"
#include "uart_drv.h"
#include "tools.h"
#include "DriverLogPage.h"
#include "audio.h"

#define  SINGLE_MAX               10
#define  ERR_INDEX                0xff

static INT8U  CurIndex;
static INT16U CurDriveNum;


static INT8U CheckLoginValue(INT8U* ptr,INT8U len)
{
    INT8U i;
    INT8U lenth;
    
    
    for(i=0;i<MAX_DRIVER;i++)
    {
       if(VehicleDriver.DriverInfo[i].Valid != TRUE) continue;
       lenth = DecodeTellen(VehicleDriver.DriverInfo[i].DriveAsciiNum, DRIVEASCIINUM);
       if(len != lenth) continue;
       if(CmpString(ptr,VehicleDriver.DriverInfo[i].DriveAsciiNum,lenth)==STR_EQUAL){
          return i;
       }
    }
    return ERR_INDEX;
}

void DriverLogingNow(INT8U* ptr,INT8U len)
{
    
    INT8U index;
    
    index = CheckLoginValue(ptr, len);
    CurIndex = index;
    if(CurIndex <MAX_DRIVER) CurDriveNum = VehicleDriver.DriverInfo[CurIndex].DriveNum;
    else CurDriveNum = 0;
    
    if(index == ERR_INDEX)
    {
        InformDriveLogerr();
    }
    else
    {
        PlayerNumbers(CurDriveNum);
        InformDriverLogged();
    }
    
}


BOOLEAN SetDriver(INT8U *DataPtr)
{
    INT8U i;
    INT8U tmplen;
    INT8U setcount;
    INT16U drivenum;
  
  
  if(((*DataPtr++) & 0x01) == 0x01)
  {
     VehicleDriver.TotalNum = 0;
     
     for(i=0;i<MAX_DRIVER;i++)
     {
        VehicleDriver.DriverInfo[i].Valid = FALSE;
     }
  }
  
   setcount = *DataPtr++; // 设置个数
  
   if(setcount > SINGLE_MAX) return FALSE;
   
   while(setcount--)
   {
     
      i=*DataPtr++;         //Get Set Num
      VehicleDriver.DriverInfo[i].Valid = TRUE;
      drivenum=*DataPtr++;
      VehicleDriver.DriverInfo[i].DriveNum = *DataPtr++ | (drivenum<<8);
     
      if(VehicleDriver.DriverInfo[i].DriveNum > 0xfffe) return FALSE;
      tmplen = *DataPtr++;
      memset(VehicleDriver.DriverInfo[i].DriveAsciiNum,0x20,DRIVEASCIINUM);
      memcpy(VehicleDriver.DriverInfo[i].DriveAsciiNum,DataPtr,tmplen);
     
      DataPtr += tmplen;
      
     
      VehicleDriver.TotalNum ++;
  }
  
  StorePubPara(DRIVELOG_);
  
  return TRUE;

}

INT16U GetDriveNum(void)                         //获取司机编号
{
   
   if(VehicleDriver.TotalNum == 0) return  0;
   if(CurIndex == ERR_INDEX) return 0;

   return CurDriveNum;
}

INT8U GetDriverAsciiNumAndLen(INT8U *ptr, INT16U drivenum)
{
   INT8U i;

   if(0 == VehicleDriver.TotalNum) return 0;

   for(i=0;i<MAX_DRIVER; i++){
      if(VehicleDriver.DriverInfo[i].Valid != TRUE) continue;
      if(VehicleDriver.DriverInfo[i].DriveNum != drivenum) continue;
      return DecodeTel(ptr, VehicleDriver.DriverInfo[i].DriveAsciiNum, DRIVEASCIINUM);
   }
   return 0;
}



⌨️ 快捷键说明

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