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

📄 gps_collect.lst

📁 通过车载终端采集GPS数据
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.02   GPS_COLLECT                                                           09/25/2008 19:29:41 PAGE 1   


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

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

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

 178   3                                      key=0;  
 179   3                              case KEY_CODE_NUM1:
 180   3                              case KEY_CODE_NUM2:
 181   3                              case KEY_CODE_NUM3:
 182   3                              case KEY_CODE_NUM4:
 183   3                              case KEY_CODE_NUM5:
 184   3                              case KEY_CODE_NUM6:
 185   3                              case KEY_CODE_NUM7:
 186   3                              case KEY_CODE_NUM8:
 187   3                              case KEY_CODE_NUM9:
 188   3                                      if(index>=4)break;
 189   3                                      menu_display_char(index+5,1,key+'0',0);
 190   3                                      linename[index]=key+'0';
 191   3                                      index++;
 192   3                              break;
 193   3                                      
 194   3                              case KEY_CODE_ESC:
 195   3                                      if(index==0)
 196   3                                      {
 197   4                                              return;
 198   4                                      }
 199   3                                      else
 200   3                                      {
 201   4                                              index--;
 202   4                                              menu_display_char(index+5,1,'-',0);
 203   4                                      }
 204   3                              break;
 205   3      
 206   3                              case KEY_CODE_ENTER:
 207   3                                      if(index<4) break;
 208   3                                      memcpy(gps_8line[tmp_line].linename,linename,4);
 209   3                                              sysinfo[8*sizeof(GPS_LINE_INFO)]=cur_line;
 210   3                                              sysinfo[8*sizeof(GPS_LINE_INFO)+1]=cur_direction;
 211   3                                              memcpy(sysinfo,&gps_8line[0],8*sizeof(GPS_LINE_INFO));
 212   3                                              nf_wp_off();     //打开写保护,再保存,+1是为了最后多保存一个0作结束符
 213   3                                              nf_write_onebuf(0x00000000,sysinfo,8*sizeof(GPS_LINE_INFO)+2);
 214   3                                              nf_wp_on();
 215   3       
 216   3                                      return;
 217   3                              break;
 218   3      
 219   3                              default:
 220   3                              
 221   3                              break;
 222   3                      }
 223   2              }
 224   1      }
 225          /*
 226          上传GPS数据函数
 227           读取存储器中的GPS数据,并发到串口B通道上
 228           上传过程中可以通过按取消键退出
 229           上传完也要按取消键才能退出
 230          */
 231          
 232          void process_upgps(void)
 233          {
 234   1              unsigned char up[6]="上行";
 235   1              unsigned char down[6]="下行";
 236   1      
 237   1              Uint32 pos,page;
 238   1              Uint16 tem;
 239   1              Byte i;
C51 COMPILER V8.02   GPS_COLLECT                                                           09/25/2008 19:29:41 PAGE 5   

⌨️ 快捷键说明

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