资源简介
这是本人毕业设计的一部分,可以直接编译使用。在虚拟机下实现两个COM端口的数据传输, 首先开启虚拟机,然后将两个的串口端COM1和COM2连接起来,设置对两个对话框的串口端口分别为COM1和COM2,将波特率,数据位,停止位,校验位设置相同参数。接下里打开串口,如果串口打开失败会有提示设置串口属性失败,本次测试时,打开串口之后虚拟机中可以清楚的看到COM1和COM2发生了变化,后面多了波特率,数据位,校验位和停止位,这也是串口开启成功的标志. 并且打开串口按钮自动变为了关闭串口,表示串口打开成功。随后在发送框中写入要发送的数据,点击发送消息按钮即可将数据从一个对话框发送到另一个对话框。这样就完成了在虚拟机串口虚拟成功的条件下,检测串口通信的测试。
代码片段和文件信息
#include “StdAfx.h“
#include “SerialPort.h“
#include“Thread.h“
CSerialPort::CSerialPort(void)
{
m_hComm = NULL; //窗口句柄的初始化
}
CSerialPort::~CSerialPort(void)
{
CloseComm(); //释放
}
void CSerialPort::StartComm() //打开线程
{
m_threadComm.SetThreadData((DWORD)this); //设计数据开启
m_threadComm.Start();
}
BOOL CSerialPort::OpenComm(CString strComm)
{
if(NULL ==m_hComm ) //首先判断串口是不是NULL
{
m_hComm =CreateFile((TCHAR*)(LPCTSTR)strCommGENERIC_READ|GENERIC_WRITE
0NULLOPEN_EXISTINGFILE_ATTRIBUTE_NORMAL |FILE_FLAG_OVERLAPPEDNULL);
//指定哪一个串口 可以读 可以写(访问模式) 共享模式为0(不能共享) 创建方式 文件重叠属性 0
if(INVALID_HANDLE_VALUE == m_hComm) //判断窗口句柄无效
{
int nError = GetLastError(); //若不存在 返回错误类型
m_hComm = NULL;
return FALSE;
}
return TRUE; //创建文件 打开成功
}
return FALSE; // 打开失败 ////////////////////////////////////////////////////////////////////////////////
}
BOOL CSerialPort::SetCommState(DWORD dwBaudrateBYTE byParity BYTE byByteSizeBYTE byStopBits)
{
if(m_hComm == NULL) return FALSE;
DCB dcb;
BOOL bRet = ::GetCommState(m_hComm&dcb); //返回关于串口的所有属性
if(!bRet) //返回值是否正确
{ if(m_hComm) //是否已经打开了
{
CloseHandle(m_hComm);
m_hComm = NULL; //然后释放掉
}
return FALSE;
}
dcb.BaudRate = dwBaudrate;
dcb.ByteSize = byByteSize;
dcb.Parity = byParity;
dcb.StopBits = byStopBits;
bRet =::SetCommState(m_hComm&dcb); //设置串口的dcb块 ////问题可能出在这里 设置了的DCB的块
if(!bRet) //属性设置是否失败
{
if(m_hComm)
{
CloseHandle(m_hComm);
m_hComm =NULL;
}
return FALSE; //返回去执行
}
return TRUE; //设置串口属性成功的
}
BOOL CSerialPort::SetupComm(DWORD dwInqueueDWORD dwQutQueue)
{
if(m_hComm == NULL) return FALSE; //判断串口是否存在
return ::SetupComm(m_hCommdwInqueuedwQutQueue);
}
BOOL CSerialPort::PurgeComm(DWORD dwFlags)
{
if(m_hComm == NULL) return FALSE;
return ::PurgeComm(m_hCommdwFlags); //清除函数标志位
}
BOOL CSerialPort::SetCommMask(DWORD dwEvtMask)
{
if(m_hComm == NULL) return FALSE;
return ::SetCommMask(m_hCommdwEvtMask); //设置事件类型
}
BOOL CSerialPort::WriteFile(IN LPCVOID lpBufferIN DWORD nNumberOfBytesToWriteOUT LPDWORD lpNumberOfBytesWrittenIN LPOVERLAPPED lpOverlapped)
{
if(m_hComm == NULL) return FALSE;
return::WriteFile(m_hCommlpBuffernNumberOfBytesToWritelpNumberOfBytesWrittenlpOverlapped);
}
BOOL CSerialPort::ReadFile(OUT LPVOID lpBufferIN DWORD nNumberOfBytesToReadOUT LPDWORD lpNumberOfBytesReadIN LPOVERLAPPED lpOverlapped )
{
if(m_hComm == NULL) return FALSE;
return::ReadFile(m_hCommlpBuffernNumberOfBytesToReadlpNumberOfBytesReadlpOverlapped);
}
BOOL CSerialPort::ClearCommError(OUT LPDWORD lpErrorsOUT LPCOMSTAT lpStat)
{
if(m_hComm == NULL) return FALSE;
return ::ClearCommError(m_hCommlpErrorslpStat);
}
BOOL CSerialPort::GetOverlappedResult
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-08-20 17:28 基于VS2010MFC的上位机源程序\
目录 0 2018-04-22 16:23 基于VS2010MFC的上位机源程序\Debug\
文件 166912 2018-08-20 17:27 基于VS2010MFC的上位机源程序\Debug\WinDemo.exe
文件 1079244 2018-08-20 17:27 基于VS2010MFC的上位机源程序\Debug\WinDemo.ilk
文件 5655552 2018-08-20 17:27 基于VS2010MFC的上位机源程序\Debug\WinDemo.pdb
目录 0 2018-08-20 17:25 基于VS2010MFC的上位机源程序\ipch\
目录 0 2018-08-20 17:25 基于VS2010MFC的上位机源程序\ipch\windemo-23b32b7c\
目录 0 2018-08-20 17:27 基于VS2010MFC的上位机源程序\WinDemo\
文件 58609664 2018-08-20 17:28 基于VS2010MFC的上位机源程序\WinDemo.sdf
文件 888 2018-04-20 14:34 基于VS2010MFC的上位机源程序\WinDemo.sln
文件 23040 2018-08-20 17:28 基于VS2010MFC的上位机源程序\WinDemo.suo
目录 0 2018-08-20 17:28 基于VS2010MFC的上位机源程序\WinDemo\Debug\
文件 8698 2018-08-20 17:27 基于VS2010MFC的上位机源程序\WinDemo\Debug\cl.command.1.tlog
文件 112824 2018-08-20 17:27 基于VS2010MFC的上位机源程序\WinDemo\Debug\CL.read.1.tlog
文件 8906 2018-08-20 17:27 基于VS2010MFC的上位机源程序\WinDemo\Debug\CL.write.1.tlog
文件 2 2018-08-20 17:27 基于VS2010MFC的上位机源程序\WinDemo\Debug\li
文件 2 2018-08-20 17:27 基于VS2010MFC的上位机源程序\WinDemo\Debug\li
文件 2 2018-08-20 17:27 基于VS2010MFC的上位机源程序\WinDemo\Debug\li
文件 2 2018-08-20 17:27 基于VS2010MFC的上位机源程序\WinDemo\Debug\li
文件 2 2018-08-20 17:27 基于VS2010MFC的上位机源程序\WinDemo\Debug\li
文件 2 2018-08-20 17:27 基于VS2010MFC的上位机源程序\WinDemo\Debug\li
文件 2 2018-08-20 17:27 基于VS2010MFC的上位机源程序\WinDemo\Debug\li
文件 2 2018-08-20 17:27 基于VS2010MFC的上位机源程序\WinDemo\Debug\li
文件 2 2018-08-20 17:27 基于VS2010MFC的上位机源程序\WinDemo\Debug\li
文件 2 2018-08-20 17:27 基于VS2010MFC的上位机源程序\WinDemo\Debug\li
文件 2 2018-08-20 17:27 基于VS2010MFC的上位机源程序\WinDemo\Debug\li
文件 2 2018-08-20 17:27 基于VS2010MFC的上位机源程序\WinDemo\Debug\li
文件 2 2018-08-20 17:27 基于VS2010MFC的上位机源程序\WinDemo\Debug\li
文件 2 2018-08-20 17:27 基于VS2010MFC的上位机源程序\WinDemo\Debug\li
文件 2 2018-08-20 17:27 基于VS2010MFC的上位机源程序\WinDemo\Debug\li
文件 2 2018-08-20 17:27 基于VS2010MFC的上位机源程序\WinDemo\Debug\li
............此处省略52个文件信息
- 上一篇:C++内存管理课件——侯捷老师
- 下一篇:CC3D飞控资料(代码原理图)
相关资源
- C++内存管理课件——侯捷老师
- Programming principles and practice Using C++ (
- 黑马程序员最新24期C/C++全栈培训讲义
- MFC项目:图书管理系统
- QR码二维码编码C++源代码VS2010编译环境
- QR二维码解码,C++源代码VS2010编译环境
- 11_人脸检测与识别系统.zip
- MFCvs2010画曲线图
- Visual C++视频会议开发技术与源码.ra
- VC数字图像处理杨淑莹北京交通大学
- OpenGL 绘制立方体、茶壶、环面等稍复
- C++标准库MSDN离线文档-微软2017-10月发
- 数据结构(C++语言版)第三版超清带
- Visual C++范例大全 400+的
- 《Visual C++网络编程开发与实战》案例
- Visual C++网络编程开发与实战 案例源码
- C++ 孔令德计算机图形学习题答案源代
- VC++实现浏览器
- 基于MFC的网络版连连看系统_源文件
- Visual C++ MFC棋牌类游戏编程五子棋,象
- C++TEST中文帮助文档
- C-Free 5.0
- MFC 150 例程
- 轻松搞定C++语言.pdf
- c++人脸相似度检测MFC源码
- 精通Visual C++图像处理编程(PDF & 源代
- MFC socket与websocket通信
- VC一个很简单的屏保程序MFC
- 《Visual C++ 6.0 用户界面制作技术与应
- MFC界面设计小型点餐系统
评论
共有 条评论