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

📄 tansrule.h

📁 华帮单片机双串口工作代码
💻 H
字号:

#include "define_W77E058.h"
extern unsigned char read_I2C(unsigned char);
//*****************************************************************************************************************//
// 把接收好的上位机数据转化为查询或者控制下位机的指令
//***************************************************************************************************************
 void TranstoMode()
{ 
   unsigned char idata command,i,content0[12];

   EA=0;
 for(i=0;i<12;i++)content0[i]=rxdbuf1[i];
    EA=1; 

    ADR2=read_I2C(0xf2);
    ADR1=read_I2C(0xf0);
   if(content0[2]!=ADR1&&content0[2]!=0x00) return;
   if(content0[3]!=ADR2&&content0[3]==0x00) return;   
  
    i=content0[1]+1;    
   if(content0[i]!=crc(content0))  return;
    content0[i+1]=0x55;
  
   command=content0[4];
   switch(command)
  {
 
  case 0x0f:
          content0[2]=0x02;//开关灯模块
          content0[3]=0x01;
          content0[6]=crc(content0);
          Serial0_Send(content0);
          //ClrRXD(content0);
          //Disdata(27);Disdata(27);Disdata(1);Disdata(1);Disdata(1);delayms(240);   
          break;  
  
  case 0x0b: 
          content0[2]=0x02;//开关灯模块的时钟设置
          content0[3]=0x01;//
          content0[8]=crc(content0);
          Serial0_Send(content0);
         // ClrRXD(content0);
         // Disdata(27);Disdata(27);Disdata(2);Disdata(2);Disdata(2);delayms(240);  
           break;//开关量模块
  
  case 0x0c: 
          content0[2]=0x04;content0[3]=0x01;//用于节电器时间设置
          content0[9]=crc(content0);
          Serial0_Send(content0);
         // ClrRXD(content0); 
         // Disdata(27);Disdata(27);Disdata(3);Disdata(3);Disdata(3);delayms(240); 
         break;//节电器模块设置指令
  
  /*case 0x2d: 
          txdbuf0[2]=0x04;//节电器输出电压与状态(含故障查询)、//节电器模块
        //else  txdbuf0[2]=0x01;//输入电压与支路电流的查询_____//模拟量模块采块
          txdbuf0[3]=0x01;
          txdbuf0[6]=crc(txdbuf0);
          Serial0_Send(txdbuf0);
          ClrRXD(txdbuf0); break; */

  case 0x0d: 
          content0[2]=0x01;//输入电压与支路电流的查询_____//模拟量模块采块
          content0[3]=0x01;
          content0[6]=crc(content0);
          Serial0_Send(content0);
         // ClrRXD(content0); 
       // Disdata(27);Disdata(27);Disdata(4);Disdata(4);Disdata(4);delayms(240); 
          break;
   
  /*case 0x00: 
        Disdata(0);Disdata(0);Disdata(0);Disdata(1);Disdata(5);delayms(800);break;/*/
   default: Disdata(27);Disdata(27);Disdata(27);Disdata(27);Disdata(27);delayms(240);//while(CheckError);delayms(20);while(!CheckError);//显示三三三三三
   }
  }

//*****************************************************************************************************************//
// 把接收好的下位机数据传送给上位机
//***************************************************************************************************************
 void TranstoPC()
{
  unsigned char idata i,content1[12];
  
  for(i=0;i<12;i++)content1[i]=rxdbuf0[i]; // ClrRXD(rxdbuf0); //command=txdbuf1[4];
  if(content1[0]!=0xfd) return ;
   //ADR1=read_I2C(0xf0);//读区域号
  // ADR2=read_I2C(0xf2);//读分机号
   content1[2]=read_I2C(0xf0);
   content1[3]=read_I2C(0xf2);
 
   i=content1[1];
   content1[i+1]=crc(content1); 
   content1[i+2]=0xfc;
   Serial1_Send(content1);
   Serial0_Send(content1);//
   //ClrRXD(content1);   //主机手动控制开关灯及节电器状态控制数据
 }

⌨️ 快捷键说明

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