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

📄 config.c

📁 minicom的源码,linux下常用的串口程序.
💻 C
📖 第 1 页 / 共 4 页
字号:
  WIN *w;  int x, y;  int max = m_getmaxspd();  w = wopen(21, 3, 60, 20, BDOUBLE, stdattr, mfcolor, mbcolor, 0, 0, 1);  wtitle(w, TMID, _("Comm Parameters"));  dirflush = 0;  wlocate(w, 0, 3);  wputs(w, _("   Speed          Parity          Data\n\n"));  wputs(w, _(" A: 300           L: None         S: 5\n"));  wputs(w, _(" B: 1200          M: Even         T: 6\n"));  wputs(w, _(" C: 2400          N: Odd          U: 7\n"));  wputs(w, _(" D: 4800          O: Mark         V: 8\n"));  wputs(w, _(" E: 9600          P: Space\n"));  if (max > 96)    wputs(w, _(" F: 19200                      Stopbits\n"));  else    wputs(w, "                               Stopbits\n");  if (max > 192)    wputs(w, _(" G: 38400                         W: 1\n"));  else    wputs(w, _("                                    W: 1\n"));  if (max > 384)    wputs(w, _(" H: 57600                         X: 2\n"));  else    wputs(w, "                                    X: 2\n");  if (max > 576)    wputs(w, _(" I: 115200        Q: 8-N-1\n"));  else    wputs(w, _("                  Q: 8-N-1\n"));  if (max > 1152)    wputs(w, _(" J: 230400        R: 7-E-1\n"));  else    wputs(w, _("                  R: 7-E-1\n"));  if (curr_ok)    wputs(w, _(" K: Current\n"));  else    wputs(w, "\n");  wputs(w, _("\n Choice, or <Enter> to exit? "));  x = w->curx;  y = w->cury;  wredraw(w, 1);  while (1) {    wlocate(w, 1, 1);    wprintf(w, _("Current: %5s %s%s%s  "), ba, bi, pa, stopb);    wlocate(w, x, y);    wflush();    c = wxgetch();    switch(c) {      case 27:      case '\n':      case '\r':        dirflush = 1;        wclose(w, 1);        return;      default:	update_bbp_from_char(c, ba, bi, pa, stopb, curr_ok, max);        break;    }  }}/* Update the baud rate variables using the given character as the menu * option selected. */int update_bbp_from_char(char c, char *ba, char *bi, char *pa, char *stopb,                         int curr_ok, int max_speed){  int characterRecognised = 1;  bi[1] = 0;  pa[1] = 0;  if (c >= 'a')    c -= 32;  switch(c) {    case 'J':      if (max_speed < 2304)        break;    case 'I':      if (max_speed < 1152)        break;    case 'H':      if (max_speed < 576)        break;    case 'G':      if (max_speed < 384)        break;    case 'F':      if (max_speed < 192)        break;    case 'A':    case 'B':    case 'C':    case 'D':    case 'E':    case 'K':      if (c == 'K' && !curr_ok)        break;      strcpy(ba, speeds[c - 'A']);      break;    case 'L':      pa[0] = 'N';      break;    case 'M':      pa[0] = 'E';      break;    case 'N':      pa[0] = 'O';      break;    case 'O':      pa[0] = 'M';      break;    case 'P':      pa[0] = 'S';      break;    case 'Q':      pa[0] = 'N';      bi[0] = '8';      stopb[0] = '1';      break;    case 'R':      pa[0] = 'E';      bi[0] = '7';      stopb[0] = '1';      break;    case 'S':      bi[0] = '5';      break;    case 'T':      bi[0] = '6';      break;    case 'U':      bi[0] = '7';      break;    case 'V':      bi[0] = '8';      break;    case 'W':      stopb[0] = '1';      break;    case 'X':      stopb[0] = '2';      break;   default:      characterRecognised = 0;      break;  }  return characterRecognised;}/* * fmg - part of the Macros menu, "[none]" beats (null) :-) */static void out_mac(WIN *w, char *s, char n){  wprintf(w, " %c : %.67s\n", n, s ? s : "[none]");}/* * fmg - Macros editing window */void domacros(void){  WIN   *w;  int   clr = 1;  int   Jch = '1', Jm = 0; /* fmg - ok, so I was lazy.. */  char* question = _("Change which setting?  (Esc to exit)");  w = wopen(3, 6, 75, 24, BDOUBLE, stdattr, mfcolor, mbcolor, 0, 0, 1);  wtitle(w, TMID, _("F1 to F10 Macros"));  wprintf(w, "\n");  out_mac(w,mmacs[Jm++].value, Jch++);  out_mac(w,mmacs[Jm++].value, Jch++);  out_mac(w,mmacs[Jm++].value, Jch++);  out_mac(w,mmacs[Jm++].value, Jch++);  out_mac(w,mmacs[Jm++].value, Jch++);  out_mac(w,mmacs[Jm++].value, Jch++);  out_mac(w,mmacs[Jm++].value, Jch++);  out_mac(w,mmacs[Jm++].value, Jch++);  out_mac(w,mmacs[Jm++].value, Jch++);  Jch = 'A'; /* fmg - ran out of single digits... */  out_mac(w,mmacs[Jm++].value, Jch++);  wredraw(w, 1);  while(1) {    wlocate(w, 1, 14);    wputs(w, _(" (LEGEND: ^M = C-M, ^L = C-L, ^G = C-G, ^R = C-R, ^~ = pause 1 second,"));    wlocate(w, 1, 15);    wputs(w, _("  \\u = username, \\p = password, \\\\ = \\, \\e = toggle echo, "));    wlocate(w, 1, 16);    wputs(w, _("  \\l = toggle LF, \\bX1..Xn<sp> = change baud rate. Example: \"\\bfq \""));    wlocate(w, 1, 17);    wputs(w, _("  = 19200 8N1. (See the \"Comm Parameters\" menu for valid values of X.))"));    if (clr) {      wlocate(w, 1, 12);      wprintf(w, "%s ", question);      wclreol(w);      clr = 0;    } else      wlocate(w, mbslen (question) + 2, 12);    switch (rwxgetch()) {      case '\n':        wclose(w, 1);        return;      case '1':        mgets(w, 5, 1, P_MAC1, 72, MAC_LEN);        strcpy(P_MACCHG,_("CHANGED")); /* fmg - ...I'm ashamed */        wlocate(w, 0, 1);        out_mac(w,P_MAC1, '1');        break;      case '2':        mgets(w, 5, 2, P_MAC2, 72, MAC_LEN);        strcpy(P_MACCHG,"CHANGED"); /* fmg - ... really, I am */        wlocate(w, 0, 2);        out_mac(w,P_MAC2, '2');        break;      case '3':        mgets(w, 5, 3, P_MAC3, 72, MAC_LEN);        strcpy(P_MACCHG,"CHANGED"); /* fmg - ... this is the */        wlocate(w, 0, 3);        out_mac(w,P_MAC3, '3');        break;      case '4':        mgets(w, 5, 4, P_MAC4, 72, MAC_LEN);        strcpy(P_MACCHG,"CHANGED"); /* fmg - ... first entry on */        wlocate(w, 0, 4);        out_mac(w,P_MAC4, '4');        break;      case '5':        mgets(w, 5, 5, P_MAC5, 72, MAC_LEN);        strcpy(P_MACCHG,"CHANGED"); /* fmg - ... my TODO list. */        wlocate(w, 0, 5);        out_mac(w,P_MAC5, '5');        break;      case '6':        mgets(w, 5, 6, P_MAC6, 72, MAC_LEN);        strcpy(P_MACCHG,"CHANGED"); /* fmg - ... and, come to think */        wlocate(w, 0, 6);        out_mac(w,P_MAC6, '6');        break;      case '7':        mgets(w, 5, 7, P_MAC7, 72, MAC_LEN);        strcpy(P_MACCHG,"CHANGED"); /* fmg - ... of it, I no longer */        wlocate(w, 0, 7);        out_mac(w,P_MAC7, '7');        break;      case '8':        mgets(w, 5, 8, P_MAC8, 72, MAC_LEN);        strcpy(P_MACCHG,"CHANGED"); /* fmg - ... even use this... */        wlocate(w, 0, 8);        out_mac(w,P_MAC8, '8');        break;      case '9':        mgets(w, 5, 9, P_MAC9, 72, MAC_LEN);        strcpy(P_MACCHG,"CHANGED"); /* fmg - ... [sigh] */        wlocate(w, 0, 9);        out_mac(w,P_MAC9, '9');        break;      case 'A':        mgets(w, 5, 10, P_MAC10, 72, MAC_LEN);        strcpy(P_MACCHG,"CHANGED"); /* fmg - ... [sigh] */        wlocate(w, 0, 10);        out_mac(w,P_MAC10, 'A');        break;    }  }}/* is this *REALLY* a printable or non-printable character? * the isprint() function seems to consider all chars > 127d non-printable.. * jl 10.03.1998 */int prch(int c){  if (c < 32 || c == 127 || c == 155)    return (' ');  else    return (c);}/* Edit the character conversion tables. jl 04.09.97 */void doconv(void){  WIN *w;  int i, j, k, l, h,      offs = 32,      ymax = 22,      redraw = 1;  char buf[64];  char *prompt;  h = 16;  w = wopen (1, 1, 77, ymax, BDOUBLE, stdattr, mfcolor, mbcolor, 0, 0, 1);  wtitle(w, TMID, _("Character conversion"));  while (1) {    if (redraw) {      winclr(w);      wprintf(w,              _(" char    in out    char    in out    char    in out    char    in out\n"));      for (i = offs, j = i+h, k = j+h, l = k+h;           i < offs+h && i < 256;           i++, j++, k++, l++) {        wprintf(w, "%3d (%c) %3d %3d   ",                i, prch(i), (int) vt_inmap[i], (int) vt_outmap[i]);        if (j < 256)          wprintf(w, "%3d (%c) %3d %3d   ",                  j, prch(j), (int) vt_inmap[j], (int) vt_outmap[j]);        else          wprintf(w, "                  ");        if (k < 256)          wprintf(w, "%3d (%c) %3d %3d   ",                  k, prch(k), (int) vt_inmap[k], (int) vt_outmap[k]);        else          wprintf(w, "                  ");        if (l < 256)          wprintf(w, "%3d (%c) %3d %3d\n",                  l, prch(l), (int) vt_inmap[l], (int) vt_outmap[l]);        else          wprintf(w, "               \n");      }      wprintf(w, _("\n A - load table\tB - save table"));      if (P_CONVF[0])        wprintf(w, _("\tfile:%s"),P_CONVF);      wprintf(w, _("\n C - edit char\tD - next screen\tE - prev screen\n"));      wprintf(w, _(" F - convert capture: %s\n"), _(P_CONVCAP));      wredraw(w, 1);      redraw = 0;    }    wlocate(w, 1, ymax - 1);    wclreol(w);    wflush();    switch (toupper(rwxgetch())) {      case '\n':        wclose(w, 1); return;        break;      case 'A':        strcpy(buf,P_CONVF);        prompt=_("Load file: %s");        wprintf(w, prompt, buf);        pgets(w, mbslen(prompt) - 1, ymax - 1, P_CONVF, 64, 64);        if (loadconv(P_CONVF) == 0) {          if (strcmp(P_CONVF,buf))            markch(P_CONVF);          redraw = 1;        } else          strcpy(P_CONVF,buf);        break;      case 'B':        strcpy(buf,P_CONVF);        prompt=_("Save as file: %s");        wprintf(w, prompt, buf);        pgets(w, mbslen(prompt) - 1, ymax - 1, P_CONVF, 64, 64);        if (saveconv(P_CONVF) == 0) {          if (strcmp(P_CONVF,buf))            markch(P_CONVF);          redraw = 1;        } else          strcpy(P_CONVF,buf);        break;      case 'C':        prompt = _("Character to be edited: ");        wprintf(w, prompt);        buf[0] = 0;        i = -1;        wlocate(w, mbslen(prompt), ymax - 1);        wgets(w, buf, 4, 4);        sscanf(buf, "%d", &i);        if (i > 255 || i < 0) {          werror(_("Input character ascii value 0-255"));          break;        }        sprintf(buf, "%u",(unsigned int) vt_inmap[i]);        wlocate(w, 30, ymax - 1);        prompt=_("Change input to: %s");        wprintf(w, prompt,buf);        wlocate(w, mbslen(prompt) + 28, ymax - 1);        wgets(w, buf, 4, 4);        sscanf(buf, "%d", &j);        if (j > 255 || j < 0) {          werror(_("Input character ascii value 0-255"));          break;        }        else vt_inmap[i] = j;        sprintf(buf, "%u",(unsigned int) vt_outmap[i]);        wlocate(w, 54, ymax - 1);        prompt = _("Change output to: %s");        wprintf(w, prompt, buf);        wlocate(w, mbslen(prompt) + 52, ymax - 1);        wgets(w, buf, 4, 4);        sscanf(buf, "%d", &j);        if (j > 255 || j < 0) {          werror(_("Input character ascii value 0-255"));          break;        }        else vt_outmap[i] = j;        redraw = 1;        break;      case 'D':        offs += 4 * h;        if (offs > 255)          offs = 0;        redraw = 1;        break;      case 'E':        offs -= 4 * h;        if (offs < 0)          offs = 0;        redraw = 1;        break;      case 'F':        strcpy(P_CONVCAP, yesno(P_CONVCAP[0] == 'N'));        markch(P_CONVCAP);        redraw = 1;        break;    }  }}int loadconv(char *buf){  FILE *fp;  if ((fp = sfopen(pfix_home(buf), "rb")) == (FILE *)NULL) {    werror(_("Cannot open conversion table %s"), pfix_home(buf));    return 1;  }  fread(vt_inmap, sizeof(vt_inmap), (size_t)1, fp);  fread(vt_outmap, sizeof(vt_outmap), (size_t)1, fp);  fclose(fp);  return 0;}int saveconv(char *buf){  FILE *fp;  if ((fp = sfopen(pfix_home(buf), "wb")) == (FILE *)NULL) {    werror(_("Cannot write conversion table %s"), pfix_home(buf));    return 1;  }  fwrite(vt_inmap, sizeof(vt_inmap), (size_t)1, fp);  fwrite(vt_outmap, sizeof(vt_outmap), (size_t)1, fp);  fclose(fp);  return 0;}

⌨️ 快捷键说明

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