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

📄 phone.c

📁 功能丰富的串口通讯程序
💻 C
📖 第 1 页 / 共 5 页
字号:
 }  else{  Prev = (tTermPhoneRec *)First->Prev;  Next = (tTermPhoneRec *)First->Next;   First->Next = Second->Next;  First->Prev = Second->Prev;   Second->Next = Next;  Second->Prev = Prev; } if (First->Prev != NULL) First->Prev->Next = First; if (First->Next != NULL) First->Next->Prev = First;  if (Second->Prev != NULL) Second->Prev->Next = Second; if (Second->Next != NULL) Second->Next->Prev = Second;  if (PhoneBook->Base == First)  PhoneBook->Base = Second; else  if (PhoneBook->Base == Second)   PhoneBook->Base = First;    if (PhoneBook->Last == First)  PhoneBook->Last = Second; else  if (PhoneBook->Last == Second)   PhoneBook->Last = First;} int NameCompare(tTermPhoneRec *I, tTermPhoneRec *J){ char Temp[256], Tmp[256]; PasToChar(I->Name, Temp); PasToChar(J->Name, Tmp); return (strcasecmp(Temp, Tmp));}int NumberCompare(tTermPhoneRec *I, tTermPhoneRec *J){ char Temp[256], Tmp[256]; PasToChar(I->Number, Temp); PasToChar(J->Number, Tmp); return (strcasecmp(Temp, Tmp));}int ConnectsCompare(tTermPhoneRec *I, tTermPhoneRec *J){ int ReturnValue = 0;  if (I->Connects < J->Connects) ReturnValue = -1; if (I->Connects == J->Connects) ReturnValue = 0; if (I->Connects > J->Connects) ReturnValue = 1;  return ReturnValue;}int Comment1Compare(tTermPhoneRec *I, tTermPhoneRec *J){ char Temp[256], Tmp[256]; PasToChar(I->Comment1, Temp); PasToChar(J->Comment1, Tmp); return (strcasecmp(Temp, Tmp));}int Comment2Compare(tTermPhoneRec *I, tTermPhoneRec *J){ char Temp[256], Tmp[256]; PasToChar(I->Comment2, Temp); PasToChar(J->Comment2, Tmp); return (strcasecmp(Temp, Tmp));}void SortAscending(int Low, int High, int cmp(tTermPhoneRec *I, tTermPhoneRec *J)){ tTermPhoneRec *CurrentI, *CurrentJ, *Middle; tListObj *SaveI, *SaveJ; int i,j;  CurrentI = (tTermPhoneRec *)PhoneBook->Base->Next;  for (i=1;i<Low;i++)  CurrentI = (tTermPhoneRec *)CurrentI->Next; Middle = (tTermPhoneRec *)PhoneBook->Base->Next; for (i=1;i<(High+Low)/2;i++)  Middle = (tTermPhoneRec *)Middle->Next; CurrentJ = (tTermPhoneRec *)PhoneBook->Base->Next; for (i=1;i<High;i++)  CurrentJ = (tTermPhoneRec *)CurrentJ->Next;   i = Low; j = High; do {  while (cmp(CurrentI, Middle)<0) {   i++;   CurrentI = (tTermPhoneRec *)CurrentI->Next;  }  while (cmp(CurrentJ, Middle)>0) {   j--;   CurrentJ = (tTermPhoneRec *)CurrentJ->Prev;  }  if (i<=j)  {   SaveI = CurrentI->Next;   SaveJ = CurrentJ->Prev;   Swap(CurrentI, CurrentJ);   i++; j--;   CurrentI = (tTermPhoneRec *)SaveI;   CurrentJ = (tTermPhoneRec *)SaveJ;  } }while(i<=j); if (Low<j) SortAscending(Low, j, cmp); if (i<High) SortAscending(i, High, cmp);}void SortDescending(int Low, int High, int cmp(tTermPhoneRec *I, tTermPhoneRec *J)){ tTermPhoneRec *CurrentI, *CurrentJ, *Middle; tListObj *SaveI, *SaveJ; int i,j;  CurrentI = (tTermPhoneRec *)PhoneBook->Base->Next;  for (i=1;i<Low;i++)  CurrentI = (tTermPhoneRec *)CurrentI->Next; Middle = (tTermPhoneRec *)PhoneBook->Base->Next; for (i=1;i<(High+Low)/2;i++)  Middle = (tTermPhoneRec *)Middle->Next; CurrentJ = (tTermPhoneRec *)PhoneBook->Base->Next; for (i=1;i<High;i++)  CurrentJ = (tTermPhoneRec *)CurrentJ->Next;   i = Low; j = High; do {  while (cmp(CurrentI, Middle)>0) {   i++;   CurrentI = (tTermPhoneRec *)CurrentI->Next;  }  while (cmp(CurrentJ, Middle)<0) {   j--;   CurrentJ = (tTermPhoneRec *)CurrentJ->Prev;  }  if (i<=j)  {   SaveI = CurrentI->Next;   SaveJ = CurrentJ->Prev;   Swap(CurrentI, CurrentJ);   i++; j--;   CurrentI = (tTermPhoneRec *)SaveI;   CurrentJ = (tTermPhoneRec *)SaveJ;  } }while(i<=j); if (Low<j) SortDescending(Low, j, cmp); if (i<High) SortDescending(i, High, cmp);}void ShowLine(int Y, tTermPhoneRec *Entry, int Number){ char Num[5], Temp[256]; int fcol, bcol, i;   fcol = fgCol; bcol = bgCol; textAttr(PhoneScreen, Integers[cPhoneText]); wmove(PhoneScreen, 1, 36); for (i=36;i<COLS;i++)  waddch(PhoneScreen, ' ');  textAttr(PhoneScreen, Entry->Color);  wmove(PhoneScreen, Y, 0); for (i=0;i<COLS;i++)  waddch(PhoneScreen, ' '); wmove(PhoneScreen, Y, 0);  if (Entry->Tag)  waddch(PhoneScreen, Integers[TagChar]); else  waddch(PhoneScreen, ' '); sprintf(Num, "%03d  ", Number); waddstr(PhoneScreen, Num); PasToChar(Entry->Name, Temp); waddstr(PhoneScreen, Temp); textAttr(PhoneScreen, Integers[cPhoneText]); if (TermHeader.WritePos == 1) {  wmove(PhoneScreen, 1, 36);  waddstr(PhoneScreen, "Phone number");  wmove(PhoneScreen, 1, 62);  waddstr(PhoneScreen, "Baud");  wmove(PhoneScreen, 1, 68);  waddstr(PhoneScreen, "Comm.");  textAttr(PhoneScreen, Entry->Color);  wmove(PhoneScreen, Y, 36);  PasToChar(Entry->Number, Temp);  waddstr(PhoneScreen, Temp);  wmove(PhoneScreen, Y, 61);  sprintf(Temp, "%lu", Entry->Baud);  waddstr(PhoneScreen, Temp);  wmove(PhoneScreen, Y, 68);  waddch(PhoneScreen, 48+Entry->Databits);  waddch(PhoneScreen, '-');  waddch(PhoneScreen, Entry->Parity);  waddch(PhoneScreen, '-');  waddch(PhoneScreen, 48+Entry->Stopbits); } if (TermHeader.WritePos == 2) {  wmove(PhoneScreen, 1, 36);  waddstr(PhoneScreen, "Comment1");  wmove(PhoneScreen, Y, 36);  textAttr(PhoneScreen, Entry->Color);  PasToChar(Entry->Comment1, Temp);  waddstr(PhoneScreen, Temp); }   if (TermHeader.WritePos == 3) {  textAttr(PhoneScreen, Integers[cPhoneText]);  wmove(PhoneScreen, 1, 36);  waddstr(PhoneScreen, "Comment2");  wmove(PhoneScreen, Y, 36);  textAttr(PhoneScreen, Entry->Color);  PasToChar(Entry->Comment2, Temp);  waddstr(PhoneScreen, Temp); }   if (TermHeader.WritePos == 4) {  wmove(PhoneScreen, 1, 36);  waddstr(PhoneScreen, "Password");  wmove(PhoneScreen, 1, 61);  waddstr(PhoneScreen,"Opening hours");  wmove(PhoneScreen, Y, 36);  textAttr(PhoneScreen, Entry->Color);  PasToChar(Entry->Password, Temp);  if (Integers[HidePwds] == 1) Dots(Temp);  waddstr(PhoneScreen, Temp);  wmove(PhoneScreen, Y, 61);  sprintf(Temp, "%02d:%02d-%02d:%02d",Entry->Open / 60,Entry->Open % 60, Entry->Closed / 60, Entry->Closed % 60);  waddstr(PhoneScreen, Temp); }   if (TermHeader.WritePos == 5) {  wmove(PhoneScreen, 1, 36);  waddstr(PhoneScreen, "Username");  wmove(PhoneScreen, 1, 61);  waddstr(PhoneScreen, "Capture  Note");  textAttr(PhoneScreen, Entry->Color);  wmove(PhoneScreen, Y, 36);  if (strlen(Strings[User1+Entry->User-1])>24)  {   strncpy(Temp, Strings[User1+Entry->User-1], 24);   Temp[24]=0;  }  else strcpy(Temp, Strings[User1+Entry->User-1]);  waddstr(PhoneScreen, Temp);  wmove(PhoneScreen, Y, 61);  PasToChar(Entry->Capture, Temp);  waddstr(PhoneScreen, Temp);  wmove(PhoneScreen, Y, 70);  PasToChar(Entry->Note, Temp);  waddstr(PhoneScreen, Temp); } if (TermHeader.WritePos == 6) {  wmove(PhoneScreen, 1, 36);  waddstr(PhoneScreen, "Prefix");  wmove(PhoneScreen, 1, 61);  waddstr(PhoneScreen, "Suffix");  textAttr(PhoneScreen, Entry->Color);  wmove(PhoneScreen, Y, 36);  if (strlen(Strings[Prefix1+Entry->DialPrefix-1])>24)  {   strncpy(Temp, Strings[Prefix1+Entry->DialPrefix-1], 24);   Temp[24]=0;  }  else strcpy(Temp, Strings[Prefix1+Entry->DialPrefix-1]);  waddstr(PhoneScreen, Temp);  wmove(PhoneScreen, Y, 61);  if (strlen(Strings[Suffix1+Entry->DialSuffix-1])>24)  {   strncpy(Temp, Strings[Suffix1+Entry->DialSuffix-1], 24);   Temp[24]=0;  }  else strcpy(Temp, Strings[Suffix1+Entry->DialSuffix-1]);  waddstr(PhoneScreen, Temp); } if (TermHeader.WritePos == 7) {  wmove(PhoneScreen, 1, 36);  waddstr(PhoneScreen, "Last called");  wmove(PhoneScreen, 1, 50);  waddstr(PhoneScreen, "Total connects");  textAttr(PhoneScreen, Entry->Color);  wmove(PhoneScreen, Y, 36);//  FromJulian(Entry->Juldate);  sprintf(Temp, "%d-%d-%d", Day, Month, Year);  waddstr(PhoneScreen, Temp);  wmove(PhoneScreen, Y, 50);  sprintf(Temp, "%d", Entry->Connects);  waddstr(PhoneScreen, Temp); } if (TermHeader.WritePos == 8) {  wmove(PhoneScreen, 1, 36);  waddstr(PhoneScreen, "Time used");  wmove(PhoneScreen, 1, 46);  waddstr(PhoneScreen, "Cost");  wmove(PhoneScreen, 1, 53);  waddstr(PhoneScreen, "Download kb  Upload kb");  wmove(PhoneScreen, Y, 36);  textAttr(PhoneScreen, Entry->Color);  sprintf(Temp,"%02lu:%02lu     %lu",Entry->SecUsed / 60, Entry->SecUsed % 60, Entry->Costs);  waddstr(PhoneScreen, Temp);  wmove(PhoneScreen, Y, 53);  sprintf(Temp, "%lu", Entry->DownloadKb);  waddstr(PhoneScreen, Temp);  wmove(PhoneScreen, Y, 66);  sprintf(Temp, "%lu", Entry->UploadKb);  waddstr(PhoneScreen, Temp); } if (TermHeader.WritePos == 9) {  wmove(PhoneScreen, 1, 36);  waddstr(PhoneScreen, "Terminal emulation");  wmove(PhoneScreen, 1, 60);  waddstr(PhoneScreen, "Device");  textAttr(PhoneScreen, Entry->Color);  wmove(PhoneScreen, Y, 36);  if (WhichBook == 0)    waddstr(PhoneScreen, TermEmu[TranslateToTerminate[Entry->Terminal]]);  if (WhichBook == 1)    waddstr(PhoneScreen, TermEmu[TranslateToTelix[Entry->Terminal]]);  wmove(PhoneScreen, Y, 60);  i = Entry->Device;  if (i == 0) i = Integers[DefaultDevice];  if (i > 4) i = Integers[DefaultDevice];  if (strlen(Strings[Device1+i-1])>24)  {   strncpy(Temp, Strings[Device1+i-1], 24);   Temp[24]=0;  }  else strcpy(Temp, Strings[Device1+i-1]);  waddstr(PhoneScreen, Temp); } textColor(PhoneScreen, fcol); textBkgd(PhoneScreen, bcol);}void PaintPhoneBar(){ int x, fcol, bcol, i; chtype ch; tTermPhoneRec *Tmp;  fcol = fgCol; bcol = bgCol; textAttr(PhoneScreen, Integers[cPhoneBar]);  for (x=0;x<COLS;x++) {  ch=mvwinch(PhoneScreen, TermHeader.ScrPos+2, x);  mvwaddch(PhoneScreen, TermHeader.ScrPos+2, x, ch & A_CHARTEXT);  } textColor(PhoneScreen, fcol); textBkgd(PhoneScreen, bcol);}void ShowTerm(){ int i, fcol, bcol; char Temp[256], s[30];  fcol = fgCol; bcol = bgCol;  textAttr(PhoneScreen, Integers[cPhoneText]); wclear(PhoneScreen);  for (i=0;i<COLS*2;i++)  waddch(PhoneScreen, ' '); wmove(PhoneScreen, LINES-3, 0); for (i=0;i<COLS;i++)  waddch(PhoneScreen, ' ');  if (WhichBook == 0){   strcpy(Temp, "Dialing directory - TERMINATE (");  PasToChar(TermHeader.Comment, s);  strcat(Temp, s);  strcat(Temp, ")"); } if (WhichBook == 1){  strcpy(Temp, "Dialing directory - TELIX"); } wmove(PhoneScreen, 0, findCenter(0,COLS,strlen(Temp))); waddstr(PhoneScreen, Temp); wmove(PhoneScreen, 1, 1); waddstr(PhoneScreen,"  #"); wmove(PhoneScreen, 1, 6); waddstr(PhoneScreen,"Name"); mvwaddstr(PhoneScreen, LINES-3, 1, "Edit  Find  Dial  Manual  Sort  Global  saVe  Phonebook  defAult"); textColor(PhoneScreen, fcol); textBkgd(PhoneScreen, bcol);}void ShowTermBook(int which){ int i, j, fcol, bcol; tTermPhoneRec *Tmp;  i = 0; Tmp = TermCurrentPos;  fcol = fgCol; bcol = bgCol;  textAttr(PhoneScreen, Integers[cPhoneText]); if (which == 1){ textAttr(PhoneScreen, WHITE); for (i=2;i<21;i++)  for (j=0;j<COLS;j++)   mvwaddch(PhoneScreen, i, j, ' '); i = 0; textAttr(PhoneScreen, Integers[cPhoneText]); while ((i<19) && (Tmp != NULL) && (i < PhoneBook->Total)){  ShowLine(i+2, Tmp, i+TermCurrentNumber);  Tmp = (tTermPhoneRec *)Tmp->Next;  i++; } } if (which == 2){  for (i=0;i<TermLastScrPos;i++)   TermLastPos = (tTermPhoneRec *)TermLastPos->Next;  if (TermLastPos != NULL) ShowLine(TermLastScrPos+2, TermLastPos, TermCurrentNumber+TermLastScrPos);  else  {   textAttr(PhoneScreen, WHITE);   for (j=0;j<COLS;j++)    mvwaddch(PhoneScreen, i+2, j, ' ');  } } PaintPhoneBar(); TermLastPos = TermCurrentPos; TermLastScrPos  = TermHeader.ScrPos; textColor(PhoneScreen, fcol); textBkgd(PhoneScreen, bcol);}void SearchTerm(){ tWindow *Win; int Center, Exit, i; char Temp[20], TempStr[256]; tTermPhoneRec *Tmp; Center = findCenter(1,COLS,22); Win = new tWindow(PhoneScreen, Center, (LINES/2)-1, Center+22, (LINES/2)+1,           Integers[cInfoBold] >> 4,Integers[cInfoBold] % 16); Win->Frame(2, Integers[cInfoBold]); Win->Headline("Speed search", Integers[cInfoBold]); wrefresh(PhoneScreen); textAttr(PhoneScreen, Integers[cInfoBold]);

⌨️ 快捷键说明

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