📄 lk607w.c
字号:
#include<windows.h>
#include<windowsx.h>
int Wcard(LPSTR inb,LPSTR istr);
int Rcard(LPSTR inb,LPSTR instr);
#include<string.h>
#include<ctype.h>
int FAR PASCAL LibMain(HINSTANCE hInstance,WORD wDataSeg,WORD wHeapSize,LPSTR lpszCmdLine)
{
if(wHeapSize!=0) UnlockData(0);
return(1);
}
/*void FAR PASCAL _export WEP(int nSystemExit)
{
return 1 ;
}*/
int Wcard(LPSTR inb,LPSTR istr)
{
DCB dcb;
COMSTAT comstat;
HANDLE hd;
int retv=0;
int i=0,stl=0;
long t1,t2;
unsigned char bcc=0,instr[300],nb[]="COM2:96",str[300];
char setting[]="COM2:96,o,7,1",comn[]="COM2";
char *ps;
lstrcpy(nb,inb);
AnsiUpper(istr);
lstrcpy(str+1,istr);
comn[3]=nb[3];
lstrcpy(setting,nb);
lstrcat(setting,",o,7,1");
str[0]=2;
while(1)
{
i++;
bcc=str[i]^bcc;
if(str[i]==0)
{
str[i]=3;
bcc=3^bcc ;
str[i+1]=bcc ;
str[i+2]=0 ;
stl=i+2 ;
break ;
}
}
hd=OpenComm(comn,300,300);
if(!(hd<0))
{
retv=1;
}
else
{
retv=-1;
goto end;
}
if(BuildCommDCB(setting,&dcb)==0)
{
retv=1;
}
else
{
retv=-2;
goto end;
}
if(SetCommState(&dcb)==0)
{
retv=1;
}
else
{
retv=-3;
goto end;
}
WriteComm(hd,str,stl);
ps=instr;
t1=GetCurrentTime();
t2=0;
GetAsyncKeyState(VK_ESCAPE); //clear the ESC pressed events
while(t2<=100)
{
if(GetAsyncKeyState(VK_ESCAPE)!=0)
{
retv=-5;
goto end;
}
GetCommError(hd,&comstat);
if(comstat.cbInQue!=0)
{
ReadComm(hd,ps,comstat.cbInQue);
ps=ps+comstat.cbInQue;
t1=GetCurrentTime();
}
if(ps!=instr) t2=GetCurrentTime()-t1;
}
*ps=0;
if(lstrcmp(str,instr)==0) retv=1;
else retv=-4;
end:
FlushComm(hd,1);
FlushComm(hd,0);
EscapeCommFunction(hd,CLRRTS);
CloseComm(hd);
return retv;
}
int Rcard(LPSTR inb,LPSTR instr)
{
DCB dcb;
COMSTAT comstat;
HANDLE hd;
int i=0,retv=0;
long t1,t2;
unsigned char nb[]="COM2:96";
char setting[]="COM2:96,o,7,1",comn[]="COM2";
unsigned char *ps;
lstrcpy(nb,inb);
comn[3]=nb[3];
lstrcpy(setting,nb);
lstrcat(setting,",o,7,1");
hd=OpenComm(comn,300,300);
if(hd<0)
{
retv=-1;
goto end;
}
if(BuildCommDCB(setting,&dcb)!=0)
{
retv=-2;
goto end;
}
if(SetCommState(&dcb)!=0)
{
retv=-3;
goto end;
}
ps=instr;
t1=GetCurrentTime();
t2=0;
GetAsyncKeyState(VK_ESCAPE); //clear the ESC pressed events
while(t2<=100)
{
if(GetAsyncKeyState(VK_ESCAPE)!=0)
{
retv=-5;
goto end;
}
GetCommError(hd,&comstat);
if(comstat.cbInQue!=0)
{
ReadComm(hd,ps,comstat.cbInQue);
ps=ps+comstat.cbInQue;
t1=GetCurrentTime();
}
if(ps!=instr) t2=GetCurrentTime()-t1;
}
*ps=0;
if(lstrlen(instr)<=4) retv=-4;
else if(*instr==2)
{
lstrcpy(instr,instr+1);
if(*(instr+lstrlen(instr)-2)==3)
{
*(instr+lstrlen(instr)-2)=0;
retv=lstrlen(instr);
}
else if(*(instr+lstrlen(instr)-1)==3)
{
*(instr+lstrlen(instr)-1)=0;
retv=lstrlen(instr);
}
else retv=-4;
}
else retv=-4;
end:
FlushComm(hd,1);
FlushComm(hd,0);
EscapeCommFunction(hd,CLRRTS);
CloseComm(hd);
return retv;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -