win32 串口阻塞的方式发送接收数据
参考博文
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 串口阻塞的方式发送接收数据相关推荐
- 求android 中串口的发送接收数据代码
RT,求高手帮忙! 就是 /dev/ttyS0 和/dev/ttyS1 两个设备的通信问题.. 同求~ 这个是不是需要串口驱动啊?最近正在搞这个串口通信的案子,头疼 同样也没有搞出来,老是报:不能扫描 ...
- 安卓Socket连接实现连接实现发送接收数据,openwrt wifi转串口连接单片机实现控制...
安卓Socket连接实现连接实现发送接收数据,openwrt wifi转串口连接单片机实现控制 socket 连接采用流的方式进行发送接收数据,采用thread线程的方式. 什么是线程? 详细代码介 ...
- Android发送接收WiFi,安卓Socket连接实现连接实现发送接收数据,openwrt wifi转串口连接单片机实现控制,安卓openwrt...
安卓Socket连接实现连接实现发送接收数据,openwrt wifi转串口连接单片机实现控制,安卓openwrt 安卓Socket连接实现连接实现发送接收数据,openwrt wifi转串口连接单片 ...
- 使用c#实现tcp的连接和发送接收数据
最近有个小项目,需要调用装置的录波数据,使用tcp模式,在这里整理了下如何使用c#实现tcp连接并实现发送接收数据,分享出来. 我这里使用的tcpclient ,终端是tcpserver模式. 首先自 ...
- Python3树莓派连接阿里云物联网设备发送接收数据
Python3连接阿里云物联网设备发送接收数据(树莓派) 阿里云物联网IOT 代码部分 库文件 Windows下安装环境 树莓派安装环境 可能遇到的错误 代码 效果展示 阿里云物联网IOT 首先,准备 ...
- 微信小程序连接蓝牙 并分包发送 接收数据完整版
微信小程序连接蓝牙并分包发送接收数据 初始化蓝牙 初始化蓝牙设备 搜索蓝牙设备 连接蓝牙设备 获取蓝牙设备所有service(支持读写的) 向蓝牙发送数据 断开蓝牙 停止搜索蓝牙 转16进制 Arra ...
- usart 串口的发送-接收数据(正点改编)
功能:上位机发送给mcu,mcu原原本本发送给上位机**main关键代码**while(1){if(flag==1){len=usart_sta&0xffff;//接收数据长度,&0x ...
- C#利用SerialPort类对串口发送接收数据
1.连接串口方法 SerialPort ser = new SerialPort();//也可以在工具箱中直接拖SerialPort控件 public void OpenCom() {try{//波特 ...
- STM32串口中断的4种接收数据的实现方式
本例程通过PC机的串口调试助手将数据发送至STM32,接收数据后将所接收的数据又发送至PC机. 实例一: void USART1_IRQHandler(u8 GetData) {u8 BackData ...
最新文章
- 深度学习领域最常用的10个激活函数,一文详解数学原理及优缺点
- 深度学习已经彻底改变了制造业的质量控制,但还不够深入
- opencv-python之机器视觉
- Hadoop Intellij IDEA 建demo
- 平衡二叉树平衡因子_数据结构:平衡二叉树
- C++——C++11中的defalut和delete关键字
- 计算机科学与技术教师简介,清华大学计算机科学与技术系导师教师师资介绍简介-赵 颖...
- L1-008 求整数段和 (10 分)—团体程序设计天梯赛
- 《概率统计》知识点(持续更新……)
- 运用加密技术保护Java源代码
- 从机器学习到深度学习
- 最全Pycharm教程(5)——Python快捷键相关设置
- ubuntu下的libfetion飞信
- Python三大神器之virtual使用
- 他捧红了王菲、张学友等近百个巨星,却甘心成为最普通的学佛人…
- 学计算机i5九代,九代i5和九代i7区别
- Oracle全文索引
- redis同城双机房容灾
- 小学数学加减法测试软件,儿童数学练习智能出题系统
- 全国数学建模C题仿真代码
热门文章
- 网上购物软件的测试计划,网上购物平台购物测试计划书
- 数据可视化之MATPLOTLIB实战:PLT.POLAR()函数 绘制极线图 (转载)
- 差分信号_形象解读差分信号,它比单端信号强在哪?
- Java的四种引用——强软弱虚
- 鸿蒙卡片-物联网DTU污水液位计卡片
- python multiprocessing 保存与打印返回值
- python使用logging捕获异常后继续执行函数
- 创造自己的专属免费网盘:Nextcloud
- 小学教师计算机说课,浙江温州小学计算机教师资格认证说课稿
- 家用电器用户行为分析与事件识别_数据产品指北:用户行为分析平台