设为首页 加入收藏

TOP

3.4.2 具体实现(8)
2013-10-07 15:56:19 来源: 作者: 【 】 浏览:80
Tags:3.4.2 具体 实现

3.4.2  具体实现(8)

定义函数DispatchMessage(),用于发送数据,具体代码如下:

  1. //发送数据  
  2. void CTelnetView::DispatchMessage(CString strText)  
  3. {  
  4. ASSERT(cSock);  
  5. cSock->Send(strText, strText.GetLength());  
  6. }  

定义函数GetLine(),用于获得一行数据,具体代码如下:
  1. //获得一行数据  
  2. BOOL CTelnetView::GetLine(unsigned char *bytes, int nBytes, int &ndx)  
  3. {  
  4. BOOL bLine = FALSE;  
  5. while (bLine==FALSE && ndx<nBytes)  
  6. {  
  7. unsigned char ch = bytes[ndx];  
  8.  
  9. //原来设计的时候要去掉回车换行的,但是后来发现不能去掉  
  10. switch(ch)  
  11. {  
  12. case '\r': //   
  13. m_strLine += "\r"; //回车  
  14. break;  
  15. case '\n': //行结尾  
  16. m_strLine += "\n";  
  17. break;  
  18. default:   //其他数据  
  19. m_strLine += ch;  
  20. break;  
  21. }   
  22. ndx ++;  
  23. if (ndx == nBytes)  
  24. {  
  25. bLine = TRUE;  
  26. }  
  27. }  
  28. return bLine;  
  29. }  

定义函数MessageReceived(),用于实现数据处理,具体代码如下:
  1. //数据处理  
  2. void CTelnetView::MessageReceived(LPCSTR pText)  
  3. {  
  4. BOOL bSkip = FALSE;  
  5. int loop=0;  
  6. CString tempStr = "0123456789;";  
  7. CString tempStr2;  
  8. int ColorVal;  
  9. int tempY = 0;  
  10.  
  11. CDC *pDC = GetDC();  
  12. OnPrepareDC(pDC);  
  13. DrawCursor(pDC, FALSE);  
  14.  
  15. CRect clip;  
  16. pDC->GetClipBox(clip);  
  17.  
  18. CMainFrame *frm = (CMainFrame*)GetTopLevelFrame();  
  19. //设置颜色  
  20. pDC->SetTextColor(cTextColor);  
  21. pDC->SetBkColor(cBackgroundColor);  
  22.  
  23. pDC->SelectObject(GetStockObject(ANSI_FIXED_FONT));  
  24. int length = strlen(pText);  
  25. char text[2] = {0x00, 0x00};  
  26. while(loop < length)  
  27. {  
  28. switch(pText[loop])  
  29. {  
  30.  
  31. case 8: //删除  
  32. CurrentXX--;  
  33. if(CurrentXX < 0CurrentXX = 0;  
  34. loop++;  
  35. break;  
  36.  
  37. case 9: //Tab键  
  38. CurrentXX++; //  
  39. loop++;  
  40. break;  
  41.  
  42. case 13: //换行CR  
  43. m_strline.Empty();  
  44. CurrentXX = 0;  
  45. loop++;  
  46. break;  
  47.  
  48. case 27:  
  49. loop++;  
  50. //分析紧接着27的字符是否是91,如果不是91,则这两个字符都不作处理,直接跳出  
  51. if (pText[loop]!=91)   
  52. {  
  53. loop++;  
  54. break;  
  55. }  
  56. //如果是91,则接下来的数据则是系统相关数据  
  57. else  
  58. {  
  59. loop++;  
  60. while (tempStr.Find(pText[loop]) != -1)   
  61. {  
  62. tempStr2 += pText[loop];  
  63. loop++;  
  64. }  
  65. if (pText[loop]=='m') //如果接下来的数据是m,则分析前面获得的字符串  
  66. {  
  67. //循环获得字符串中的值,其中字符串中的值都是以分号隔开的  
  68. while (tempStr2 != "")  
  69. {  
  70. if (tempStr2.Find(";") != -1)  
  71. {  
  72. ColorVal = atoi(tempStr2.Mid(0,tempStr2.Find(";")));  
  73. tempStr2tempStr2 = tempStr2.Mid(tempStr2.Find(";") + 1);  

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇3.4.2 具体实现(7) 下一篇3.4.2 具体实现(9)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·工业机器人TCP校准中 (2025-12-25 05:19:17)
·opc 通讯协议与 TCP (2025-12-25 05:19:15)
·labview中tcp/ip通信 (2025-12-25 05:19:13)
·新书介绍《Python数 (2025-12-25 04:49:47)
·怎么利用 Python 进 (2025-12-25 04:49:45)