登录
首页 » VC++源码 » VC串口调试、发送和接收消息范例

VC串口调试、发送和接收消息范例

于 2023-05-17 发布 文件大小:21.32 kB
0 100
下载积分: 2 下载次数: 1

代码说明:

VC串口调试、发送和接收消息数据范例,这里面涉及到线程控制、串口调试、发送消息、接收消息等编写技巧,还有串口读和写操作,独占方式、延时发送消息,设置发送和接收缓冲区大小等,关于一些参数定义和接收数据函数的代码如下:   OVERLAPPED tOverLaped= {0}; //线程函数使用的OVERLAPPED结构   OVERLAPPED wOverLaped = {0}; //写操作使用的OVERLAPPED结构   OVERLAPPED rOverLaped = {0}; //读操作使用的OVERLAPPED结构   BOOL IsFun = TRUE; //线程是否运行   BOOL IsStop = FALSE; //数据是否发送完毕   //自定义消息处理函数,用于接收数据   void CSeriesPortDlg::OnRecieveData(WPARAM wParam, LPARAM lParam)   {    DWORD res,factbyte;    memset(DataBuffer,0,1024); //初始化数据缓冲区    COMSTAT rst;    ClearCommError(hCom,&res,&rst);//清空串口错误标志,记录当前通信状态    rOverLaped.hEvent = CreateEvent(NULL,TRUE,FALSE,NULL); //创建一个事件对象    if (ReadFile(hCom,DataBuffer,rst.cbInQue,&factbyte,&rOverLaped)) //读取数据到缓冲区中    {    DataBuffer[rst.cbInQue]= 0;    IsStop = FALSE;    }    else    {    res = WaitForSingleObject(rOverLaped.hEvent,5000);    }    IsStop = FALSE;    MessageBox(DataBuffer);   }

下载说明:请别用迅雷下载,失败请重下,重下不扣分!

发表评论

