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

📄 gps_collect.lst

📁 通过车载终端采集GPS数据
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.09   GPS_COLLECT                                                           09/25/2008 11:56:21 PAGE 1   


C51 COMPILER V7.09, COMPILATION OF MODULE GPS_COLLECT
OBJECT MODULE PLACED IN .\output\bin\gps_collect.obj
COMPILER INVOKED BY: C:\Keil709\C51\BIN\C51.EXE gps\gps_collect.c LARGE BROWSE INCDIR(audio\;eeprom\;extendUART\;flash\;
                    -gps\;inter\;key\;mcu\;menu\;usb\;gprs\;main\;1wire\) DEBUG OBJECTEXTEND PRINT(.\output\gps_collect.lst) OBJECT(.\output\
                    -bin\gps_collect.obj)

line level    source

   1          #include "gps_collect.h"
   2          #include "菜单.h"
   3          #include "keyboard.h"
   4          #include "string.h"
   5          #include "nf_drv.h"
   6          #include "16c554.h"
   7          #include "stdio.h"
   8          GPS_LINE_INFO gps_8line[8];//
   9          //0:主界面;1:菜单界面;11:线路选择界面;13:删除信息;14:上传至电脑
  10          unsigned char cur_menu_status;
  11          unsigned char gps_receive_flg;
  12          unsigned char cur_line;
  13          unsigned char cur_direction;
  14          unsigned char tmp_line;
  15          unsigned char tmp_direction;
  16          unsigned char sysinfo[100];
  17          unsigned char gps_str[80];
  18          
  19          extern void delayMs(unsigned int timeMs);
  20          unsigned char gps_data_buf[256];
  21          /*保存gps数据,每一页的前半页前240个字节保存3条,
  22          后半页的前240个字节保存3条*/
  23          void savegpstoflash(void)
  24          {
  25   1              Uint32 pos,page;
  26   1              Uint16 add;
  27   1              if(cur_direction==24)
  28   1              {  //上行时采集计算存储地址
  29   2                      page=(gps_8line[cur_line].gps_counter_up-1)/3;
  30   2                      add= ((gps_8line[cur_line].gps_counter_up-1)%3)*80;
  31   2                      pos= page*256+cur_line*0x00100000+0x00200000+add;
  32   2              }
  33   1              else if(cur_direction==25)
  34   1              {       //下行时采集计算存储地址
  35   2                      page=(gps_8line[cur_line].gps_counter_down-1)/3;
  36   2                      add= ((gps_8line[cur_line].gps_counter_down-1)%3)*80;
  37   2                      pos= page*256+cur_line*0x00100000+0x00280000+add;
  38   2              }
  39   1              if(page==1000)
  40   1              {       //每页6条,共6000条,满后停止
  41   2                      gps_receive_flg=0;
  42   2                      return; 
  43   2              }
  44   1              nf_wp_off();     //打开写保护,再保存,+1是为了最后多保存一个0作结束符
  45   1              nf_write_onebuf(pos,gps_str,strlen(gps_str)+1);
  46   1              nf_wp_on();
  47   1               //由于保存的个数加1,所以把线路参数保存一下下
  48   1              sysinfo[8*sizeof(GPS_LINE_INFO)]=cur_line;
  49   1              sysinfo[8*sizeof(GPS_LINE_INFO)+1]=cur_direction;
  50   1              memcpy(sysinfo,&gps_8line[0],8*sizeof(GPS_LINE_INFO));
  51   1              nf_wp_off();     //打开写保护,再保存,+1是为了最后多保存一个0作结束符
  52   1              nf_write_onebuf(0x00000000,sysinfo,8*sizeof(GPS_LINE_INFO)+2);
  53   1              nf_wp_on();
C51 COMPILER V7.09   GPS_COLLECT                                                           09/25/2008 11:56:21 PAGE 2   

  54   1      
  55   1      }
  56          /*
  57            只在保存线路参数时用
  58            地址是0x00000000的前98个字节
  59            每次都块擦除,再全部重写
  60          
  61          
  62          void savetoflash(Uint32 pos, Byte* pBuf, Uint16 nLen)
  63          {
  64                  nf_wp_off();
  65                  nf_block_erase(pos);
  66                  nf_check_status();
  67                  nf_write_onebuf_withouterase(pos,pBuf,nLen);
  68                  nf_wp_on();
  69                   
  70          }*/
  71          /*
  72            线路参数初始化
  73            从5608中读取98个字节
  74          
  75          */
  76          void sysinit(void)
  77          {
  78   1              nf_read_tobuf(0x00000000,sysinfo,8*sizeof(GPS_LINE_INFO)+2);
  79   1              memcpy(&gps_8line[0],sysinfo,8*sizeof(GPS_LINE_INFO));
  80   1              cur_line=sysinfo[8*sizeof(GPS_LINE_INFO)];
  81   1              cur_direction=sysinfo[8*sizeof(GPS_LINE_INFO)+1];
  82   1              gps_receive_flg=0;
  83   1      }
  84          /*
  85            在上下行选择界面下的操作
  86            操作完成后保存操作结果
  87            功能包括设置上下行,删除某条线路的上行或下行参数
  88          
  89          */
  90          void process_direction(void)
  91          {
  92   1              unsigned char key;
  93   1              menu_direction();          //显示上下行选择界面
  94   1              tmp_direction=0xff;
  95   1              while(1)
  96   1              {
  97   2                      key=  get_key();
  98   2                      switch(key)
  99   2                      {
 100   3                              case KEY_CODE_NUM1:
 101   3                                      tmp_direction=24;
 102   3                                      menu_display_char(0,1,'1',1);
 103   3                              break;
 104   3                              case KEY_CODE_NUM2:
 105   3                                      tmp_direction=25;
 106   3                                      menu_display_char(0,2,'2',1);
 107   3                              break;
 108   3      
 109   3                              case KEY_CODE_ESC:
 110   3                                      return;
 111   3                              break;
 112   3      
 113   3                              case KEY_CODE_ENTER:
 114   3                                      if(     cur_menu_status==11&&tmp_direction!=0xff)
 115   3                                      {
C51 COMPILER V7.09   GPS_COLLECT                                                           09/25/2008 11:56:21 PAGE 3   

 116   4                                              cur_line=tmp_line;
 117   4                                              cur_direction=tmp_direction;
 118   4                                              sysinfo[8*sizeof(GPS_LINE_INFO)]=cur_line;
 119   4                                              sysinfo[8*sizeof(GPS_LINE_INFO)+1]=cur_direction;
 120   4                                              memcpy(sysinfo,&gps_8line[0],8*sizeof(GPS_LINE_INFO));
 121   4                                              nf_wp_off();     //打开写保护,再保存,+1是为了最后多保存一个0作结束符
 122   4                                              nf_write_onebuf(0x00000000,sysinfo,8*sizeof(GPS_LINE_INFO)+2);
 123   4                                              nf_wp_on();
 124   4                                      }
 125   3                                      else if(cur_menu_status==13&&tmp_direction!=0xff)
 126   3                                      {
 127   4                                              if(tmp_direction==24)
 128   4                                              {
 129   5                                                      gps_8line[tmp_line].gps_counter_up=0;
 130   5                                                      gps_8line[tmp_line].station_counter_up=0;
 131   5                                                      gps_8line[tmp_line].corner_counter_up=0;
 132   5                                              }
 133   4                                              else if(tmp_direction==25)
 134   4                                              {
 135   5                                                      gps_8line[tmp_line].gps_counter_down=0;
 136   5                                                      gps_8line[tmp_line].station_counter_down=0;
 137   5                                                      gps_8line[tmp_line].corner_counter_down=0;
 138   5                                              }
 139   4                                              sysinfo[8*sizeof(GPS_LINE_INFO)]=cur_line;
 140   4                                              sysinfo[8*sizeof(GPS_LINE_INFO)+1]=cur_direction;
 141   4                                              memcpy(sysinfo,&gps_8line[0],8*sizeof(GPS_LINE_INFO));
 142   4                                              nf_wp_off();     //打开写保护,再保存,+1是为了最后多保存一个0作结束符
 143   4                                              nf_write_onebuf(0x00000000,sysinfo,8*sizeof(GPS_LINE_INFO)+2);
 144   4                                              nf_wp_on();
 145   4                                              //保存这个结构体
 146   4                                      }
 147   3      
 148   3                                      return;
 149   3                              break;
 150   3      
 151   3                              default:
 152   3                              
 153   3                              break;
 154   3                      }
 155   2              }
 156   1      }
 157          /*
 158            设置线路名
 159            即输入线路号,再保存
 160          
 161          */
 162          void process_inputline(void)
 163          {
 164   1              unsigned char index=0,key,linename[4];
 165   1              menu_inputline();
 166   1              while(1)
 167   1              {
 168   2                      key=  get_key();
 169   2                      switch(key)
 170   2                      {
 171   3                              case KEY_CODE_NUM0:
 172   3                                      key=0;  
 173   3                              case KEY_CODE_NUM1:
 174   3                              case KEY_CODE_NUM2:
 175   3                              case KEY_CODE_NUM3:
 176   3                              case KEY_CODE_NUM4:
 177   3                              case KEY_CODE_NUM5:
C51 COMPILER V7.09   GPS_COLLECT                                                           09/25/2008 11:56:21 PAGE 4   

 178   3                              case KEY_CODE_NUM6:
 179   3                              case KEY_CODE_NUM7:
 180   3                              case KEY_CODE_NUM8:
 181   3                              case KEY_CODE_NUM9:
 182   3                                      if(index>=4)break;
 183   3                                      menu_display_char(index+5,1,key+'0',0);
 184   3                                      linename[index]=key+'0';
 185   3                                      index++;
 186   3                              break;
 187   3                                      
 188   3                              case KEY_CODE_ESC:
 189   3                                      if(index==0)
 190   3                                      {
 191   4                                              return;
 192   4                                      }
 193   3                                      else
 194   3                                      {
 195   4                                              index--;
 196   4                                              menu_display_char(index+5,1,'-',0);
 197   4                                      }
 198   3                              break;
 199   3      
 200   3                              case KEY_CODE_ENTER:
 201   3                                      if(index<4) break;
 202   3                                      memcpy(gps_8line[tmp_line].linename,linename,4);
 203   3                                              sysinfo[8*sizeof(GPS_LINE_INFO)]=cur_line;
 204   3                                              sysinfo[8*sizeof(GPS_LINE_INFO)+1]=cur_direction;
 205   3                                              memcpy(sysinfo,&gps_8line[0],8*sizeof(GPS_LINE_INFO));
 206   3                                              nf_wp_off();     //打开写保护,再保存,+1是为了最后多保存一个0作结束符
 207   3                                              nf_write_onebuf(0x00000000,sysinfo,8*sizeof(GPS_LINE_INFO)+2);
 208   3                                              nf_wp_on();
 209   3       
 210   3                                      return;
 211   3                              break;
 212   3      
 213   3                              default:
 214   3                              
 215   3                              break;
 216   3                      }
 217   2              }

⌨️ 快捷键说明

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