vs中readfile的作用_WriteFile()和ReadFile()异步无法写入或读取
我试图使用writefile和readfile函数通过串行端口连接发送和接收字符串。我必须异步执行此操作,因为要读取的字节数将始终不同,并且readfile只会挂起或阻塞,直到获得正确的字节数。现在我试图异步执行此操作,因此我的writefile函数将不会发送任何数据,并且我的readfile函数似乎会被跳过,因为下一行开始执行它,而不读取任何字符。不知道这是我的Overlapped结构还是我的超时问题。但我在这一刻卡住了。WriteFile()和ReadFile()异步无法写入或读取
超时
void Serial::OpenPortRead()
{
HANDLE sSerial = CreateFile(L"COM3",GENERIC_READ|GENERIC_WRITE,0,0,OPEN_EXISTING,FILE_FLAG_OVERLAPPED,0);
//Timeout Settings
COMMTIMEOUTS CommTimeouts;
GetCommTimeouts(sSerial, &CommTimeouts);
CommTimeouts.ReadIntervalTimeout = 5000;
CommTimeouts.ReadTotalTimeoutMultiplier = 2;
CommTimeouts.ReadTotalTimeoutConstant = 10;
CommTimeouts.WriteTotalTimeoutMultiplier = 50;
CommTimeouts.WriteTotalTimeoutConstant = 500;
//Port Settings
DCB dcbSerialParams = {0};
dcbSerialParams.DCBlength=sizeof(dcbSerialParams);
dcbSerialParams.BaudRate=CBR_19200;
dcbSerialParams.ByteSize=8;
dcbSerialParams.StopBits=ONESTOPBIT;
dcbSerialParams.Parity=NOPARITY;
SetCommState(sSerial,&dcbSerialParams);//Apply Settings to Handle
}
写文件功能
void Serial::WritePort(CString buffer)
{
DWORD bytes;//pointer to hold number of bytes written
USES_CONVERSION;
CW2A buf((LPCWSTR)buffer);//Convert unicode to ascii
OpenPortRead();
OVERLAPPED overlapped_structure;
memset(&overlapped_structure, 0, sizeof(overlapped_structure));
overlapped_structure.Offset = 0;
overlapped_structure.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
WriteFile(sSerial, buf,strlen(buf),&bytes,&overlapped_structure);//Send string
}
读取文件功能
int Serial::ReadPort(CString buf){
OpenPortRead();// Open Serial Communication for reading
const int buffer_size = 10;
char buffer[10];//buffer to hold recieved string
memset (buffer, 0, buffer_size * sizeof (char));
int n, num,iTemp,i=0;
OVERLAPPED overlapped_structure;
memset(&overlapped_structure, 0, sizeof(overlapped_structure));
overlapped_structure.Offset = 0;
overlapped_structure.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
DWORD bytesRead;//pointer to number bytes read
ReadFile(sSerial,&buffer,buffer_size,&bytesRead,&overlapped_structure);// begin read
//Used this function because return would be filled with extra raw data characters
buffer[n] = StringLength(buffer, &n);//find length of string returned
num = n;
+0
在WriteFile/ReadFile之后,您需要等待重叠事件。 –
2013-02-15 15:09:27
+0
感谢您的回复,但可能是一个帮助我的例子 –
2013-02-15 15:13:21
+1
重叠I/O的要点是它会在*稍后*完成,并且您的程序可以在正在进行时继续运行。等待它完全消除了首先使用它的要点。无论您的问题是什么,重叠的I/O都不是答案。 –
2013-02-15 15:22:11
vs中readfile的作用_WriteFile()和ReadFile()异步无法写入或读取相关推荐
- java中打开特定编码的文本_指定编码写入和读取文件内容
为了完美解决你的问题,特分享我自己的FileKit.java工具给你. 你只需要使用createFile方法,传入一行一个的List对象就可以生成了,目录不存在这些都判断了,只要你的目录可写就行了. ...
- 在HTML中标记tel是什么意思,'tel'属性在AEM 6.1的经典UI中富文本编辑器中的锚标记的href中不起作用...
我正在使用AEM 6.1 SP2,我试图在定位标记的href中启用'tel'属性以使点击调用功能性工作.我已经添加了'htmlRules'节点 ,并将htmlRules节点下的节点与'protocol ...
- VMware虚拟机文件夹中各文件作用详解
VMware虚拟机文件夹中各文件作用详解 虚拟机的文件管理由VMware Workstation来执行. 一个虚拟机一般以一系列文件的形式储存在宿主机中, 这些文件一般在由workstation为虚拟 ...
- Science:亚硝酸盐氧化细菌在黑暗海洋中的主要作用
文章目录 亚硝酸盐氧化细菌在黑暗海洋中的主要作用 写在前面 摘要 热心肠日报 背景 结果 图1 非全长16S rRNA基因序列的系统发育树 图2 通过募集宏基因组片段的方法确定亚硝酸盐氧化细菌单扩增基 ...
- 丰度决定了细菌在复杂群落中的功能作用
本文转载自"微生态笔记",已获授权 标题:Abundance determines the functional role of bacterial phylotypes in c ...
- tensorflow2.0中valid_data的作用是在训练的过程对对比训练数据与测试数据的准确率 损失率,便于判断模型的训练效果:是过拟合还是欠拟合(过拟合)
tensorflow2.0中valid_data的作用是在训练的过程对对比训练数据与测试数据的准确率,便于判断模型的训练效果:是过拟合还是欠拟合 过拟合:训练数据的准确率较高而测试数据的准确率较低 欠 ...
- C#中构造函数的作用
C#中构造函数的作用 共同点: 都是实例化对象,初始化数据的 默认构造是说所有的类都从祖先object那继承了空参的构造方法,你不写与写空参构造都存在,而有参数的构造一般是自己写的,写就有不写就没有, ...
- python里dir是什么意思_python中dir什么作用
python中dir的作用是:1.dir函数传入数据类型返回该数据类型的所有内置方法:2.dir函数传入模块名返回该模块的所有属性和方法. dir() 内置函数的作用 python 内置方法有很多,无 ...
- 浅析SEO优化中标签的作用?
目前,已经有很多企业网站有专门的优化人员来进行SEO优化,在网站SEO优化的过程中会使用到很多标签来利于搜索引擎的读取,提升网站的排名和权重.就以大连网龙科技旗下产品云霸屏为例来讲,云霸屏作为一款全网 ...
最新文章
- python flask 部署_如何进行Python Flask项目的部署?
- 使用t-SNE算法对数据进行降维并可视化实战,与KernalPCA、LLE对比降维可视化的效果
- hdu1753大明A+B
- 大学计算机课程操作文档,计算机操作系统大学课程.pptx
- aws fargate_借助Fargate和EKS,AWS甚至可以实现Cloud-ier和Kuberneties-ier
- SQL server 2012序列号 注册码 z
- NOIP201501金币
- 0610PHP基础:运算符、字符串处理函数、解析符号、数组
- Sql server在另一台服务器,在Visual Studio 中没问题,IIS中 提示“在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。。。。”...
- scrapy生成json中文为ASCII码解决
- Android Studio 修改项目包名(最后一级)
- 汉字,五笔,拼音的转换
- tensorflow之读取jpg图像保存为tfrecord再读取
- 直角三角形 纪中 1385 数学_斜率 英文题解
- 在Visual Studio 2010中创建多项目(解决方案)模板【一】
- 大学生静态HTML鲜花网页设计作品 DIV布局网上鲜花介绍网页模板代码 DW花店网站制作成品 web网页制作与实现
- MYSQL临时表,大数据查询优化
- 【Java】运用泽勒一致性计算某天是星期几
- IDEA快捷键设置,选择Eclipse风格的快捷键,自动补全快捷键,关闭当前窗口快捷键Ctrl+W 自动导入设置,引入外
- 参数等效模型可以用于_盘式永磁涡流驱动器的电磁-温度耦合解析模型
热门文章
- 六、应用层(五)万维网(www)
- 轻松一刻,Linux 娱乐命令整理
- 第二章 第四节:替换和切割
- Flutter应用名称语言国际化
- 父亲节快到了,几句父亲的话留下
- python 字符视频_Python20行代码实现视频字符化
- java 解决微信配置服务器时出现的token验证失败问题
- 深入理解操作系统(10)第四章:处理器体系结构(2)Y86-64的顺序实现(包括:SEQ/指令的各阶段操作:取指,解码,执行,访存,回写,更新PC/序列指令/硬件结构/时序/阶段的实现/SEQ+)
- SSL 实例 centos6.3
- js 30分钟倒计时