#include "wcskj.h"
/*功能: 延时等待=1125*V+1000 (ns)
输入参数:v 等待时间*/
void delay(unsigned long v)
{ while(v!=0)
v--;
}/*功能: 16位的CRC校验
入口参数: s----->校验缓存
len--->校验长度
返回值: 校验值
变量: acc --->校验值 */
unsigned int crc(char *s,int len) //16位的CRC校验
{ unsigned int acc = 0,i;
while (len--)
{ acc = acc ^ (*s++ << 8);
for (i = 0; i++ < 8;)
{ if (acc & 0x8000)
acc = (acc << 1) ^ 0x8005;
else
acc <<= 1;
}
}
return acc;
}/*功能: 将字符串数字转换成10进制数 "123"->123
入口参数: p---字符串
hexh--->返回的十六进制 */
unsigned long int ascDHEX(unsigned char *p)
{ unsigned char i,len,j,k;
unsigned long int Zhu=1;
unsigned long int hexh;
len=Strsize(p);
hexh=0;
for(i=1;i<=len;i++)
{ k=(p[len-i]-'0');
for(j=0;j<k;j++)
hexh+=Zhu;
Zhu*=10;
}
return hexh;
}/*功能:ASC转换成数值,小于256,例"12"---12 ??
输入: *AscData ASC数据存放地址,不能超过3个字节
输出: *CharValue 输出的数值,最大255
返回值:0 转换成功,ER_CharOver 数值溢出*/
unsigned char AscTransToChar(unsigned char *AscData,unsigned char *CharValue)
{ unsigned long int hexh;
hexh=ascDHEX(AscData);
if (hexh>255)
return ER_CharOver;
else
*CharValue=(unsigned char)hexh;
return 0;
}/*功能:一个字节的数值转换成ASC字符串??
输入:HexChar 数值0-255
输出:*p ASC字符串的地址
返回值:字符串的长度 */
unsigned char HexCharDAsc(unsigned char *p,unsigned char HexChar)
{ unsigned long int HEXH;
unsigned char Data[10],DataLen;
HEXH=HexChar;
DataLen=hexDasc(Data,(unsigned long int)HEXH);
MoveByte(p,Data,DataLen);
return DataLen;
}/*功能:两个字节的数值转换成ASC字符串??
输入:HexInt 数值0-62256
输出:*p ASC字符串的地址
返回值:字符串的长度 */
unsigned char HexIntDAsc(unsigned char *p,unsigned int HexInt)
{ unsigned long int HEXH;
HEXH=HexInt;
return hexDasc(p,(unsigned long int)HEXH);
}
/*功能: 延时等待=1125*V+1000 (ns)
输入参数:v 等待时间*/
void delay(unsigned long v)
{ while(v!=0)
v--;
}/*功能: 16位的CRC校验
入口参数: s----->校验缓存
len--->校验长度
返回值: 校验值
变量: acc --->校验值 */
unsigned int crc(char *s,int len) //16位的CRC校验
{ unsigned int acc = 0,i;
while (len--)
{ acc = acc ^ (*s++ << 8);
for (i = 0; i++ < 8;)
{ if (acc & 0x8000)
acc = (acc << 1) ^ 0x8005;
else
acc <<= 1;
}
}
return acc;
}/*功能: 将字符串数字转换成10进制数 "123"->123
入口参数: p---字符串
hexh--->返回的十六进制 */
unsigned long int ascDHEX(unsigned char *p)
{ unsigned char i,len,j,k;
unsigned long int Zhu=1;
unsigned long int hexh;
len=Strsize(p);
hexh=0;
for(i=1;i<=len;i++)
{ k=(p[len-i]-'0');
for(j=0;j<k;j++)
hexh+=Zhu;
Zhu*=10;
}
return hexh;
}/*功能:ASC转换成数值,小于256,例"12"---12 ??
输入: *AscData ASC数据存放地址,不能超过3个字节
输出: *CharValue 输出的数值,最大255
返回值:0 转换成功,ER_CharOver 数值溢出*/
unsigned char AscTransToChar(unsigned char *AscData,unsigned char *CharValue)
{ unsigned long int hexh;
hexh=ascDHEX(AscData);
if (hexh>255)
return ER_CharOver;
else
*CharValue=(unsigned char)hexh;
return 0;
}/*功能:一个字节的数值转换成ASC字符串??
输入:HexChar 数值0-255
输出:*p ASC字符串的地址
返回值:字符串的长度 */
unsigned char HexCharDAsc(unsigned char *p,unsigned char HexChar)
{ unsigned long int HEXH;
unsigned char Data[10],DataLen;
HEXH=HexChar;
DataLen=hexDasc(Data,(unsigned long int)HEXH);
MoveByte(p,Data,DataLen);
return DataLen;
}/*功能:两个字节的数值转换成ASC字符串??
输入:HexInt 数值0-62256
输出:*p ASC字符串的地址
返回值:字符串的长度 */
unsigned char HexIntDAsc(unsigned char *p,unsigned int HexInt)
{ unsigned long int HEXH;
HEXH=HexInt;
return hexDasc(p,(unsigned long int)HEXH);
}
输入参数:v 等待时间*/
void delay(unsigned long v)
{ while(v!=0)
v--;
}
先翻译一段试试
function delay(var v:Double);Pointer;//pointer相当于c中的void
begin
while (v<>0) do
begin
dec(v);
end;
end;
{ unsigned char i,len,j,k;
unsigned long int Zhu=1;
unsigned long int hexh;
len=Strsize(p);
hexh=0;
for(i=1;i <=len;i++)
{ k=(p[len-i]-'0');
for(j=0;j <k;j++)
hexh+=Zhu;
Zhu*=10;
}
return hexh;
}
字符串转换为十进制数在Delphi下比较容易
直接atoi或者atoi64就行
其他的再看看