MFC串口操作(异步方式)源码

这是一个关于MFC串口操作的源码实现,使用异步方式读写串口,包括OpenCom、CloseCom、SendData、AcceptData和清除缓冲区等关键函数,适用于后台系统的串口通信。
摘要由CSDN通过智能技术生成
               

这是我在一个后台系统摘抄出来的,在此基础上完成了一个独立的PPI读写程序(非DLL或控件方式)

//*************************************************************************
//**模 块 名:YFCOM.cpp
//**说    明:YFSoft 版权所有2005 - 2006(C)
//**创 建 人:叶帆
//**日    期:2006年4月4日
//**修 改 人:
//**日    期:
//**描    述:串口操作
//**版    本:V1.0
//*************************************************************************
#include "stdafx.h"
#include "yfcom.h"

//串口句柄
HANDLE m_COM_Handle;
//两个信号全局变量(串口操作用)
OVERLAPPED m_OverlappedRead, m_OverlappedWrite;

//*************************************************************************
//函 数 名:OpenCom
//输    入:long lngPort,        串口号
//   char *cfgMessage,    配置信息,形如"9600,e,8,1"
//   long lngInSize,      接收缓冲区大小
//   long lngOutSize      发送缓冲区大小
//输    出:long
//功能描述:打开串口
//全局变量:
//调用模块:
//作    者:叶帆
//日    期:2006年4月4日
//修 改 人:
//日    期:
//版    本:
//*************************************************************************
long OpenCom(long lngPort,char *cfgMessage,long lngInSize,long lngOutSize)
{
 try
 {
     char szMsg[255];
  DCB dcb;
       
  //打开端口
  if (lngPort>9)
           sprintf( szMsg, ".//COM%d", lngPort );
  else
     sprintf( szMsg, "COM%d", lngPort );

  //用异步方式读写串口
  m_COM_Handle  = CreateFile(szMsg, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED , NULL );  
  if( m_COM_Handle == NULL ) return( 2 );

  //清空异步读写参数
  memset(&(m_OverlappedRead), 0, sizeof (OVERLAPPED));
        memset(&(m_OverlappedWrite), 0, sizeof (OVERLAPPED));
     
  //设置dcb块
  dcb.DCBlength = sizeof( DCB );         //长度
  GetCommState(m_COM_Handle , &dcb );
       
  //波特率,奇偶校验,数据位,停止位  如:9600,n,8,1
        sprintf(szMsg,"COM%d:%s", lngPort,cfgMessa

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值