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

📄 scomservice.lst

📁 带时钟功能温度和湿度测量的仪器
💻 LST
📖 第 1 页 / 共 3 页
字号:
 205   2                                      UartRecBuf[nCount++]=3+_F_EXTRA_LEN;
 206   2                                      UartRecBuf[nCount++]=ClkLcmBuf[_ID_HOUR];
 207   2                                      UartRecBuf[nCount++]=ClkLcmBuf[_ID_MINUTE];
 208   2                                      UartRecBuf[nCount++]=ClkLcmBuf[_ID_SECOND];
 209   2                                      UartRecBuf[nCount++]=_F_SINGLE_NUM;
 210   2                              #else
                                              UartRecBuf[nCount++]=_F_EXTRA_LEN;              //表示数据长度0一个序号和Crc常数
                                              UartRecBuf[nCount++]=_F_SINGLE_NUM;             //It's a single frame
                                      #endif
 214   2                              break;
 215   2                              case    _CMD_WR_ALARM:                                          //该命令目前保留没有使用
 216   2                                      UartRecBuf[nCount++]=_F_EXTRA_LEN;              //表示数据长度0一个序号和Crc常数
 217   2                                      UartRecBuf[nCount++]=_F_SINGLE_NUM;             //It's a single frame
 218   2                              break;
 219   2                              case    _CMD_WR_DATE:                                           //LENG == 3
 220   2                              #if _CLOCK_TASK>0
 221   2                                      ReadClock(ClkLcmBuf);
 222   2                                      UartRecBuf[nCount++]=3+_F_EXTRA_LEN;
 223   2                                      UartRecBuf[nCount++]=ClkLcmBuf[_ID_YEAR];
 224   2                                      UartRecBuf[nCount++]=ClkLcmBuf[_ID_MONTH];
 225   2                                      UartRecBuf[nCount++]=ClkLcmBuf[_ID_DAY];
 226   2                                      UartRecBuf[nCount++]=_F_SINGLE_NUM;
 227   2                              #else
                                              UartRecBuf[nCount++]=_F_EXTRA_LEN;              //表示数据长度0一个序号和Crc常数
                                              UartRecBuf[nCount++]=_F_SINGLE_NUM;             //It's a single frame
                                      #endif
 231   2                              break;
 232   2                              case    _CMD_WR_WEEK:                                           //LENG == 1
 233   2                              #if _CLOCK_TASK>0
 234   2                                      ReadClock(ClkLcmBuf);
 235   2                                      UartRecBuf[nCount++]=1+_F_EXTRA_LEN;
 236   2                                      UartRecBuf[nCount++]=ClkLcmBuf[_ID_WEEKLY];
 237   2                                      UartRecBuf[nCount++]=_F_SINGLE_NUM;
 238   2                              #else
                                              UartRecBuf[nCount++]=_F_EXTRA_LEN;              //表示数据长度0一个序号和Crc常数
                                              UartRecBuf[nCount++]=_F_SINGLE_NUM;             //It's a single frame
