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

📄 setup.c

📁 功能丰富的串口通讯程序
💻 C
📖 第 1 页 / 共 2 页
字号:
 Menu->Add("Dial time", 21, 38, 17); Menu->Add("Dial delay", 21, 38, 18); Menu->Add("Loop delay", 21, 38, 19); Menu->Show(); ShowModem(); wrefresh(Screen);  Key = 0; while (Key != '\e'){   Key = getEscChar();   Menu->GetInput(Key);   if (Key == '\n'){   textAttr(Screen, Integers[cEdit]);   clearok(Screen, TRUE);   switch(Menu->Focus){   case 0:     i = ChooseDevice(Screen, Integers[DefaultDevice], 1);     if (i > 0) Integers[DefaultDevice] = i;     break;   case 1:ChooseInit(Screen, 0); break;   case 2:ChoosePrefix(Screen, 0); break;   case 3:ChooseSuffix(Screen, 0); break;   case 4:     if (getstring(Screen, 10, 40, Strings[ExitStr], ValidEdit, "\e\n", 20, -1, Temp) == '\n')      Strings[ExitStr] = (char *)realloc(Strings[ExitStr], strlen(Temp)+1);      strcpy(Strings[ExitStr], Temp);     break;   case 5:     if (getstring(Screen, 11, 40, Strings[ConnectStr], ValidEdit, "\e\n", 20, -1, Temp) == '\n')      Strings[ConnectStr] = (char *)realloc(Strings[ConnectStr], strlen(Temp)+1);      strcpy(Strings[ConnectStr], Temp);     break;   case 6:ChooseNoConnect(Screen, 0); break;   case 7:     if (getstring(Screen, 13, 40, Strings[Ring], ValidEdit, "\e\n", 20, -1, Temp) == '\n')      Strings[Ring] = (char *)realloc(Strings[Ring], strlen(Temp)+1);      strcpy(Strings[Ring], Temp);     break;   case 8:     if (getstring(Screen, 14, 40, Strings[DialCancel], ValidEdit, "\e\n", 20, -1, Temp) == '\n')      Strings[DialCancel] = (char *)realloc(Strings[DialCancel], strlen(Temp)+1);      strcpy(Strings[DialCancel], Temp);     break;   case 9:     if (getstring(Screen, 15, 40, Strings[AutoAnswerStr], ValidEdit, "\e\n", 20, -1, Temp) == '\n')      Strings[AutoAnswerStr] = (char *)realloc(Strings[AutoAnswerStr], strlen(Temp)+1);      strcpy(Strings[AutoAnswerStr], Temp);     break;   case 10:ChooseDeviceInit(Screen, 0); break;   case 11:     sprintf(Temp, "%d", Integers[DialTime]);     if (getstring(Screen, 17, 40, Temp, ValidEdit, "\e\n", 20, -1, Temp) == '\n')       Integers[DialTime] = atoi(Temp);     break;   case 12:     sprintf(Temp, "%d", Integers[DialDelay]);     if (getstring(Screen, 18, 40, Temp, ValidEdit, "\e\n", 20, -1, Temp) == '\n')       Integers[DialDelay] = atoi(Temp);     break;   case 13:     sprintf(Temp, "%d", Integers[LoopDelay]);     if (getstring(Screen, 19, 40, Temp, ValidEdit, "\e\n", 20, -1, Temp) == '\n')       Integers[LoopDelay] = atoi(Temp);     break;   default:break;   }   ShowModem();   wrefresh(Screen);   } }  delete Menu; delete Win; wmove(Screen, y, x); Screen->_attrs = Attr; clearok(Screen, TRUE); wrefresh(Screen);}void ShowPath(){ int i; char Temp[33], TempString[250];  for (i=0;i<32;i++)  Temp[i] = ' '; Temp[32] = 0; textAttr(Screen, Integers[cMenuOptions]); mvwaddstr(Screen, 6, 38, Temp); strcpy(TempString, Strings[LogName]); TempString[32] = 0;  mvwaddstr(Screen, 6, 38, TempString); mvwaddstr(Screen, 7, 38, Temp); strcpy(TempString, Strings[DownloadPath]); TempString[32] = 0;  mvwaddstr(Screen, 7, 38, TempString); mvwaddstr(Screen, 8, 38, Temp); strcpy(TempString, Strings[UploadPath]); TempString[32] = 0;  mvwaddstr(Screen, 8, 38, TempString); mvwaddstr(Screen, 9, 38, Temp); strcpy(TempString, Strings[CapturePath]); TempString[32] = 0;  mvwaddstr(Screen, 9, 38, TempString); mvwaddstr(Screen, 10, 38, Temp); strcpy(TempString, Strings[PhonePath]); TempString[32] = 0;  mvwaddstr(Screen, 10, 38, TempString); mvwaddstr(Screen, 11, 38, Temp); strcpy(TempString, Strings[LockPath]); TempString[32] = 0;  mvwaddstr(Screen, 11, 38, TempString);}void SetupFile(){ tWindow *Win; tMenu *Menu; int Key, y, x, Attr; char Temp[21];  getyx(Screen, y, x); Attr = Screen->_attrs;  Win = new tWindow(Screen, 20, 5, 70, 12, Integers[cMenu] >> 4, Integers[cMenu] % 16); Win->Frame(2, Integers[cMenu]); Win->Headline(" Files and Paths ", Integers[cMenuTitle]); Menu = new tMenu(Screen, Integers[cMenu], Integers[cMenuHot], Integers[cMenuBar], Integers[cMenuText], ALIGNLEFT); Menu->Add("Log file name", 21, 36, 6); Menu->Add("Download path", 21, 36, 7); Menu->Add("Upload path", 21, 36, 8); Menu->Add("Capture path", 21, 36, 9); Menu->Add("Phone path", 21, 36, 10); Menu->Add("Lock path", 21, 36, 11); Menu->Show(); ShowPath(); wrefresh(Screen);  Key = 0; while (Key != '\e'){   Key = getEscChar();   Menu->GetInput(Key);   if (Key == '\n'){   textAttr(Screen, Integers[cEdit]);   clearok(Screen, TRUE);   switch(Menu->Focus){   case 0:     if (getstring(Screen, 6, 38, Strings[LogName], FileEdit, "\e\n", 32, -1, Temp) == '\n')      Strings[LogName] = (char *)realloc(Strings[LogName], strlen(Temp)+1);      strcpy(Strings[LogName], Temp);     break;   case 1:     if (getstring(Screen, 7, 38, Strings[DownloadPath], FileEdit, "\e\n", 32, -1, Temp) == '\n')      Strings[DownloadPath] = (char *)realloc(Strings[DownloadPath], strlen(Temp)+1);      strcpy(Strings[DownloadPath], Temp);     break;   case 2:     if (getstring(Screen, 8, 38, Strings[UploadPath], FileEdit, "\e\n", 32, -1, Temp) == '\n')      Strings[UploadPath] = (char *)realloc(Strings[UploadPath], strlen(Temp)+1);      strcpy(Strings[UploadPath], Temp);     break;   case 3:     if (getstring(Screen, 9, 38, Strings[CapturePath], FileEdit, "\e\n", 32, -1, Temp) == '\n')      Strings[CapturePath] = (char *)realloc(Strings[CapturePath], strlen(Temp)+1);      strcpy(Strings[CapturePath], Temp);     break;   case 4:     if (getstring(Screen, 10, 38, Strings[PhonePath], FileEdit, "\e\n", 32, -1, Temp) == '\n')      Strings[PhonePath] = (char *)realloc(Strings[PhonePath], strlen(Temp)+1);      strcpy(Strings[PhonePath], Temp);     break;   case 5:     if (getstring(Screen, 11, 38, Strings[LockPath], FileEdit, "\e\n", 32, -1, Temp) == '\n')      Strings[LockPath] = (char *)realloc(Strings[LockPath], strlen(Temp)+1);      strcpy(Strings[LockPath], Temp);     break;   default:break;   }   ShowPath();   wrefresh(Screen);   } }  delete Menu; delete Win; wmove(Screen, y, x); Screen->_attrs = Attr; clearok(Screen, TRUE); wrefresh(Screen);}void ShowProtocol(int Which){ int i; char Temp[33], Yes[4], TempString[250];  strcpy(Yes, "Yes"); for (i=0;i<32;i++)  Temp[i] = ' '; Temp[32] = 0;  textAttr(Screen, Integers[cMenuOptions]); mvwaddstr(Screen, 6, 38, Temp); strcpy(TempString, Strings[ProtocolName1+Which]); TempString[32] = 0; mvwaddstr(Screen, 6, 38, TempString); mvwaddstr(Screen, 7, 38, Temp); strcpy(TempString, Strings[ProtocolInfo1+Which]); TempString[32] = 0; mvwaddstr(Screen, 7, 38, TempString); mvwaddstr(Screen, 8, 38, Temp); strcpy(TempString, Strings[ProtocolDlExec1+Which]); TempString[32] = 0; mvwaddstr(Screen, 8, 38, TempString); mvwaddstr(Screen, 9, 38, Temp); strcpy(TempString, Strings[ProtocolUlExec1+Which]); TempString[32] = 0; mvwaddstr(Screen, 9, 38, TempString); for (i=10;i<13;i++)  mvwaddstr(Screen, i, 38, "No "); if (Integers[ProtocolAsk1+Which]) mvwaddstr(Screen, 10, 38, Yes); if (Integers[ChangeDl1+Which]) mvwaddstr(Screen, 11, 38, Yes); if (Integers[ChangeUl1+Which]) mvwaddstr(Screen, 12, 38, Yes); for (i=0;i<10;i++){  sprintf(Temp, "%02X", Signature[Which][i+2]);  mvwaddstr(Screen, 13, i*2+38, Temp); }}void SetupProtocol(){ tWindow *Win; tMenu *Menu; int Key, y, x, i, Attr, WhichProtocol; char Temp[50], TempStr[50];  getyx(Screen, y, x); Attr = Screen->_attrs;  Win = new tWindow(Screen, 20, 5, 70, 14, Integers[cMenu] >> 4, Integers[cMenu] % 16); Win->Frame(2, Integers[cMenu]); Win->Headline(" Protocols ", Integers[cMenuTitle]); Menu = new tMenu(Screen, Integers[cMenu], Integers[cMenuHot], Integers[cMenuBar], Integers[cMenuText], ALIGNLEFT); Menu->Add("Protocol name", 21, 37, 6); Menu->Add("Protocol info", 21, 37, 7); Menu->Add("Donwload exec", 21, 37, 8); Menu->Add("Upload exec", 21, 37, 9); Menu->Add("Ask for name", 21, 37, 10); Menu->Add("Change to ul dir", 21, 37, 11); Menu->Add("Change to dl dir", 21, 37, 12); Menu->Add("Signature", 21, 37, 13); Menu->Show(); ShowProtocol(0); WhichProtocol = 0; wrefresh(Screen);  Key = 0; while (Key != '\e'){   Key = getEscChar();   Menu->GetInput(Key);   if (Key > 48 && Key < 54){      WhichProtocol = Key - 49;     ShowProtocol(WhichProtocol);     clearok(Screen, TRUE);     wrefresh(Screen);   }   if (Key == '\n'){   textAttr(Screen, Integers[cEdit]);   clearok(Screen, TRUE);   switch(Menu->Focus){   case 0:     if (getstring(Screen, 6, 38, Strings[ProtocolName1+WhichProtocol], ValidEdit, "\e\n", 32, -1, Temp) == '\n')      Strings[ProtocolName1+WhichProtocol] = (char *)realloc(Strings[ProtocolName1+WhichProtocol], strlen(Temp)+1);      strcpy(Strings[ProtocolName1+WhichProtocol], Temp);     break;   case 1:     if (getstring(Screen, 7, 38, Strings[ProtocolInfo1+WhichProtocol], ValidEdit, "\e\n", 32, -1, Temp) == '\n')      Strings[ProtocolInfo1+WhichProtocol] = (char *)realloc(Strings[ProtocolInfo1+WhichProtocol], strlen(Temp)+1);      strcpy(Strings[ProtocolInfo1+WhichProtocol], Temp);     break;   case 2:     if (getstring(Screen, 8, 38, Strings[ProtocolDlExec1+WhichProtocol], ValidEdit, "\e\n", 32, -1, Temp) == '\n')      Strings[ProtocolDlExec1+WhichProtocol] = (char *)realloc(Strings[ProtocolDlExec1+WhichProtocol], strlen(Temp)+1);      strcpy(Strings[ProtocolDlExec1+WhichProtocol], Temp);     break;   case 3:     if (getstring(Screen, 9, 38, Strings[ProtocolUlExec1+WhichProtocol], ValidEdit, "\e\n", 32, -1, Temp) == '\n')      Strings[ProtocolUlExec1+WhichProtocol] = (char *)realloc(Strings[ProtocolUlExec1+WhichProtocol],strlen(Temp)+1);      strcpy(Strings[ProtocolUlExec1+WhichProtocol], Temp);     break;   case 4: Integers[ProtocolAsk1+WhichProtocol] ^= 1; break;   case 5: Integers[ChangeDl1+WhichProtocol] ^= 1; break;   case 6: Integers[ChangeUl1+WhichProtocol] ^= 1; break;   case 7:     TempStr[0] = 0;     for (i=0;i<10;i++){      sprintf(Temp, "%02X", Signature[WhichProtocol][i+2]);      strcat(TempStr, Temp);     }     if (getstring(Screen, 13, 38, TempStr, HexEdit, "\e\n", 20, -1, Temp) == '\n'){      for (i=0;i<(int)strlen(Temp)/2;i++){       strncpy(TempStr, Temp+i*2, 2);       TempStr[2]=0;       Signature[WhichProtocol][i+2] = strtol(TempStr, NULL, 16);      }     }     break;   default:break;   }   ShowProtocol(WhichProtocol);   wrefresh(Screen);   } }  delete Menu; delete Win; wmove(Screen, y, x); Screen->_attrs = Attr; clearok(Screen, TRUE); wrefresh(Screen);}void Setup(){ tWindow *Win; tMenu *Menu; int Key, y, x, Attr, Quit;  getyx(Screen, y, x); Attr = Screen->_attrs; nl();  Win = new tWindow(Screen, 30, 5, 50, 15, Integers[cMenu] >> 4, Integers[cMenu] % 16); Win->Frame(2, Integers[cMenu]); Win->Headline(" Configuration ", Integers[cMenuTitle]); Menu = new tMenu(Screen, Integers[cMenu], Integers[cMenuHot], Integers[cMenuBar], Integers[cMenuText], ALIGNLEFT); Menu->Add("~C~olors", 31, 50, 6); Menu->Add("Stat~u~s", 31, 50, 7); Menu->Add("~T~oggles", 31, 50, 8); Menu->Add("~M~odem", 31, 50, 9); Menu->Add("~F~iles & Paths", 31, 50, 10); Menu->Add("~P~rotocols", 31, 50, 11); Menu->Add("M~a~cros", 31, 50, 12); Menu->Add("~S~ave & exit", 31, 50, 13); Menu->Add("~E~xit", 31, 50, 14); Menu->Show(); wrefresh(Screen);  Key = 0; Quit = 0; while (Key != '\e' && !Quit){   Key = getEscChar();   Menu->GetInput(Key);   if (Key == '\n'){    switch(Menu->Focus){    case 0:      SetupColors();      break;    case 1:      SetupStatus();      break;    case 2:      SetupToggles();      break;    case 3:      SetupModem();      break;    case 4:      SetupFile();      break;    case 5:      SetupProtocol();      break;    case 6:      ChooseMacro(Screen, 0);      break;    case 7:      if (ChooseYesno(Screen, " Write configuration to disk? "))        if (Integers[DumpVar]) DumpConfig();         else WriteConfig();      Quit = 1;      break;    case 8:      Quit = 1;      break;    default:break;    }    wrefresh(Screen);   } }  delete Menu; delete Win;  wmove(Screen, y, x); Screen->_attrs = Attr; nonl();}

⌨️ 快捷键说明

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