0 个回复

  • VC++基本鼠标操作——判断鼠标消息
    VC++基本鼠标操作——判断鼠标消息,操作方法:按下鼠标左键,移动鼠标即可绘制椭圆,直至释放左键!   void CBaseMouseDemoView::OnMouseMove(UINT nFlags, CPoint point)   {    if(bDrag)    {    ptUp=point;//记录鼠标的当前位置    DrawCircle();//画新圆    }    CView::OnMouseMove(nFlags, point);   }   void CBaseMouseDemoView::DrawCircle()   {    Invalidate(false);    CClientDC dc(this);//获取DC    CRect rect;    GetClientRect(rect); //获取客户窗口区域    CBrush brush(RGB(255,255,255));    dc.FillRect(rect,&brush);//填充背景色为白色    dc.Ellipse(ptDown.x,ptDown.y,ptUp.x,ptUp.y);//绘制矩形   }
    2022-03-19 16:04:24下载
    积分:1
  • VC++ 演示雷达工程数据的可视化与处理
    VC++综合实例源码,演示雷达工程数据的可视化与处理,这个源代码来自一本VC++书籍中,不知道现在是否还可以用,里面雷达测试文件,不过我没有调试成,源代码文件是比较完整的,大部分代码中都有注释,你可以了解一些关于雷达数据读娶界面标尺运用、鼠标操作控制、坐标的显示与控制、映射模式(像素)、鼠标位置标识、BMP格式重新排列数据、滚动窗口、内存控制等多个方面的操作技巧,是一个比较综合的VC++学习实例。
    2023-03-01 01:05:04下载
    积分:1
  • VC++6.0 窗口过程函数及消息发送、响应测试实例
    VC++6.0 窗口过程函数及消息发送、响应测试实例,在应用程序中窗口过程函数及其消息发送、响应机制的使用,能够方便程序集中处理各类消息,使得整个程序的架构更加合理、清晰。窗口过程函数及其消息发送、响应机制的使用方法:   ⑴自定义消息:   在Resource.h文件中自定义消息:#define WM_MYMSG 2000   ⑵添加窗口过程函数的声明和实现体:   ①在.h文件中添加窗口过程函数声明:   virtual LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam);   ②在.cpp文件中添加窗口过程函数实现体:   ⑶发送消息的方式比较:   ①this->SendMessage(WM_MYMSG,0,0);   ②this->PostMessage(WM_MYMSG,0,0);   ③this->SendNotifyMessage(WM_MYMSG,0,0);   这三个函数都可以将指定的消息发送到某个窗口,但是这三种消息的发送方式存在如下的区别:SendMessage立即调用窗口过程函数,而且直到窗口过程函数处理完消息后才返回。PostMessage则是将指定的消息寄送到窗口消息队列后立即返回。对于SendNotifyMessage来说,如果窗口是调用线程创建的,SendNotifyMessage为该窗口调用窗口过程函数,并且等待窗口过程函数处理完消息后才返回;如果窗口是由不同的线程创建的,SendNotifyMessage将指定的消息传给窗口过程函数后立即返回。
    2023-03-05 04:00:03下载
    积分:1
  • vc++CThreadEx范例
    vc++CThreadEx范例源码,创建两个线程分别显示不同的图片,形成交替显示的效果,演示了线程同步和异步,并涉及到定时器的使用。在交替显示图片时,每半秒触发定时器,演示了在一个周期内创建线程、启动线程、向工作线程发出退出命令、等待工作线程、销毁工作线程、主线程停止交替显示,i交替取值0和1、解除同步、检验是否有消息到达等各个环节的实现代码。
    2022-03-03 18:54:02下载
    积分:1
  • VC++ FTP、HTTP 多线程断点续传下载文件
    VC++ FTP、HTTP 多线程断点续传下载文件,在断点下载时,可获取远程站点信息,如:是否支持断点续传、要下载的文件大小和创建时间等。可设置下载的线程数、下载任务的线程函数、多线程断点续传下载一个文件、关于BOOL bForceDownload/*=FALSE*/的定义,如果为 TRUE 表示强制性重新下载,以下载的部分将会被删除,FALSE 表示断点续传,并创建多线程下载使用的对象和数据缓冲、删除多线程下载使用的对象和数据缓冲。   启动多线程下载,返回 0 表示失败,1表示成功,2表示不用下载了,因为该文件已经下载过了   智能判断要保存的文件是否已经存在,且大小和创建时间一致,如果不是强制性下载,则不需要再下载了。
    2022-03-19 00:12:39下载
    积分:1
  • VC串口调试、发送和接收消息范例
    VC串口调试、发送和接收消息数据范例,这里面涉及到线程控制、串口调试、发送消息、接收消息等编写技巧,还有串口读和写操作,独占方式、延时发送消息,设置发送和接收缓冲区大小等,关于一些参数定义和接收数据函数的代码如下:   OVERLAPPED tOverLaped= {0}; //线程函数使用的OVERLAPPED结构   OVERLAPPED wOverLaped = {0}; //写操作使用的OVERLAPPED结构   OVERLAPPED rOverLaped = {0}; //读操作使用的OVERLAPPED结构   BOOL IsFun = TRUE; //线程是否运行   BOOL IsStop = FALSE; //数据是否发送完毕   //自定义消息处理函数,用于接收数据   void CSeriesPortDlg::OnRecieveData(WPARAM wParam, LPARAM lParam)   {    DWORD res,factbyte;    memset(DataBuffer,0,1024); //初始化数据缓冲区    COMSTAT rst;    ClearCommError(hCom,&res,&rst);//清空串口错误标志,记录当前通信状态    rOverLaped.hEvent = CreateEvent(NULL,TRUE,FALSE,NULL); //创建一个事件对象    if (ReadFile(hCom,DataBuffer,rst.cbInQue,&factbyte,&rOverLaped)) //读取数据到缓冲区中    {    DataBuffer[rst.cbInQue]= 0;    IsStop = FALSE;    }    else    {    res = WaitForSingleObject(rOverLaped.hEvent,5000);    }    IsStop = FALSE;    MessageBox(DataBuffer);   }
    2023-05-17 19:05:03下载
    积分:1
  • VC++ 获取主机名和IP地址及多线程运行示例
    VC++6.0获取主机名和IP地址,并演示多线程的运行示例,作者:fiwen。   获取IP地址是单击窗口右上角的“获缺按钮,即可显示主机名称和该机IP地址,多线程运行演示则打开后程序立即运行,左右两侧不同的线程,执行不同的任务,各自互不影响。   多线程演示部分,分别用了两个线程,每一个线程控制一个do while循环来运行,比如其中一个线程是这样写的:   CString str;   bool ReadData= TRUE;   int i=1;   do   {    //从1到99的平方    str.Format("%-3d的平方:%-5d",i,i*i);    pList->AddString(str);    Sleep(100);    i++;   }   while (ReadData=TRUE);   return 0;
    2022-01-20 22:35:47下载
    积分:1
  • VC++ CREATE VIEW语句动态创建数据库视图
    VC++ 动态创建视图,使用CREATE VIEW语句动态创建数据库视图,具体请下载本源码测试,需要提前准备好数据库。需要导入一个ADO动态链接库msado15.dll,该动态库位于系统盘下的“Program FilesCommon FilesSystemado”目录下。数据库连接好才可以使用本程序动态创建视图。
    2022-08-03 17:42:23下载
    积分:1
  • VC++ 自定义每个Tab内的Dlg效果
    VC++ 创建窗体的Tab,为每一个TAB页创建不同的Dlg,如图所示,每一个TAB内有可能是一张图片,也有可能是一个登录界面或一个Combobox,或者是一个树形菜单,总之,每个TAB除了隔离显示内容外,还自定义了多种形式的数据,增加了TAB窗口的实用性,最终运行效果请参见截图所示。
    2022-08-21 06:29:38下载
    积分:1
  • VC++ 使用自定义消息进行线程间的通信
    VC++ 使用自定义消息进行线程间的通信,在本例子中,当计数到17的整数倍时,工作线程通过自定义消息与主线程通信。最后会弹出消息框:当前计数器的计数为17的整数倍。计数器有几个选项:高速计数、低速计数,相关参数设置如下:   SpeedControl=1;   GetDlgItem(IDC_RADIO1)->EnableWindow(true);//单选按钮生效   GetDlgItem(IDC_RADIO2)->EnableWindow(true);   GetDlgItem(IDC_RADIO3)->EnableWindow(true);   GetDlgItem(IDC_STAR)->EnableWindow(false);//开始按钮无效   numinfo.pedit=&m_Num;   numinfo.hwnd=GetSafeHwnd();//获取主线程窗口指针   CWinThread* pThread=AfxBeginThread(ThreadFunc,&numinfo);//创建新的线程并开始执行
    2023-03-13 15:00:04下载
    积分:1
  • 696518资源总数
  • 105877会员总数
  • 14今日下载