C51 COMPILER V7.20   SCOMSERVICE                                                           11/09/2002 21:11:16 PAGE 5   

                                      #endif
 242   2                              break;
 243   2                              case    _CMD_WR_RECORD:                                         //LENG == 10
 244   2                              #if ((_DETECT_TASK>0)&&(_E2PROM_TASK>0))
 245   2                                      UartRecBuf[nCount++]=10+_F_EXTRA_LEN;
 246   2                                      if(CurRecNum>_MIN_REC_NUM)
 247   2                                      {
 248   3                                              ReadOneRecord(ClkLcmBuf,CurRecNum);             //从24c02中读一条记录
 249   3                                              for(i=0;i<10;i++)
 250   3                                                      UartRecBuf[nCount++]=ClkLcmBuf[i];
 251   3                                              UartRecBuf[nCount++]=CurRecNum--;
 252   3                                              UartRecBuf[nCount++]=CurRecNum;         //It's a single frame
 253   3                                      }
 254   2                                      else
 255   2                                      {
 256   3                                              for(i=0;i<10;i++)
 257   3                                                      UartRecBuf[nCount++]=_EMPTY_DATA;
 258   3                                              UartRecBuf[nCount++]=_MIN_REC_NUM;
 259   3                                      }
 260   2                                      WriteOneChar(_CUR_REC_ADDR,CurRecNum);  //同步更新计数器单元
 261   2                              #else
                                              UartRecBuf[nCount++]=_F_EXTRA_LEN;              //表示数据长度0一个序号和Crc常数
                                              UartRecBuf[nCount++]=_F_SINGLE_NUM;             //It's a single frame
                                      #endif
 265   2                              break;
 266   2                              case    _CMD_WR_RECNUM:                                         //LENG == 10
 267   2                              #if ((_DETECT_TASK>0)&&(_E2PROM_TASK>0))
 268   2                                      UartRecBuf[nCount++]=1+_F_EXTRA_LEN;
 269   2                                      CurRecNum=ReadOneChar(_CUR_REC_ADDR);
 270   2                                      UartRecBuf[nCount++]=CurRecNum;
 271   2                                      UartRecBuf[nCount++]=_F_SINGLE_NUM;             //It's a single frame
 272   2                              #else
                                              UartRecBuf[nCount++]=_F_EXTRA_LEN;              //表示数据长度0一个序号和Crc常数
                                              UartRecBuf[nCount++]=_F_SINGLE_NUM;             //It's a single frame
                                      #endif
 276   2                              break;
 277   2                              case    _CMD_WR_MCUID:
 278   2                              #if _SCOM_TASK>0
 279   2                                      UartRecBuf[nCount++]=1+_F_EXTRA_LEN;    //表示数据长度0一个序号和Crc常数
 280   2                                      SlaveAddr=ReadOneChar(_LOCAL_ID);
 281   2                                      UartRecBuf[nCount++]=SlaveAddr;                 //ReadOneChar(_LOCAL_ID)
 282   2                                      UartRecBuf[nCount++]=_F_SINGLE_NUM;             //It's a single frame
 283   2                              #else
                                              UartRecBuf[nCount++]=_F_EXTRA_LEN;              //表示数据长度0一个序号和Crc常数
                                              UartRecBuf[nCount++]=_F_SINGLE_NUM;             //It's a single frame
                                      #endif
 287   2                              break;
 288   2                              case    _CMD_WR_PCID:
 289   2                              #if _SCOM_TASK>0
 290   2                                      UartRecBuf[nCount++]=1+_F_EXTRA_LEN;    //表示数据长度0一个序号和Crc常数
 291   2                                      MasterAddr=ReadOneChar(_REMOTE_ID);
 292   2                                      UartRecBuf[nCount++]=MasterAddr;                //ReadOneChar(_REMOTE_ID)
 293   2                                      UartRecBuf[nCount++]=_F_SINGLE_NUM;             //It's a single frame
 294   2                              #else
                                              UartRecBuf[nCount++]=_F_EXTRA_LEN;              //表示数据长度0一个序号和Crc常数
                                              UartRecBuf[nCount++]=_F_SINGLE_NUM;             //It's a single frame
                                      #endif
 298   2                              break;
 299   2                              case    _CMD_WR_PCUSER:                                         //保留的命令
 300   2                              #if ((_SCOM_TASK>0)&&(_E2PROM_TASK>0))
 301   2                                      UartRecBuf[nCount++]=1+_F_EXTRA_LEN;    //表示数据长度0一个序号和Crc常数
 302   2                                      //UartRecBuf[nCount++]=MasterUser;
