⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sesupp.c

📁 功能丰富的串口通讯程序
💻 C
字号:
/* * This file is part of the Seyon, Copyright (c) 1992-1993 by Muhammad M. * Saggaf. All rights reserved. * * See the file COPYING (1-COPYING) or the manual page seyon(1) for a full * statement of rights and permissions for this program.*//*    Revisions:    2.2		lg	Now uses /dev/tty instead of stdin/stdout    2.2		lg	Added command parser*/#include <signal.h>#include <X11/Intrinsic.h>#include "seyon.h"#include "SeDecl.h"extern FILE    *tfp;		/* Local terminal */extern int      tfd;		/* Local terminal */char            line[WBSIZE];	/* Input line */char            word[WBSIZE];	/* Parsed word */char           *wptr,               *lptr;		/* Word and line pointers */int             eof_flag = 0;	/* Indicates EOF during getline() processing */voidsendstr(p)			/* send a string to the port */     register char  *p;{  while (*p)    sendbyte(*p++);}/* Convert uppercase characters to lowercase, (without * mangling non-uppercase characters), in a portable manner. */intmklow(c)     int             c;{  if (isupper(c))    return (tolower(c));  return (c);}/* * parse the "line" array for a word */voidgetword(){  char           *ptr,                  quote;  int             bflag = 0,                  qflag = 0;  int             nflag = 0;  ptr = word;  *ptr = '\0';  if (eof_flag || *lptr == '\0')    return;  while (isspace(*lptr))    lptr++;  wptr = lptr;  if (*lptr == '\0')    return;  if (*lptr == '\'' || *lptr == '\"')    quote = *lptr++;  else    quote = '\0';  for (; *lptr != '\0'; lptr++) {    if (quote) {      if (*lptr == '\0') {		word[0] = '\0';		fprintf(tfp, "Unmatched quote: %s\r\n", line);		eof_flag = 1;		return;      }      if (*lptr == quote)		break;    }    else if (!qflag && isspace(*lptr))      break;    if (bflag)      *ptr++ = *lptr & 0x1f;    else if (qflag)      *ptr++ = *lptr;    else if (*lptr == '^')      bflag = 1;    else if (*lptr == '\\')      qflag = 1;    else      *ptr++ = *lptr;    if (nflag == 1) {      nflag = 0;      bflag = 0;      qflag = 0;    }    if (bflag == 1 || qflag == 1)      nflag = 1;  }  if (*lptr)	lptr++;  *ptr = '\0';}voidGetWord(lin, wrd)     char           *lin,                    *wrd;{  char           *ptr;  int             cc = 0xff;  int             quote = 0;  ptr = wrd;  lptr = lin;  *ptr = '\0';  if (*lptr == '\0')    return;  while (isspace(*lptr))    lptr++;  wptr = lptr;  if (*lptr == '\0')    return;  if (*lptr == '\"') {    lptr++;    quote = 1;  }  while (*lptr && (quote || !isspace(*lptr)) && (!quote || *lptr != '\"')) {	    if (*lptr == '^' && *(lptr + 1) && (!quote || *(lptr + 1) != '\"')) {      lptr++;      if (*lptr != '^')		cc = 0x1f;    }    *ptr++ = *lptr & cc;    lptr++;    cc = 0xff;  }  if (*lptr)    lptr++;;  *ptr = '\0';}char*NextWord(newLinePtr)	 char *newLinePtr;{  static char nextWord[LRG_BUF], *linePtr;  if (newLinePtr) linePtr = newLinePtr;  GetWord(linePtr, nextWord);  linePtr = lptr;  return nextWord;}/* * make the specified word all lower case */voidlc_word(ptr)     char           *ptr;{  while (*ptr) {    *ptr = mklow(*ptr);    ptr++;  }}/* * input a line from the specified file */voidgetline(fp)     FILE           *fp;{  int             l;  memset(line, 0, WBSIZE);  if ((fgets((lptr = line), WBSIZE, fp)) == NULL) {    eof_flag = 1;    line[0] = '\0';  }  l = strlen(line);	       /* Purge newline if found */  if (l--) {    if (line[l] == '\n')      line[l] = '\0';  }}voidset_tty_mode(){  io_set_attr(tfd, &newmode);}voidrestore_orig_mode(){  io_set_attr(tfd, &oldmode);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -