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

📄 备份vfdb.c

📁 该工程是通过RS485方式控制远程变频器实例
💻 C
字号:
/****************************************
*名称:Get_datatrans()
*功能:将接收到的数据转化成相应HEX格式,例如'0'(0x30)-->0(0x00),'A'(0x41)-->A(0x0a);
*说明:
*入口函数:
*出口函数:
****************************************/
static UINT8 Get_datatrans(UINT8 t_data)
{
  UINT8 r_data;
  if(( t_data >= 0x30 )&&( t_data <= 0x39 ))    r_data = t_data - 0x30;
  else if (( t_data >= 0x41 )&&( t_data <= 0x46 ))  r_data = t_data - 0x37;
  else r_data = 0;

  return r_data;
}




/****************************************
*名称:Get_vfdbbyte()
*功能:
****************************************/
static UINT8 Get_vfdbbyte(volatile UINT8 *p_data)
{
  UINT8 g_data = 0,t_data = 0,i;
  UINT8 *p_datareg;//指针转移,以免对原始数据造成丢失

  p_datareg = p_data;

  for(i=0;i<2;i++)
  {
  	g_data = *p_datareg;
  	p_datareg++;
  	g_data = Get_datatrans(g_data);

  	t_data = (t_data << 4) + g_data;
  }
  return t_data;
}

/****************************************
*名称:Get_vfdbword()
*功能:
****************************************/
static UINT16 Get_vfdbword(UINT8 *p_data)
{
  UINT8 g_data,t_data,i;
  UINT8 *p_datareg;//指针转移,以免对原始数据造成丢失

  p_datareg = p_data;

  for(i=0;i<4;i++)
  {
  	g_data = *p_datareg;
  	p_datareg++;
  	g_data = Get_datatrans(g_data);

  	t_data = (t_data << 4) + g_data;
  }
  return t_data;
}

/****************************************
*名称:Get_test()
*功能:测试程序,测试接收
****************************************/
void Get_test(UINT8 *p_data,UINT8 num) 
{
  UINT8 *p_datareg,*n_datareg;
  UINT8 i,datareg;

  p_datareg = p_data;
  n_datareg = p_data;


  for(i=0;i<4*num+11;i++)  
  {
    *p_datareg = Getchar();
	 p_datareg++;
  }

  p_datareg -= 4*num+10;

  for(i=0;i<2*num+5;i++)
 {
	datareg = Get_vfdbbyte(p_datareg);
    *n_datareg = datareg;
  	p_datareg += 2;
	n_datareg++;
 }

/*
  for(i=0;i<num;i++)  
  {
    *p_datareg = Getchar();
	 p_datareg++;
  }
  
  p_datareg -= num;

  for(i=0;i<num/2;i++)
 {
	datareg = Get_vfdbbyte(p_datareg);
    *n_datareg = datareg;
  	p_datareg += 2;
	n_datareg++;//错误之处:第二次写的地方不对,应该是p_datareg+1,而读的地址应该是p_datareg+2;
 }
*/

}

/****************************************
*名称:Get_readreg()
*功能:完成读出寄存器内容后的数据接收
*说明:

STX---Address---Function---Number of data(count by byte)---Content data(num words)---LRC Check---END

*入口函数:num:操作数据笔数(word);要求和发送num一致;
*出口函数:返回记录接收到的数据指针头地址,返回数据去掉了STX和END,格式如下:

Address---Function---Number of data(count by byte)---Content data(num words)---LRC Check

返回将有(2*num+5)字节

****************************************/
void Get_readreg(UINT8 *p_data,UINT8 num) 
{
  UINT8 *p_datareg,*n_datareg;
  UINT8 i,datareg;

  p_datareg = p_data;
  n_datareg = p_data;

  for(i=0;i<4*num+11;i++)  
  {
    *p_datareg = Getchar();
	 p_datareg++;
  }

  p_datareg -= 4*num+10;

  for(i=0;i<5+num*2;i++)
  {
	datareg = Get_vfdbbyte(p_datareg);
    *n_datareg = datareg;
  	p_datareg += 2;
	n_datareg++;
  }

}
/****************************************
*名称:Get_write()
*功能:
****************************************/
void Get_write(UINT8 *p_data) 
{
  UINT8 *p_datareg,*n_datareg;
  UINT8 i,datareg;

  p_datareg = p_data;
  n_datareg = p_data;

  for(i=0;i<17;i++)  
  {
    *p_datareg = Getchar();
	 p_datareg++;
  }

  p_datareg -= 16;

  for(i=0;i<7;i++)
  {
	datareg = Get_vfdbbyte(p_datareg);
    *n_datareg = datareg;
  	p_datareg += 2;
	n_datareg++;
  }

}

/****************************************
*名称:Get_writeone()
*功能:完成写入一笔数据后的数据接收
*说明:

STX---Address---Function---Content data(num words)---Content data(num words)---LRC Check---END

*入口函数:
*出口函数:返回记录接收到的数据指针头地址,返回数据去掉了STX和END,格式如下:

Address---Function---Content data(num words)---Content data(num words)---LRC Check

返回将有(7)字节

****************************************/
void Get_writeone(UINT8 *p_data) 
{
	Get_write(p_data);
}

/****************************************
*名称:Get_writecheck()
*功能:完成回路检测后的数据接收
*说明:

STX---Address---Function---Content data(num words)---Content data(num words)---LRC Check---END

*入口函数:
*出口函数:返回记录接收到的数据指针头地址,返回数据去掉了STX和END,格式如下:

Address---Function---Content data(num words)---Content data(num words)---LRC Check

返回将有(7)字节

****************************************/
void Get_writecheck(UINT8 *p_data) 
{
	Get_write(p_data);
}

/****************************************
*名称:Get_writemore()
*功能:完成回路检测后的数据接收
*说明:

STX---Address---Function---Content data(num words)---Content data(num words)---LRC Check---END

*入口函数:
*出口函数:返回记录接收到的数据指针头地址,返回数据去掉了STX和END,格式如下:

Address---Function---Content data(num words)---Content data(num words)---LRC Check

返回将有(7)字节

****************************************/
void Get_writemore(UINT8 *p_data)
{
	Get_write(p_data);
}

⌨️ 快捷键说明

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