C51 COMPILER V7.20   SCOMSERVICE                                                           11/09/2002 21:11:16 PAGE 6   

 303   2                                      UartRecBuf[nCount++]=ReadOneChar(_REMOTE_USER);
 304   2                                      UartRecBuf[nCount++]=_F_SINGLE_NUM;             //It's a single frame
 305   2                          #else
                                              UartRecBuf[nCount++]=_F_EXTRA_LEN;              //表示数据长度0一个序号和Crc常数
                                              UartRecBuf[nCount++]=_F_SINGLE_NUM;             //It's a single frame
                                      #endif
 309   2                              break;
 310   2                              default:                                                                        //默认情况当作无参数命令处理
 311   2                                      UartRecBuf[nCount++]=_F_EXTRA_LEN;              //表示数据长度0一个序号和Crc常数
 312   2                                      UartRecBuf[nCount++]=_F_SINGLE_NUM;             //It's a single frame
 313   2                              break;  
 314   2                      }
 315   1              //SendFrame(UartRecBuf,UartRecBuf[_F_LENGTH_POS]+_F_SEND_ADD);
 316   1              SendFrame(UartRecBuf,nCount);
 317   1      
 318   1              OpenScom();
 319   1      }
 320          
 321          //##################################################
 322          //#Function:   ProcessFrameTask(void)
 323          //#Description:51串行口数据帧处理服务函数
 324          //#Input:              无
 325          //#Output:             无
 326          //#Return:              返回相关的帧命令
 327          //#Others:              文件级公共函数
 328          //##################################################
 329          uchar   ProcessFrameTask(void)
 330          {
 331   1              uchar cmd;
 332   1              #if(_SCOM_TEST>0)
                              uchar i;
                      #endif
 335   1      /*进行Crc校验4是(addr cmd len fh fl crh crl)此处应放置主机地址核对程序
 336   1              经过验证是有一个合法帧收到了
 337   1      */                                                                              
 338   1              if (RecReady)
 339   1              {       
 340   2                      RecReady=0;
 341   2                      CloseScom();
 342   2                      if(CRCverify(UartRecBuf,UartRecBuf[3]+_F_RECV_ADD)==0)
 343   2                      {       
 344   3                              #if(_SCOM_TEST>0)
                                              for(i=0;i<DataBlockCount;i++)                   //DataBlockCount
                                                      SendByte(UartRecBuf[i]);
                                      #endif
 348   3                              SystemState=_CMD_CTRL_RUN;                              //表示收到一个命令进入命令响应模式
 349   3                              cmd= UartRecBuf[2];
 350   3                              /*此处放置实际的数据帧响应代码*/        
 351   3                              switch(cmd)                                     
 352   3                              {
 353   4                                              case    _CMD_END:
 354   4                                                      SystemState=_CMD_NORMAL_RUN;    //返回正常的温湿度显示模式
 355   4                                              break;
 356   4                                              case    _CMD_LOG_IN:
 357   4                                                      CallMaster(_CMD_LOG_IN);
 358   4                                                      WorkMode=_NET_MODE;
 359   4                                              break;
 360   4                                              case    _CMD_LOG_OUT:
 361   4                                                      CallMaster(_CMD_LOG_OUT);
 362   4                                                      WorkMode=_SITE_MODE;            
 363   4                                              break;
 364   4                                              case    _CMD_ACK:                                       //不动作
C51 COMPILER V7.20   SCOMSERVICE                                                           11/09/2002 21:11:16 PAGE 7   

 365   4                                                      //CallMaster(_CMD_ACK);
 366   4                                                      WorkMode=_NET_MODE;
 367   4                                              break;
 368   4                                              case    _CMD_ERROR:                                     //不动作
 369   4                                                      //CallMaster(_CMD_ERROR);
 370   4                                                      LcmMode=_ERROR_RUN;
 371   4                                              break;
 372   4                                              case    _CMD_REAL_GET:
 373   4                                                      #if     _DETECT_TASK>0              
 374   4                                                              SensorTaskRun();
 375   4                                                      #endif
 376   4                                                      #if _CLOCK_TASK >0
 377   4                                                              ReadClock(ClkLcmBuf);           //获取当前时钟
 378   4                                                      #endif
 379   4                                                      CloseScom();
 380   4                                                      UartRecBuf[0]=SlaveAddr;
 381   4                                                      UartRecBuf[1]=MasterAddr;
 382   4                                                      UartRecBuf[2]=_CMD_WR_RECORD;
 383   4                                                      UartRecBuf[3]=10+_F_EXTRA_LEN;
 384   4                                                      UartRecBuf[4]=TempInteger;
 385   4                                                      UartRecBuf[5]=TempDecimal;
 386   4                                                      UartRecBuf[6]=HumiInteger;
 387   4                                                      UartRecBuf[7]=HumiDecimal;
 388   4                                                      UartRecBuf[8]=ClkLcmBuf[_ID_YEAR];
 389   4                                                      UartRecBuf[9]=ClkLcmBuf[_ID_MONTH];
 390   4                                                      UartRecBuf[10]=ClkLcmBuf[_ID_DAY];
 391   4                                                      UartRecBuf[11]=ClkLcmBuf[_ID_HOUR];
 392   4                                                      UartRecBuf[12]=ClkLcmBuf[_ID_MINUTE];
 393   4                                                      UartRecBuf[13]=ClkLcmBuf[_ID_SECOND];
 394   4                                                      UartRecBuf[14]=_F_SINGLE_NUM;           //It's a single frame
 395   4                                                      SendFrame(UartRecBuf,15);
 396   4                                                      OpenScom();
 397   4                                              break;
 398   4                                              case    _CMD_RD_TEMP:
 399   4                                                      CallMaster(_CMD_WR_TEMP);
 400   4                                              break;
 401   4                                              case    _CMD_RD_HUMI:
 402   4                                                      CallMaster(_CMD_WR_HUMI);
 403   4                                              break;
 404   4                                              case    _CMD_RD_TIME:
 405   4                                                      CallMaster(_CMD_WR_TIME);
 406   4                                              break;
 407   4                                              case    _CMD_RD_ALARM:                          //保留的命令
 408   4                                                      //CallMaster(_CMD_WR_ALARM);
 409   4                                              break;
 410   4                                              case    _CMD_RD_DATE:
 411   4                                                      CallMaster(_CMD_WR_DATE);
 412   4                                              break;
 413   4                                              case    _CMD_RD_WEEK:
 414   4                                                      CallMaster(_CMD_WR_WEEK);
 415   4                                              break;
 416   4                                              case    _CMD_RD_RECORD:
 417   4                                                      CallMaster(_CMD_WR_RECORD);
 418   4                                              break;

⌨️ 快捷键说明

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