📄 备份vfdb.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 + -