监听已占用串口收发的数据
请教各位一个问题:怎么来获取一个已经被占用串口收发的数据。先谢谢了!
[解决办法]
钩子,勾住readfile
[解决办法]
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <io.h>
#define MAXFILES 100
char fn[MAXFILES][80];
FILE *f,*fo,*fi;
char fno[80],tmp[80];
char ln[1024];
char bk[1024];
int n,i,fs,L,k,st,v;
char *p;
//char *t;
void main() {
system("dir COM3*.log /b >alllog");
f=fopen("alllog","r");
if (NULL==f) {printf("Can not open file:alllog\n");return;}
for (i=0;i<MAXFILES;i++) {
if (NULL==fgets(fn[i],80,f)) break;
L=strlen(fn[i]);
fn[i][L-1]=0;
}
fs=i;
fclose(f);
for (n=0;n<fs;n++) {
strcpy(fno,"WR_");
strcat(fno,fn[n]);
strcat(fno,".txt");
if (!access(fno,0)) continue;
fo=fopen(fno,"w");
if (NULL==fo) {printf("Can not create file:%s\n",fno);return;}
fi=fopen(fn[n],"r");
if (NULL==fi) {printf("Can not open file:%s\n",fn[n]);return;}
st=0;
while (1) {
if (NULL==fgets(ln,1024,fi)) break;//
switch (st) {
case 0:
if (strstr(ln,"\tIRP_MJ_READ")) {
fprintf(fo,"%s",ln);
}
if (strstr(ln,"\tIRP_MJ_WRITE")) {
fprintf(fo,"\n%s",ln);
st=1;
}
break;
case 1:
if (strstr(ln,"\tIRP_MJ_READ")) {
L=strlen(ln);
ln[L-1]=0;
if ('\t'==ln[L-2]) ln[L-2]=0;
if (' '==ln[L-3]) ln[L-3]=0;
fprintf(fo,"%s",ln);
st=2;
}
if (strstr(ln,"\tIRP_MJ_WRITE")) {
fprintf(fo,"\n%s",ln);
}
break;
case 2:
if (strstr(ln,"\tIRP_MJ_READ")) {
L=strlen(ln);
ln[L-1]=0;
if ('\t'==ln[L-2]) ln[L-2]=0;
if (' '==ln[L-3]) ln[L-3]=0;
p=strstr(ln,"Length ");
sscanf(p+7,"%d",&v);
if (v>0) {
sprintf(tmp,"%d",v);
k=strlen(tmp);
fprintf(fo,"%s",p+7+k+1);
}
}
if (strstr(ln,"\tIRP_MJ_WRITE")) {
fprintf(fo,"\n%s",ln);
st=1;
}
break;
}
}
fclose(fi);
fclose(fo);
}
}