参考博文

https://blog.csdn.net/liuzhuomju/article/details/7479507

#pragma once
#define RX_CHAR    WM_USER+1
class CMySerialPort
{
private:HANDLE  m_hThread;bool m_IsOpen;public:OVERLAPPED m_tOverLaped;   bool m_IsFun;HANDLE  m_hCom;CWnd *m_pWnd;
public:CMySerialPort(void);~CMySerialPort(void);
public:bool OpenPort(CString port,CWnd *pWnd);bool ClosePort(void);bool SetParament(DWORD BaudRate = 9600,BYTE Parity = ODDPARITY,        /* 0-4  =  NOPARITY,ODDPARITY,EVENPARITY,MARKPARITY,SPACEPARITY  */BYTE ByteSize =8,BYTE StopBits = 0);           //0,1,2 = 1, 1.5, 2  bool ReadData(unsigned char *buf,UINT &len);bool WriteData(unsigned char *buf,UINT len);};
#include "StdAfx.h"
#include "MySerialPort.h"CMySerialPort::CMySerialPort(void)
{m_hCom = NULL;m_pWnd = NULL;m_hThread=NULL;m_IsOpen = false;memset(&m_tOverLaped,0,sizeof(OVERLAPPED));m_tOverLaped.hEvent = CreateEvent(NULL,TRUE,FALSE,NULL);//创建一个事件
}CMySerialPort::~CMySerialPort(void)
{
}bool CMySerialPort::OpenPort(CString port,CWnd *pWnd)
{bool flag = false;if(m_IsOpen)ClosePort();m_hCom = CreateFile(port,       //打开串口1GENERIC_READ|GENERIC_WRITE, //允许读和写操作0,                          //独占方式NULL,OPEN_EXISTING,              //打开一个存在的串口FILE_ATTRIBUTE_NORMAL,//|FILE_FLAG_OVERLAPPED, //异步方式打开NULL);if (m_hCom!=INVALID_HANDLE_VALUE){m_pWnd = pWnd;m_IsOpen = true;flag =  true;}return flag;
}
bool CMySerialPort::ClosePort(void)
{if(m_IsOpen){m_IsFun =false;m_IsOpen = false;if(CloseHandle(m_hCom))return true;elsereturn false;}elsereturn false;
}
bool CMySerialPort::SetParament(DWORD BaudRate,BYTE Parity,BYTE ByteSize,BYTE StopBits )
{SetupComm(m_hCom,1024,1024); //设置发送和接收缓冲区大小//设置串口信息DCB dcb;GetCommState(m_hCom,&dcb);dcb.BaudRate = 9600;dcb.fBinary = TRUE;dcb.fParity = TRUE;dcb.ByteSize = 8;dcb.Parity = ODDPARITY;dcb.StopBits = ONESTOPBIT;if (!SetCommState(m_hCom,&dcb))//设置串口状态{return false;         }if (!SetCommMask(m_hCom,EV_RXCHAR | EV_TXEMPTY))//设置串口掩码{return false;}COMMTIMEOUTS timeout;timeout.ReadIntervalTimeout = 50;timeout.ReadTotalTimeoutMultiplier = 50;timeout.ReadTotalTimeoutConstant = 500;timeout.WriteTotalTimeoutConstant = 500;timeout.WriteTotalTimeoutMultiplier = 50;SetCommTimeouts(m_hCom, &timeout);return true;
}
bool CMySerialPort::ReadData(unsigned char *DataBuffer,UINT &len)
{COMSTAT rst;bool flag = false;ClearCommError(m_hCom,NULL,&rst); //读取数据到缓冲区中if (ReadFile(m_hCom,DataBuffer,len,NULL,NULL)>0) {flag = true;}return flag;
}
bool CMySerialPort::WriteData(unsigned char *buf,UINT len)
{bool flag = false;if(m_IsOpen){if (WriteFile(m_hCom, buf, len, NULL,NULL)>0){flag = true;}        }return flag;
}

win32 串口阻塞的方式发送接收数据相关推荐

  1. 求android 中串口的发送接收数据代码

    RT,求高手帮忙! 就是 /dev/ttyS0 和/dev/ttyS1 两个设备的通信问题.. 同求~ 这个是不是需要串口驱动啊?最近正在搞这个串口通信的案子,头疼 同样也没有搞出来,老是报:不能扫描 ...

  2. 安卓Socket连接实现连接实现发送接收数据,openwrt wifi转串口连接单片机实现控制...

    安卓Socket连接实现连接实现发送接收数据,openwrt wifi转串口连接单片机实现控制 socket 连接采用流的方式进行发送接收数据,采用thread线程的方式. 什么是线程?  详细代码介 ...

  3. Android发送接收WiFi,安卓Socket连接实现连接实现发送接收数据,openwrt wifi转串口连接单片机实现控制,安卓openwrt...

    安卓Socket连接实现连接实现发送接收数据,openwrt wifi转串口连接单片机实现控制,安卓openwrt 安卓Socket连接实现连接实现发送接收数据,openwrt wifi转串口连接单片 ...

  4. 使用c#实现tcp的连接和发送接收数据

    最近有个小项目,需要调用装置的录波数据,使用tcp模式,在这里整理了下如何使用c#实现tcp连接并实现发送接收数据,分享出来. 我这里使用的tcpclient ,终端是tcpserver模式. 首先自 ...

  5. Python3树莓派连接阿里云物联网设备发送接收数据

    Python3连接阿里云物联网设备发送接收数据(树莓派) 阿里云物联网IOT 代码部分 库文件 Windows下安装环境 树莓派安装环境 可能遇到的错误 代码 效果展示 阿里云物联网IOT 首先,准备 ...

  6. 微信小程序连接蓝牙 并分包发送 接收数据完整版

    微信小程序连接蓝牙并分包发送接收数据 初始化蓝牙 初始化蓝牙设备 搜索蓝牙设备 连接蓝牙设备 获取蓝牙设备所有service(支持读写的) 向蓝牙发送数据 断开蓝牙 停止搜索蓝牙 转16进制 Arra ...

  7. usart 串口的发送-接收数据(正点改编)

    功能:上位机发送给mcu,mcu原原本本发送给上位机**main关键代码**while(1){if(flag==1){len=usart_sta&0xffff;//接收数据长度,&0x ...

  8. C#利用SerialPort类对串口发送接收数据

    1.连接串口方法 SerialPort ser = new SerialPort();//也可以在工具箱中直接拖SerialPort控件 public void OpenCom() {try{//波特 ...

  9. STM32串口中断的4种接收数据的实现方式

    本例程通过PC机的串口调试助手将数据发送至STM32,接收数据后将所接收的数据又发送至PC机. 实例一: void USART1_IRQHandler(u8 GetData) {u8 BackData ...

最新文章

  1. 深度学习领域最常用的10个激活函数,一文详解数学原理及优缺点
  2. 深度学习已经彻底改变了制造业的质量控制,但还不够深入
  3. opencv-python之机器视觉
  4. Hadoop Intellij IDEA 建demo
  5. 平衡二叉树平衡因子_数据结构:平衡二叉树
  6. C++——C++11中的defalut和delete关键字
  7. 计算机科学与技术教师简介,清华大学计算机科学与技术系导师教师师资介绍简介-赵 颖...
  8. L1-008 求整数段和 (10 分)—团体程序设计天梯赛
  9. 《概率统计》知识点(持续更新……)
  10. 运用加密技术保护Java源代码
  11. 从机器学习到深度学习
  12. 最全Pycharm教程(5)——Python快捷键相关设置
  13. ubuntu下的libfetion飞信
  14. Python三大神器之virtual使用
  15. 他捧红了王菲、张学友等近百个巨星,却甘心成为最普通的学佛人…
  16. 学计算机i5九代,九代i5和九代i7区别
  17. Oracle全文索引
  18. redis同城双机房容灾
  19. 小学数学加减法测试软件,儿童数学练习智能出题系统
  20. 全国数学建模C题仿真代码

热门文章

  1. 网上购物软件的测试计划,网上购物平台购物测试计划书
  2. 数据可视化之MATPLOTLIB实战:PLT.POLAR()函数 绘制极线图 (转载)
  3. 差分信号_形象解读差分信号,它比单端信号强在哪?
  4. Java的四种引用——强软弱虚
  5. 鸿蒙卡片-物联网DTU污水液位计卡片
  6. python multiprocessing 保存与打印返回值
  7. python使用logging捕获异常后继续执行函数
  8. 创造自己的专属免费网盘:Nextcloud
  9. 小学教师计算机说课,浙江温州小学计算机教师资格认证说课稿
  10. 家用电器用户行为分析与事件识别_数据产品指北:用户行为分析平台