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

📄 sci.c

📁 在飞思卡尔MC9S08GB60单片机环境下实现了无线监控
💻 C
📖 第 1 页 / 共 2 页
字号:
                }
              ////////////////填子机ID////////////////
              for(i=0;i< (4*LostCount);i=i+4)		//格式0x33 0x33 0x34 0x4X
                {
                  SciTxBuf[96+i] = 0x30;
                  SciTxBuf[96+i+1] = 0x30;
                  SciTxBuf[96+i+2] = 0x34;
                  if(LostAlarmBuff[i/4] < 0x3C) 
                    {
                      SciTxBuf[96+i+3] = LostAlarmBuff[i/4]-0x02;
                    } 
                  else
                    {
                      SciTxBuf[96+i+3] = LostAlarmBuff[i/4]-0x02+0x07;
                    }
                } 
   					break;


            case POWER_ALARM:
              strcpy(SciTxBuf,"08916800000000000011000D91680000000000000008A736000000000000000000000000000000005B50673A63897535002000200020002000200020002000200020002000200020002000200020");
              /////////////////填地点///////////////
              ReadFlash(ALARM_INFO3);
              for(i=0;i<24;i++){
                SciTxBuf[48+i] = FLASHBUFFER[i];               
              }
              /////////////////填个数///////////////
              for(i=0;i<8;i++)    
                {
                  SciTxBuf[72+i] = 0x30;
                }
              SciTxBuf[74] = 0x33;
              SciTxBuf[78] = 0x33;
              if(PowerCount >= 10)
                {
                  SciTxBuf[75] = 0x31;
                  SciTxBuf[79] = PowerCount - 0x10 + 0x30;
                } 
              else
                {
                  SciTxBuf[75] = 0x30;
                  SciTxBuf[79] = PowerCount + 0x30;                
                }
              ////////////////填子机ID////////////////
              for(i=0;i< (4*PowerCount);i=i+4)		//格式0x33 0x33 0x34 0x4X
                {
                  SciTxBuf[96+i] = 0x30;
                  SciTxBuf[96+i+1] = 0x30;
                  SciTxBuf[96+i+2] = 0x34;
                  if(PowerAlarmBuff[i/4] < 0x3C) 
                    {
                      SciTxBuf[96+i+3] = PowerAlarmBuff[i/4]-0x02;
                    } 
                  else
                    {
                      SciTxBuf[96+i+3] = PowerAlarmBuff[i/4]-0x02+0x07;
                    }                }                            
            break;
   

            //case MOVE_ALARM:
            case MASTER_POWER_ALARM:
            
              //填写中文短信包内容
              strcpy(SciTxBuf,"08916800000000000011000D91680000000000000008A736000000000000000000000000000000005B50673A79FB52A8002000200020002000200020002000200020002000200020002000200020");//写一些固定字段
              /////////////////填地点///////////////
              ReadFlash(ALARM_INFO2);
              for(i=0;i<24;i++){
                SciTxBuf[48+i] = FLASHBUFFER[i];
              }
              /////////////////填个数///////////////
              for(i=0;i<8;i++)    
                {
                  SciTxBuf[72+i] = '0';
                }
              SciTxBuf[74] = 0x33;
              SciTxBuf[78] = 0x33;
              if(LostCount >= 10)
                {
                  SciTxBuf[75] = 0x31;
                  SciTxBuf[79] = MoveCount - 0x10 + 0x30;
                } 
              else
                {
                  SciTxBuf[75] = 0x30;
                  SciTxBuf[79] = MoveCount + 0x30;                
                }
              ////////////////填子机ID////////////////
              for(i=0;i< (4*MoveCount);i=i+4)		//格式0x33 0x33 0x34 0x4X
                {
                  SciTxBuf[96+i] = 0x30;
                  SciTxBuf[96+i+1] = 0x30;
                  SciTxBuf[96+i+2] = 0x34;
                  if(MoveAlarmBuff[i/4] < 0x3C) 
                    {
                      SciTxBuf[96+i+3] = MoveAlarmBuff[i/4]-0x02;
                    } 
                  else
                    {
                      SciTxBuf[96+i+3] = MoveAlarmBuff[i/4]-0x02+0x07;
                    }
                }                            
            break;
            
            
            case MASTER_ALARM:
              //填写中文短信包内容
              strcpy(SciTxBuf,"0891683108100005F011000D91683118505244F00008A73667D067D067D067D05730533A4E3B673A005A004900470042004500456A2157576545969C002000200020002000200020002000200020");//写一些固定字段
              /////////////////填地点///////////////
              ReadFlash(ALARM_INFO2);
              for(i=0;i<24;i++)
                {
                  SciTxBuf[48+i] = FLASHBUFFER[i];
                }
            break;
            
            
            //case MASTER_POWER_ALARM:
            case MOVE_ALARM:
              //填写中文短信包内容
              strcpy(SciTxBuf,"0891683108100005F011000D91683118505244F00008A73667D067D067D067D05730533A4E3B673A4EA46D4163897535002000200020002000200020002000200020002000200020002000200020");//写一些固定字段
              /////////////////填地点///////////////
              ReadFlash(ALARM_INFO2);
              for(i=0;i<24;i++)
                {
                  SciTxBuf[48+i] = FLASHBUFFER[i];
                }
            break;                         
            
            
            default:
              break; 
          }
          
          //Feed_SoftDog();					//喂软狗
    			Feed_HardDog();

          ReadFlash(SMS_CENTRE);//从FLASH中读出短信息中心号码
          for(k=0;k<12;k=k+2) //写短信息中心字段
            {
              SciTxBuf[6+k+1]=FLASHBUFFER[k];
              SciTxBuf[6+k]	 =FLASHBUFFER[k+1];
            }
          SciTxBuf[16]='F';
          switch(TelNum)
            {
            
              case 1:
                     ReadFlash(TELE_NUMBER1);
                     break;
            
              case 2:
                     ReadFlash(TELE_NUMBER2);
                     break;
            
              case 3:
                     ReadFlash(TELE_NUMBER3);
                     break;
              
              default:
                     break; 
            }  
          for(k=0;k<12;k=k+2) //写接收号码字段 
            {
              SciTxBuf[28+k+1]=FLASHBUFFER[k];
              SciTxBuf[28+k]  =FLASHBUFFER[k+1];
            }
          SciTxBuf[38]='F';
          SciTxBuf[156]=0x1A;
          SciTxLen = 157;
          UARTTransmitt(); 
        	i=SCI_RX_BUF_TC;//结束循环
        }
       }  
     }while(flag==0);
   //Feed_SoftDog();					//喂软狗
}

