FileStream异步读写出错,HID设备开发项目

问题描述

现在在做一个HID的设备通讯项目,读什么的都没问题,一旦写一次,设备就退出了,求解publicboolOpenUSBHid(stringdeviceStr){hidDevice=newFileStream(newSafeFileHandle(device,true),FileAccess.ReadWrite,inputReportLength,true);StateObjectso=newStateObject();so.fs=hidDevice;so.recvData=newbyte[inputReportLength];hidDevice.BeginRead(so.recvData,0,so.recvData.Length,newAsyncCallback(ReadCompleted),so);returntrue;}///<summary>///异步读取结束,发出有数据到达事件///</summary>///<paramname="iResult">这里是输入报告的数组</param>privatevoidReadCompleted(IAsyncResultiResult){StateObjectso=(StateObject)iResult.AsyncState;byte[]readBuff=so.recvData;try{hidDevice.EndRead(iResult);//读取结束,如果读取错误就会产生一个异常byte[]reportData=newbyte[readBuff.Length-1];for(inti=1;i<readBuff.Length;i++)reportData[i-1]=readBuff[i];reporte=newreport(readBuff[0],reportData);OnDataReceived(e);//发出数据到达消息if(!isWrite)//BeginAsyncRead();//启动下一次读操作hidDevice.BeginRead(so.recvData,0,so.recvData.Length,newAsyncCallback(ReadCompleted),so);}catch(ArgumentExceptionex){Console.WriteLine(ex);}catch(IOExceptionex)//读写错误,设备已经被移除{Console.WriteLine(ex);EventArgsea=newEventArgs();OnDeviceRemoved(ea);//发出设备移除消息CloseDevice();}voidEndSendCallback(IAsyncResultar){StateObjectso=(StateObject)ar.AsyncState;FileStreamfs=so.fs;fs.EndWrite(ar);isWrite=false;so.recvData=newbyte[inputReportLength];hidDevice.BeginRead(so.recvData,0,so.recvData.Length,newAsyncCallback(ReadCompleted),so);}voidStartSend(byte[]data){byte[]sendData=newbyte[outputReportLength];hidDevice.BeginWrite(data,0,data.Length,newAsyncCallback(EndSendCallback),newStateObject(){recvData=sendData,fs=hidDevice});}

解决方案

解决方案二:
你的读和写好像都是同一个FileStream,主要是你在读完之后没见你关闭流啊,这样肯定出错。
解决方案三:
异步的过程当中怎么关闭流啊,关闭了以后怎么再打开,而且我设置的流属性是读写双向的

时间: 2024-10-31 17:27:12

FileStream异步读写出错,HID设备开发项目的相关文章

服务器部署项目-linux上启动tomcat出错,java项目是编译后的,在本地测试没问题

问题描述 linux上启动tomcat出错,java项目是编译后的,在本地测试没问题 2C org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'returnedMoneyAction': Injection of resource dependencies failed; nested exception is org.springframework.beans.facto

软件开发-安卓,文件夹创建及文件读写出错,希望大神看看

问题描述 安卓,文件夹创建及文件读写出错,希望大神看看 以下是mainActivity: package com.example.dell_pc.myapplication; import android.content.DialogInterface; import android.os.Bundle; import android.os.Environment; import android.support.design.widget.FloatingActionButton; import

webpack3实战(5)打包一个多页、jQuery、图片转base64、压缩混淆、异步模块加载的项目

前注: 文档全文请查看 根目录的文档说明. 如果可以,请给本项目加[Star]和[Fork]持续关注. 有疑义请点击这里,发[Issues]. 实战项目示例目录 0.使用说明 安装: npm install 运行(注,这里不像之前用的 test ,而是改用了 build): npm run build 1.需求列表 基本需求: 引入jQuery(或其他类似库,之所以用 jQuery 是每个前端开发者都理应会 jQuery): 使用 less 作为 css 预处理器: 标准模块化开发: 有异步加载

C# FileStream文件读写详解_C#教程

FileStream对象表示在磁盘或网络路径上指向文件的流.这个类提供了在文件中读写字节的方法,但经常使用StreamReader或StreamWriter执行这些功能.这是因为FileStream类操作的是字节和字节数组,而Stream类操作的是字符数据.字符数据易于使用,但是有些操作,比如随机文件访问(访问文件中间某点的数据),就必须由FileStream对象执行,稍后对此进行介绍. 还有几种方法可以创建FileStream对象.构造函数具有许多不同的重载版本,最简单的构造函数仅仅带有两个参

异步读写数据TcpClient,为啥参数类中的值丢了呢

问题描述 publicvoidmyReadCallBack1(IAsyncResultar){MyDatastate=(MyData)ar.AsyncState;stringIPPort=state.tcp.Client.RemoteEndPoint.ToString();stringip=IPPort.Substring(0,IPPort.IndexOf(":"));intnumberOfBytesRead=state.tcp.GetStream().EndRead(ar);if(n

什么是.Net的异步机制(异步Stream读写)

异步的Stream读/写操作 下面是继承于System.IO.Stream的类 System.IO.Stream Microsoft.JScript.COMCharStream System.IO.BufferedStream System.IO.FileStream System.IO.MemoryStream System.IO.UnmanagedMemoryStream System.Security.Cryptography.CryptoStream System.Printing.Pr

java-Java maven项目部署在服务器打印报表出错

问题描述 Java maven项目部署在服务器打印报表出错 Java maven项目在本地调试打印的报表有数据,但是部署到服务器上可以打印,但是显示为0B 解决方案 检查一下数据库链接,本地测试连的数据库,服务器上是否可以连接上

tomcat解析部署项目出错404

问题描述 tomcat解析部署项目出错404 日志如下,运行其他项目正常,请大神指教 May 19, 2016 7:57:55 AM org.apache.catalina.startup.HostConfig deployWAR SEVERE: Error deploying web application archive /opt/tomcat7/webapps/barServ.war java.lang.IllegalStateException: ContainerBase.addChi

J2ME项目,“在构建期间出错”怎么修正啊

问题描述 J2ME项目老是出现"在构建期间出错"详细信息里是:在构建期间出错.对项目MIDletCMD运行构建器"Preverification"时出错.IllegalManifestEntryKeyorValue"de.schlichtherle.io.ArchiveFileSystem$ArchiveReadOnlyException:Archivefileisread-only!" 解决方案 解决方案二:友情帮顶..............