实习程序总结
2021/12/25 20:08:37
本文主要是介绍实习程序总结,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
MFC网络调试助手
功能模块:
1. 实现UDP、TCP通信
继承MFC自带的CAsyncSocket类,并重写虚函数OnReceive()实现非阻塞接收数据 AfxSocketinit();//初始化套接字 1、UDP: CAsycSocket::Create(nPort,SOCK_DGRAM,63L,pszIP);//创建Socket CAsycSocket::SendTo(pszBuffer,nBufferSize,Port,pszIP);//往指定地址发送数据 CAsycSocket::Receive(pszBuffer,nBufferSize);//放于OnReceive()中实现非阻塞接收数据 2、 TCP TCP Client TCP Server //随机分配端口 //创建监听套接字 CAsycSocket::Create(); CAsycSocket::Create(nPort,SOCK_STREAM,63L,pszIP); //发送连接请求 //监听请求的连接,当有连接请求时触发OnAccept()函数 CAsycSocket::Connect(pszIP,nPort); CAsycSocket::Listen(nCount); //往服务器发送数据 //放于OnAccept中实现非阻塞获取监听Socket CAsycSocket::Send(pszBuffer,nBufferSize); CAsycSocket::Accept(CAsyncSocket); //放于OnReceive()中实现非阻塞接收数据 CAsycSocket::Receive(pszBuffer,nBufferSize); 注:可利用IP Address Control控件的GetAddress(wIp);获取用户输入IP,然后将DWORD类型的IP转为CString。
//DWORD转CString
2. 实现文件数据传输
结合CFile类和CFileDialog类实现文件的读写创建操作 1、创建并弹出文件选择框,供用户选择文件路径以及创建文件 //TRUE表示创建打开文件类型对话框,FALSE表示创建保存类型文件对话框 new CFileDialog(BOOL); CFileDialog::DoModal();//创建并显示模态对话框 CFileDialog::GetPathName();//获取文件完整路径 CFileDialog::lpstrDefExt=pszDefExt;//设置文件默认扩展名 CFileDialog::lpstrFilter=pszFilter;//设置文件对话框过滤器 2、创建文件类进行读写文件操作 //实例化CFile类,在该路径下创建和打开文件 new CFile(pszPath,CFile::modeCreate|CFile::modeNoTruncate); CFile::Read(pszBuffer,nBufferSize);//读取文件中的所有数据 CFIle::Write(pszBuffer,nBufferSize);//往文件中写入数据 CFile::Close();
3. 进行十六进制转换、发送附加位和显示时间
1、数据添加附加位 创建MFC子窗口类CAddCheck 在主窗口类上实例化此类并调用CDialog::DoModal()方法来创建模态对话框 2、添加显示时间 使用CTime time_t=CTime::GetCurrentTime();来获取当前时间 将获取到的时间进行格式化CString strTime.Format(_T("%Y-%m-%d %H-%M-%S--%A:"));
4. 数据定时发送
利用定时器功能实现数据的定时发送 1、添加OnTimer(nIDEvent)事件 对话框属性(Properties)⇒⇒属性页右侧Messages页⇒⇒WM_TIMER⇒⇒<Add> OnTimer 2、触发和关闭OnTimer(nIDEvent)事件 SetTimer(nIDEvent,nCircleTime,NULL);//触发OnTimer事件 KillTimer(nIDEvent);//关闭OnTimer()事件
5. 菜单栏、状态栏的调用和创建
1、菜单栏的创建 Project ⇒ Add Resource ⇒ Menu 点击新建即创建了菜单资源,并在对话框的Menu属性中添加此菜单资源。 编辑菜单项,点击弹出子菜单则将菜单项中的Popup属性设为TRUE,点击触发事件则关闭Popup属性。 对于点击触发事件的菜单项,右击选中Add Event Handle然后选择在包含此菜单项的对话框类中添加事件即可。 2、状态栏的创建 CStatusBar::Create(this);//在该对话框类中创建一个状态栏资源 this->getClientRect(CRect);//获取该对话框的矩形框大小 CStatusBar::SetIndicators(pnID,nCount);//设定状态栏中包含的ID资源 CStatusBar::SetPaneInfo(nIndex,nID,SBPS_NORMAL,nWidth);//在状态栏中添加元素 CStatusBar::RepositionBars(nIDFirst,nIDLast,nIDLeftOver);
MFC串口调试助手
1、准备工作 下载MSCOMM.OCX,将其放入 32位操作系统{路径1:Windows/System32},64位操作系统{路径2:Windows/sysWOW64}. 打开CMD键入 regsvr32c //文件所在路径即注册完成 右击对话框⇒⇒Insert ActiveX Control⇒⇒Microsoft Communication Control,Version 6⇒OK 调出该控件属性页选择Control Events添加OnComm事件; 添加控件绑定变量m_MScomm; 2、串口通信 找出可用串口: for(int nCom=1;nCom<=16;nCom++) { try { m_Mscomm.Put_CommPort(nCom); m_Mscomm.PortOpen(TRUE); nList[i++]=nCom;//若端口成功则运行此语句保存可用端口,否则进入Catch语句 m_Mscomm.PortOpen(FALSE); } Catch {} } 设置串口属性: m_Mscomm.put_CommPort(nCom); m_Mscomm.put_InputMode(1);//二进制形式传输 m_Mscomm.put_InBufferSize(1024);//设置缓冲区 m_Mscomm.put_OutBufferSize(1024); m_Mscomm.put_Settings(_T("9600,n,8,1"));//设置串口属性 m_Mscomm.put_RThreshold(1);//缓冲区存在一个字符则出发OnComm事件 m_Mscomm.put_PortOpen(TRUE); m_Mscomm.RTSEnable(FALSE);//RTS位使能信号关闭 m_Mscomm.DTREnable(FALSE);//DRT位使能信号关闭 发送和接收数据: 接收数据:当接收缓冲区存在字符串时会触发OnComm()事件, 2. 子窗口嵌入父窗口中并在父窗口响应子窗口事件 1、子窗口嵌入父窗口 在父窗口中调入Tab Control控件并绑定变量m_TabCtrl、实例化子窗口类m_WndEx; 调用m_WndEx.Create(nID,&m_tabCtrl);即可在Tab控件中显示子窗口//nID为子窗口ID 2、父窗口响应子窗口事件 ::PostMessage();
这篇关于实习程序总结的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-07-08如何在敏捷项目中实现高效测试?
- 2024-07-08用户故事一定要有 “So that...” 吗?
- 2024-07-04TiDB 资源管控的对撞测试以及最佳实践架构
- 2024-07-03万字长文聊聊Web3的组成架构
- 2024-07-02springboot项目无法注册到nacos-icode9专业技术文章分享
- 2024-06-26结对编程到底难不难?答案在这里
- 2024-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt