实习程序总结
作者:互联网
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();
标签:总结,文件,CFileDialog,对话框,创建,CAsycSocket,程序,CFile,实习 来源: https://blog.csdn.net/qq_42002779/article/details/108113510