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

📄 phone.c

📁 功能丰富的串口通讯程序
💻 C
📖 第 1 页 / 共 5 页
字号:
}void EditEntry(tTermPhoneRec *Tmp){ tMenu *Edit; int Key, i, j; char Temp[256], *s;  nl(); wclear(PhoneScreen); textAttr(PhoneScreen, Integers[cMenu]); box(PhoneScreen, SVLINE, SHLINE); wmove(PhoneScreen, 1, 20); wvline(PhoneScreen, SVLINE, LINES-3); wmove(PhoneScreen, 0, 20); waddch(PhoneScreen, 194); wmove(PhoneScreen, LINES-2, 20); waddch(PhoneScreen, 193); Edit = new tMenu(PhoneScreen, Integers[cMenuText], Integers[cMenuHot], Integers[cMenuBar], Integers[cMenuText],             ALIGNLEFT); Edit->Add("~S~ystem name", 1, 20, 1); Edit->Add("~P~hone number", 1, 20, 2); Edit->Add("~D~evice", 1, 20, 3); Edit->Add("~U~ser profile", 1, 20, 4); Edit->Add("Pass~w~ord", 1, 20, 5); Edit->Add("~O~pening hours", 1, 20, 6); Edit->Add("~T~erminal", 1, 20, 7); Edit->Add("Dial prefi~x~", 1, 20, 8); Edit->Add("Dial su~f~fix", 1, 20, 9); Edit->Add("Comm. information", 1, 20, 10); Edit->Add("Comment ~1~", 1, 20, 11); Edit->Add("Comment ~2~", 1, 20, 12); Edit->Add("~C~apture file", 1, 20, 13); Edit->Add("~L~ocal Echo", 1, 20, 14); Edit->Add("Strip~H~igh", 1, 20, 15); Edit->Add("~B~ackspace erase", 1, 20, 16); Edit->Add("Colo~r~", 1, 20, 17); Edit->Show(); wmove(PhoneScreen, 1, 22); textAttr(PhoneScreen, Integers[cMenuOptions]); PasToChar(Tmp->Name, Temp); waddstr(PhoneScreen, Temp); wmove(PhoneScreen, 2, 22); PasToChar(Tmp->Number, Temp); waddstr(PhoneScreen, Temp); wmove(PhoneScreen, 4, 22); waddstr(PhoneScreen, Strings[User1+Tmp->User-1]); wmove(PhoneScreen, 5, 22); PasToChar(Tmp->Password, Temp); if (Integers[HidePwds]) Dots(Temp); waddstr(PhoneScreen, Temp); wmove(PhoneScreen, 6, 22); sprintf(Temp, "%02d:%02d-%02d:%02d", Tmp->Open / 60, Tmp->Open % 60, Tmp->Closed / 60, Tmp->Closed % 60); waddstr(PhoneScreen, Temp); wmove(PhoneScreen, 10, 22); sprintf(Temp, "%lu ", Tmp->Baud); waddstr(PhoneScreen, Temp); waddch(PhoneScreen, 48+Tmp->Databits); waddch(PhoneScreen, '-'); waddch(PhoneScreen, Tmp->Parity); waddch(PhoneScreen, '-'); waddch(PhoneScreen, 48+Tmp->Stopbits); wmove(PhoneScreen, 11, 22); PasToChar(Tmp->Comment1, Temp); waddstr(PhoneScreen, Temp); wmove(PhoneScreen, 12, 22); PasToChar(Tmp->Comment2, Temp); waddstr(PhoneScreen, Temp); wmove(PhoneScreen, 13, 22); PasToChar(Tmp->Capture, Temp); waddstr(PhoneScreen, Temp); wmove(PhoneScreen, 14, 22); if (Tmp->LocalEcho) waddstr(PhoneScreen, "Yes"); else waddstr(PhoneScreen, "No"); wmove(PhoneScreen, 15, 22); if (Tmp->StripHigh) waddstr(PhoneScreen, "Yes"); else waddstr(PhoneScreen, "No"); wmove(PhoneScreen, 16, 22); if (Tmp->RcvdBSdest) waddstr(PhoneScreen, "Yes"); else waddstr(PhoneScreen, "No"); wmove(PhoneScreen, 17, 22); textAttr(PhoneScreen, Tmp->Color); waddch(PhoneScreen, 254); wrefresh(PhoneScreen); while (Key != '\e'){  Key = getEscChar();  if (Key == '\n'){  textAttr(PhoneScreen, Integers[cMenuOptions]);  switch(Edit->Focus){  case 0:    PasToChar(Tmp->Name, Temp);    if (getstring(PhoneScreen, 1,22,Temp,ValidEdit,"\n\e",30,-1,Temp) == '\n'){      CharToPas(Tmp->Name, Temp);    }    break;  case 1:    PasToChar(Tmp->Number, Temp);    if (getstring(PhoneScreen, 2,22,Temp,NumberEdit,"\n\e",24,-1,Temp) == '\n'){      CharToPas(Tmp->Number, Temp);    }    break;  case 2:    Tmp->Device = ChooseDevice(PhoneScreen, Tmp->Device, 0);    i = Tmp->Device;    if (i == 0) i = Integers[DefaultDevice];    i--;    Tmp->Parity = Integers[Parities1+i];    Tmp->Stopbits = Integers[Stopbits1+i]+1;    Tmp->Databits = Integers[Databits1+i];    textAttr(PhoneScreen, Integers[cMenuOptions]);    wmove(PhoneScreen, 10, 22);    sprintf(Temp, "%lu ", Tmp->Baud);    waddstr(PhoneScreen, Temp);    waddch(PhoneScreen, 48+Tmp->Databits);    waddch(PhoneScreen, '-');    waddch(PhoneScreen, Tmp->Parity);    waddch(PhoneScreen, '-');    waddch(PhoneScreen, 48+Tmp->Stopbits);    break;  case 3:    i = Tmp->User-1;    Tmp->User = ChooseUser(PhoneScreen);    memset(Temp, ' ', strlen(Strings[User1+i]));    Temp[strlen(Strings[User1+i])] = 0;    textAttr(PhoneScreen, Integers[cMenuOptions]);    wmove(PhoneScreen, 4, 22);    waddstr(PhoneScreen, Temp);    wmove(PhoneScreen, 4, 22);    waddstr(PhoneScreen, Strings[User1+Tmp->User-1]);    break;  case 4:    PasToChar(Tmp->Password, Temp);    if (getstring(PhoneScreen, 5,22,Temp,ValidEdit,"\n\e",24,-1,Temp) == '\n'){      CharToPas(Tmp->Password, Temp);    }    PasToChar(Tmp->Password, Temp);    if (Integers[HidePwds]) Dots(Temp);    wmove(PhoneScreen, 5, 22);    waddstr(PhoneScreen, Temp);    break;  case 5:    sprintf(Temp,"%02d:%02d",Tmp->Open /60, Tmp->Open % 60);    if (getstring(PhoneScreen, 6,22,Temp,NumberEdit,"\n\e",5,-1,Temp) == '\n'){     s = index(Temp, ':');     if (s != NULL){      *s=0;      i = atoi(Temp)*60+atoi(s+1);      if (i < 24*60) Tmp->Open = i;     }    }    sprintf(Temp,"%02d:%02d",Tmp->Closed /60, Tmp->Closed % 60);    if (getstring(PhoneScreen, 6,28,Temp,NumberEdit,"\n\e",5,-1,Temp) == '\n'){     s = index(Temp, ':');     if (s != NULL){      *s=0;      i = atoi(Temp)*60+atoi(s+1);      if (i < 24*60) Tmp->Closed = i;     }    }    textAttr(PhoneScreen, Integers[cMenuOptions]);    wmove(PhoneScreen, 6, 22);    sprintf(Temp, "%02d:%02d-%02d:%02d", Tmp->Open / 60, Tmp->Open % 60, Tmp->Closed / 60, Tmp->Closed % 60);    waddstr(PhoneScreen, Temp);    break;  case 6:    switch(WhichBook){    case 0:      i = ChooseTerminal(PhoneScreen, TranslateToTerminate[Tmp->Terminal]);      for (j = 0; j < 17 && i != 255; j++)       if (TranslateToTerminate[j] == i) i = 255;      Tmp->Terminal = j-1;      break;    case 1:      i = ChooseTerminal(PhoneScreen, TranslateToTelix[Tmp->Terminal]);      for (j = 0; j < 6 && i != 255; j++)       if (TranslateToTelix[j] == i) i = 255;      Tmp->Terminal = j-1;      break;    default:break;    }    break;  case 7:    Tmp->DialPrefix = ChoosePrefix(PhoneScreen, Tmp->DialPrefix);    break;  case 8:    Tmp->DialSuffix = ChooseSuffix(PhoneScreen, Tmp->DialSuffix);    break;  case 9:    Tmp->Baud = ChooseBaud(PhoneScreen, Tmp->Baud);    textAttr(PhoneScreen, Integers[cMenuOptions]);    wmove(PhoneScreen, 10, 22);    sprintf(Temp, "%lu ", Tmp->Baud);    waddstr(PhoneScreen, Temp);    break;  case 10:    PasToChar(Tmp->Comment1, Temp);    if (getstring(PhoneScreen, 11,22,Temp,ValidEdit,"\n\e",40,-1,Temp) == '\n'){      CharToPas(Tmp->Comment1, Temp);    }    break;  case 11:    PasToChar(Tmp->Comment2, Temp);    if (getstring(PhoneScreen, 12,22,Temp,ValidEdit,"\n\e",40,-1,Temp) == '\n'){      CharToPas(Tmp->Comment2, Temp);    }    break;  case 12:    PasToChar(Tmp->Capture, Temp);    if (getstring(PhoneScreen, 13,22,Temp,ValidEdit,"\n\e",8,-1,Temp) == '\n'){      CharToPas(Tmp->Capture, Temp);    }    break;  case 13:    if (!Tmp->LocalEcho){     Tmp->LocalEcho = 1;     mvwaddstr(PhoneScreen, 14, 22, "Yes");    }    else{     Tmp->LocalEcho = 0;     mvwaddstr(PhoneScreen, 14, 22, "No ");    }    break;  case 14:    if (!Tmp->StripHigh){     Tmp->StripHigh = 1;     mvwaddstr(PhoneScreen, 15, 22, "Yes");    }    else{     Tmp->StripHigh = 0;     mvwaddstr(PhoneScreen, 15, 22, "No ");    }    break;  case 15:    if (!Tmp->RcvdBSdest){     Tmp->RcvdBSdest = 1;     mvwaddstr(PhoneScreen, 16, 22, "Yes");    }    else{     Tmp->RcvdBSdest = 0;     mvwaddstr(PhoneScreen, 16, 22, "No ");    }    break;  case 16:    Tmp->Color = ColorChoose(PhoneScreen, Tmp->Color);    textAttr(PhoneScreen, Tmp->Color);    mvwaddch(PhoneScreen, 17, 22, 254);    break;  default:break;  }  wrefresh(PhoneScreen);  }  Edit->GetInput(Key);  textAttr(PhoneScreen, Integers[cMenuOptions]); } delete Edit; nonl();}void SystemNotOpen(){ tWindow *Win; int Center, Y, X, Attr;  Attr = PhoneScreen->_attrs; getyx(PhoneScreen, Y, X);  Center = findCenter(0, COLS, 42); Win = new tWindow(PhoneScreen, Center-3, LINES/2-2, Center+42, LINES/2+2, Integers[cInfo] >> 4,            Integers[cInfo] % 16); Win->Frame(2, Integers[cInfo]); textAttr(PhoneScreen, Integers[cInfoBold]); mvwaddstr(PhoneScreen, LINES/2, Center, "System is not currently open, skipping..."); wrefresh(PhoneScreen); sleep(1); delete Win; wmove(PhoneScreen, Y, X); PhoneScreen->_attrs = Attr;}int DialEntry(tTermPhoneRec *Entry){ time_t start, current, t; int Key, dialTime, BufCount, Closed, CurrentTime; char Temp[256], c, Buffer[100]; WINDOW *DialWin; tm *Time;  DialWin = newwin(LINES-18, COLS-2, 16, 1); scrollok(DialWin, TRUE); werase(DialWin); dialTime = Integers[DialTime]; time(&start); current = start; textAttr(PhoneScreen, Integers[cMenu]); wclear(PhoneScreen); box(PhoneScreen, SVLINE, SHLINE); wmove(PhoneScreen, 3, 1); whline(PhoneScreen, SHLINE, COLS-2); wmove(PhoneScreen, 4, 12); wvline(PhoneScreen, SVLINE, 9); wmove(PhoneScreen, 13, 1); whline(PhoneScreen, SHLINE, COLS-2); wmove(PhoneScreen, 15, 1); whline(PhoneScreen, SHLINE, COLS-2); textAttr(PhoneScreen, Integers[cMenuText]); mvwaddstr(PhoneScreen, 1, 1, "Start "); mvwaddstr(PhoneScreen, 2, 1, "Now "); strcpy(Temp, ctime(&start)); Temp[strlen(Temp)-1]=0; mvwaddstr(PhoneScreen, 1, 8, Temp); mvwaddstr(PhoneScreen, 4, 1, "System"); mvwaddstr(PhoneScreen, 5, 1, "Username"); mvwaddstr(PhoneScreen, 6, 1, "Phone"); mvwaddstr(PhoneScreen, 7, 1, "Password"); mvwaddstr(PhoneScreen, 8, 1, "Comm. info"); mvwaddstr(PhoneScreen, 9, 1, "Comment1"); mvwaddstr(PhoneScreen, 10, 1, "Comment2"); mvwaddstr(PhoneScreen, 11, 1, "Download"); mvwaddstr(PhoneScreen, 12, 1, "Upload"); mvwaddstr(PhoneScreen, 14, 1, " Add 15 secs  Untag  enter = abort  esc = abort+hangup  space = next"); textAttr(PhoneScreen, Integers[cMenuOptions]); PasToChar(Entry->Name, Temp); mvwaddstr(PhoneScreen, 4, 14, Temp); mvwaddstr(PhoneScreen, 5, 14, Strings[User1+Entry->User-1]); PasToChar(Entry->Number, Temp); mvwaddstr(PhoneScreen, 6, 14, Temp); PasToChar(Entry->Password, Temp); if (Integers[HidePwds]) Dots(Temp); mvwaddstr(PhoneScreen, 7, 14, Temp); sprintf(Temp, "%lu %u%c%u",Entry->Baud,Entry->Databits,Entry->Parity,Entry->Stopbits); mvwaddstr(PhoneScreen, 8, 14, Temp); PasToChar(Entry->Comment1, Temp); mvwaddstr(PhoneScreen, 9, 14, Temp); PasToChar(Entry->Comment2, Temp); mvwaddstr(PhoneScreen, 10, 14, Temp); sprintf(Temp, "%lu", Entry->DownloadKb); mvwaddstr(PhoneScreen, 11, 14, Temp); sprintf(Temp, "%lu", Entry->UploadKb); mvwaddstr(PhoneScreen, 12, 14, Temp); Key = 0; linestatus(); while (charwaiting() == TRUE){  c = mgetchar();  if (c != 13){    waddch(DialWin, c);   wrefresh(DialWin);  }  linestatus(); } time(&t); Time = localtime(&t); Closed = Entry->Closed; if (Entry->Closed <= Entry->Open) Closed += 24*60; CurrentTime = Time->tm_hour * 60 + Time->tm_min; if (CurrentTime < Entry->Open || CurrentTime > Closed){   SystemNotOpen();  if (chwait() == TRUE) Key = getEscChar(); } else{  strcpy(Temp, Strings[Prefix1+Entry->DialPrefix-1]);  ReplaceM(Temp);  mwriteblock(Temp, strlen(Temp));  PasToChar(Entry->Number, Temp);  mwriteblock(Temp, strlen(Temp));  strcpy(Temp, Strings[Suffix1+Entry->DialSuffix-1]);  ReplaceM(Temp);  mwriteblock(Temp, strlen(Temp));  BufCount = 0;  Buffer[0]=0;  ConnectMatch = 0;  while (current-start<= dialTime && Key != '\e' && Key != ' ' && Key != '\n' && !CAR && !ConnectMatch){   time(&current);   textAttr(PhoneScreen, Integers[cMenuText]);   strcpy(Temp, ctime(&current));   Temp[strlen(Temp)-1]=0;   mvwaddstr(PhoneScreen, 2, 8, Temp);   mvwaddstr(PhoneScreen, 2, 35, "Retries: ");   sprintf(Temp, "%d", DialRetries);   textAttr(PhoneScreen, Integers[cMenuTextBold]);   mvwaddstr(PhoneScreen, 2, 45, Temp);   textAttr(PhoneScreen, Integers[cMenuText]);   mvwaddstr(PhoneScreen, 2, 50, "Countdown");   textAttr(PhoneScreen, Integers[cMenuTextBold]);   sprintf(Temp, "%03lu", dialTime - (current-start));   Temp[4] = 0;   mvwaddstr(PhoneScreen, 2, 60, Temp);   if (charwaiting() == TRUE){    c = mgetchar();    if (c != 13) waddch(DialWin, c);     Buffer[BufCount++]=c;     Buffer[BufCount]=0;    if (c == '\r' || c == '\n')     BufCount=0;    linestatus();   }   wrefresh(PhoneScreen);   redrawwin(DialWin);   wrefresh(DialWin);   if (chwait() == TRUE){     Key = getEscChar();    switch(Key){    case 'a':    case 'A':      dialTime += 15;      break;    case 'u':    case 'U':      Entry->Tag = 0;      break;    default:break;    }   }   if (Key == ' ' || Key == '\e' || Key == '\n'){    strcpy(Temp, Strings[DialCancel]);    ReplaceM(Temp);    mwriteblock(Temp, strlen(Temp));   }   for (c = NoConnect1; c <= NoConnect5; c++)    if (strcasecmp(Buffer, Strings[c]) == 0 && Buffer[0] != 0)     dialTime = 0;  } } if (strcasecmp(Buffer, Strings[ConnectStr]) == 0 && Buffer[0] != 0)  ConnectMatch = 1; delwin(DialWin); return Key;}void Dialer(int TopOfList){ tTermPhoneRec *Tmp; int i,j, Tags; char Temp[50], TempStr[100]; time_t t; tm *Time;  nl(); DialRetries = 0; Tags = 1; Tmp = &CurrentTerm; while (Tags && !CAR && !ConnectMatch){  Tags = 0;  if (!CAR && !ConnectMatch && Integers[LoopDelay] > 0){   j = Integers[LoopDelay];   textAttr(PhoneScreen, Integers[cMenuText]);   mvwaddstr(PhoneScreen, 2, 50, "Loop delay ");   while (j-->0){   sprintf(Temp, "%d  ", j);   textAttr(PhoneScreen, Integers[cMenuTextBold]);   mvwaddstr(PhoneScreen, 2, 61, Temp);   wrefresh(PhoneScreen);   if (chwait() == TRUE) j=0;   sleep(1);   }  }  Tmp = (tTermPhoneRec *)PhoneBook->Base;  for (i=0;i<=TermHeader.Num && !CAR && !ConnectMatch && i <= TopOfList;i++){   if (Tmp->Tag){    Tags = 1;    DialRetries++;

⌨️ 快捷键说明

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