void DialCellPhone(UINT8 Tel) 
{
  UINT8 i,flag;

  while(SciTxFlag==TRANSMITT_ING);//等待上一次发送完毕         
  if(Tel==1)  //第一次打电话要清除发短信带来的回复标志
    {    
      while(RxTimeoutFlag < 3);
      RxTimeoutFlag=0;
      //Feed_SoftDog();					//喂软狗
      Feed_HardDog();
      do{
          flag=0; 
          for(i=0;i<SCI_RX_BUF_TC;i++)
            {
              if(SciRxBuf[i]=='>')
                {
                  //Feed_SoftDog();					//喂软狗
                  flag=1;
                  i=SCI_RX_BUF_TC;
                }
            }
        }while(flag==0);
    }

  for(i=0;i<SCI_TX_BUF_TC;i++){
    SciTxBuf[i]=0;
  } 
  for(i=0;i<SCI_RX_BUF_TC;i++) {
    SciRxBuf[i]=0;
  }

 
 //打电话
  
    (void)strcpy(SciTxBuf,"ATD");			 //打电话AT指令
    switch(Tel)
      {      
         case 1:
               ReadFlash(TELE_NUMBER1); //读电话号码
               break;
         
         case 2:
               ReadFlash(TELE_NUMBER2); //读电话号码
               break;
         
         case 3:
               ReadFlash(TELE_NUMBER3); //读电话号码
               break;
         
         default:
               break;       
      }
    for(i=0;i<11;i++)
      {
         SciTxBuf[3+i]= FLASHBUFFER[i];
      }
    SciTxBuf[14]=';';
    SciTxBuf[15]='\r';
    SciTxLen =16;
    SciRxPtr = 0;
    UARTTransmitt(); //串口发送 
}

