串口数据接收的有数据00,如何用字符传过来
串口数据接收的有数据00,怎么用字符传过来?
int __stdcall ICPowerOn(char *CardNo)
{
LogTxt(0,"*** ICPowerOn() ***");
if(handle_test==false)
OpenComm(1,9600);
BYTE Cmd[2];
int Reb;
int relen;
char ReceLen[100]="";
char ReceData[200]={0};
char ReData[100]={0};
Cmd[0]=0x49;
Cmd[1]=0x30;
Reb=SendTrackCmd(handle,Cmd,2,(BYTE*)CardNo,&relen,200,2000,2000);
sprintf(ReceData,"数据长度[%d]",relen);
LogTxt(4,ReceData);
char Rece[255]="";
LogTxt(4,CardNo);
if (Reb!=OK)return Reb;
return 1;
}
真实的数据是:
2012-12-19 10:04:07.265[BN4]数据长度[17]3B 6D 00 00 80 31 80 65 B0 84 01 00 C8 83 00 90 00
我这样传的话 显示出来的只有3B 6D
如果先用BYTE数组接收 在用memcpy传递给CardNO
则数据为3B 6D 00 00 80 31
------解决方案--------------------
确实你的这个转换函数造成的,一个字节进来,变成三个字节出去了。一个方法是给这个函数增加一个返回参数,记录实际的h串的长度,后续的内存复制必须用这个长度才行。
int __stdcall ICPowerOn(char *CardNo)
{
LogTxt(0,"*** ICPowerOn() ***");
if(handle_test==false)
OpenComm(1,9600);
BYTE Cmd[2];
int Reb;
int relen;
char ReceLen[100]="";
char ReceData[200]={0};
char ReData[100]={0};
Cmd[0]=0x49;
Cmd[1]=0x30;
Reb=SendTrackCmd(handle,Cmd,2,(BYTE*)CardNo,&relen,200,2000,2000);
sprintf(ReceData,"数据长度[%d]",relen);
LogTxt(4,ReceData);
char Rece[255]="";
LogTxt(4,CardNo);
if (Reb!=OK)return Reb;
return 1;
}
真实的数据是:
2012-12-19 10:04:07.265[BN4]数据长度[17]3B 6D 00 00 80 31 80 65 B0 84 01 00 C8 83 00 90 00
我这样传的话 显示出来的只有3B 6D
如果先用BYTE数组接收 在用memcpy传递给CardNO
则数据为3B 6D 00 00 80 31
------解决方案--------------------
确实你的这个转换函数造成的,一个字节进来,变成三个字节出去了。一个方法是给这个函数增加一个返回参数,记录实际的h串的长度,后续的内存复制必须用这个长度才行。