65,186
社区成员




//memcpy(CmdLog ,Recvbuffer,dwReadbytes);
char mark[] = "[EOT](OK)";
char* p = std::search(Recvbuffer, Recvbuffer + dwReadbytes, mark, mark + sizeof(mark)-1);
if(p < Recvbuffer + dwReadbytes) // found it
{
std::copy(Recvbuffer, p, CmdLog);//不含mark
//std::copy(Recvbuffer, p + sizeof(mark) - 1, CmdLog); //含mark
break;
}
char CmdLog [1024*1024]={0};//1MB啦,小心栈溢出
if (i<dwTotalLength-L)) break;
应改为
if (i<dwTotalLength-L) break;
for (i=0;i<LogLength-L;i++) {
if (0==memcmp(CmdLog+i,E,L)) break;
}
if (!(i<LogLength-L)) break;
应改为
for (i=0;i<dwTotalLength-L;i++) {
if (0==memcmp(CmdLog+i,E,L)) break;
}
if (i<dwTotalLength-L)) break;
const int LogLength=1024*1024;
DWORD dwTotalLength;
char CmdLog[LogLength];
char *s;
char *E="[EOT](OK)";
int i,L;
dwTotalLength=0;
s=CmdLog;
L=strlen(E);
while (TRUE) {
dwReadbytes = pUsb->usb_bulk_read(hdev, EP_IN, (char *)Recvbuffer, 512);
if (dwReadbytes>0) {
if (dwTotalLength+dwReadbytes>LogLength) {
printf("%s %d:%d==dwTotalLength+dwReadbytes>LogLength==%d!\n",__FILE__,__LINE__,dwTotalLength+dwReadbytes,LogLength);
break;
}
memcpy(s,Recvbuffer,dwReadbytes);
s+=dwReadbytes;
dwTotalLength+=dwReadbytes
for (i=0;i<LogLength-L;i++) {
if (0==memcmp(CmdLog+i,E,L)) break;
}
if (!(i<LogLength-L)) break;
} else {
printf("%s %d:%d==dwReadbytes<=0!\n",__FILE__,__LINE__,dwReadbytes);
break;
}
}
DWORD dwReadbytes = 512;//给一个初始值,让循环开始
while(dwReadbytes == 512)//不够512就认为读取结束。
{
dwReadbytes = pUsb->usb_bulk_read(hdev, EP_IN, (char *)Recvbuffer, 512);
memcpy(CmdLog +S,Recvbuffer,dwReadbytes);
S+=dwReadbytes ;
}
const int LogLength=1024*1024;
DWORD dwTotalLength;
char CmdLog[LogLength];
char *s;
char *E="[EOT](OK)";
int i,j,L;
dwTotalLength=0;
s=CmdLog;
L=strlen(E);
j=0;
while (TRUE) {
dwReadbytes = pUsb->usb_bulk_read(hdev, EP_IN, (char *)Recvbuffer, 512);
if (dwReadbytes>0) {
if (dwTotalLength+dwReadbytes>LogLength) {
printf("%s %d:%d==dwTotalLength+dwReadbytes>LogLength==%d!\n",__FILE__,__LINE__,dwTotalLength+dwReadbytes,LogLength);
break;
}
memcpy(s,Recvbuffer,dwReadbytes);
s+=dwReadbytes;
dwTotalLength+=dwReadbytes
for (i=j;i<dwTotalLength-L;i++) {
if (0==memcmp(CmdLog+i,E,L)) break;
}
if (i<dwTotalLength-L) break;
j=i;
} else {
printf("%s %d:%d==dwReadbytes<=0!\n",__FILE__,__LINE__,dwReadbytes);
break;
}
}
const int LogLength=1024*1024;
DWORD dwTotalLength;
char CmdLog[LogLength];
char *s;
char *E="[EOT](OK)";
int i,j,L;
dwTotalLength=0;
s=CmdLog;
L=strlen(E);
j=0;
while (TRUE) {
dwReadbytes = pUsb->usb_bulk_read(hdev, EP_IN, (char *)Recvbuffer, 512);
if (dwReadbytes>0) {
if (dwTotalLength+dwReadbytes>LogLength) {
printf("%s %d:%d==dwTotalLength+dwReadbytes>LogLength==%d!\n",__FILE__,__LINE__,dwTotalLength+dwReadbytes,LogLength);
break;
}
memcpy(s,Recvbuffer,dwReadbytes);
s+=dwReadbytes;
dwTotalLength+=dwReadbytes
for (i=j;i<dwTotalLength-L;i++) {
if (0==memcmp(CmdLog+i,E,L)) break;
}
if (i<dwTotalLength-L) break;
j=i;
} else {
printf("%s %d:%d==dwReadbytes<=0!\n",__FILE__,__LINE__,dwReadbytes);
break;
}
}