waitfor.c
来自「异步通讯C语言例行子程序」· C语言 代码 · 共 39 行
C
39 行
/* A module of ASYNCx.LIB version 1.02 */
#include <ctype.h>
#include <dos.h>
#include "asyncdef.h"
/*************************************************************
Wait for the string pointed to by s to be received on the
specified port. Wait for up to between t and t+1 18ths of a
second for the string to arrive. If mode is 0, the string
must match exactly. If the mode is 1, the case of the
received string may vary from that of the string s points to.
*************************************************************/
int a_waitfor(ASYNC *p,char *s,int t,int mode)
{unsigned long t0,far *t1;
char c,*cp;
if (p)
{cp=s;
t1=(unsigned long far *)MK_FP(0x40,0x6c);
t0=*t1;
while(*cp && (*t1)-t0<=(unsigned long)t)
if (a_icount(p)) /* a character is available from the port */
{c=a_getc(p); /* read the character */
if (mode) /* the case of the character does not matter */
if (toupper(*cp)==toupper(c)) /* this is the right character */
cp++; /* point cp to the next character to look for */
else /* this is not the right character */
cp=s; /* start cp back at the beginning of the string */
else /* the case of the character does matter */
if (*cp==c) /* this is the character I was looking for */
cp++; /* point cp to the next character to look for */
else /* this is not the right character */
cp=s; /* start cp back at the beginning of the string */
}
return (int)(*cp); /* return 0 if the string was found */
}
return -1;
} /* end of a_waitfor(p,s,t,mode) */
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?