void HangUpCellPhone(void)
{
    UINT8 i,flag;
    while(SciTxFlag==TRANSMITT_ING);//等待上一次发送完毕         
    while(RxTimeoutFlag < 3);
    RxTimeoutFlag=0;
    Feed_HardDog();
    do{
      flag=0; 
      for(i=0;i<SCI_RX_BUF_TC;i++){
        if(SciRxBuf[i]==';') {
          //Feed_SoftDog();					//喂软狗
          flag=1;
          i=SCI_RX_BUF_TC;
        }
      }
    }while(flag==0);

  for(i=0;i<SCI_TX_BUF_TC;i++){
    SciTxBuf[i]=0;
  } 
  for(i=0;i<SCI_RX_BUF_TC;i++) {
    SciRxBuf[i]=0;
  }

  //挂断电话
  (void)strcpy(SciTxBuf,"ATH\r");
  SciTxLen =4;
  SciRxPtr = 0;
  UARTTransmitt(); //串口发送
  while(SciTxFlag==TRANSMITT_ING);//等待上一次发送完毕
  DelayMS(300);
  Feed_HardDog();
  (void)strcpy(SciTxBuf,"ATH\r");
  SciTxLen =4;
  SciRxPtr = 0;
  UARTTransmitt(); //串口发送
  /*
  while(SciTxFlag==TRANSMITT_ING);//等待上一次发送完毕         
  while(RxTimeoutFlag < 3);
  RxTimeoutFlag=0;
  Feed_HardDog();
  while(RxTimeoutFlag < 3);
  RxTimeoutFlag=0;
  Feed_HardDog();
  do{
      flag=0; 
      for(i=0;i<SCI_RX_BUF_TC;i++){
        if(((SciRxBuf[i]=='C')&&(SciRxBuf[i+1]=='A'))&&((SciRxBuf[i]=='N')&&(SciRxBuf[i+1]=='O'))) {
          //Feed_SoftDog();					//喂软狗
          flag=1;
          i=SCI_RX_BUF_TC;
        }
      }
    }while(flag==0);
  //再挂一次  
  for(i=0;i<SCI_TX_BUF_TC;i++){
    SciTxBuf[i]=0;
  } 
  for(i=0;i<SCI_RX_BUF_TC;i++) {
    SciRxBuf[i]=0;
  }

  (void)strcpy(SciTxBuf,"ATH\r");
  SciTxLen =4;
  SciRxPtr = 0;
  UARTTransmitt(); //串口发送
  while(SciTxFlag==TRANSMITT_ING);//等待上一次发送完毕         
  while(RxTimeoutFlag < 3);
  RxTimeoutFlag=0;
  Feed_HardDog();
  while(RxTimeoutFlag < 3);
  RxTimeoutFlag=0;
  Feed_HardDog();
  do{
      flag=0; 
      for(i=0;i<SCI_RX_BUF_TC;i++){
        if(((SciRxBuf[i]=='O')&&(SciRxBuf[i+1]=='K'))&&((SciRxBuf[i]=='N')&&(SciRxBuf[i+1]=='O'))) {
          //Feed_SoftDog();					//喂软狗
          flag=1;
          i=SCI_RX_BUF_TC;
        }
      }
    }while(flag==0); */ 
  }





⌨️ 快捷键说明

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