调用bulktansfer有时候返回-1

bjskyhorse 2013-09-29 10:19:09
我写了一段程序,通过支持USB OTG的设备发送数据,代码如下,但是发现调用bulkTransfer发送数据的时候,第一次执行成功,第二次会返回-1.如果我把设备拔下来再插入android设备的时候,调用bulktransfer就正常,第二次就返回-1.难得这个bulktransfer反复调用还会有什么问题吗?




UsbInterface usbInterface = usbDevice.getInterface(0);
//USBEndpoint为读写数据所需的节点
int count=usbInterface.getEndpointCount();
for (int k = 0; k < count; k++) {
UsbEndpoint localUsbEndpoint = usbInterface.getEndpoint(k);
if (localUsbEndpoint.getDirection() == UsbConstants.USB_DIR_OUT ) {
outEndpoint = localUsbEndpoint;
} else if (localUsbEndpoint.getDirection() == UsbConstants.USB_DIR_IN) {
inEndpoint = localUsbEndpoint;
}
}



connection = usbManager.openDevice(usbDevice);

Log.d("usbDevice", usbDevice.toString());
connection.claimInterface(usbInterface, true);

Log.d("usbInterface", usbInterface.toString());




//发送数据
byte[] byte2 = new byte[8];
int out = connection.bulkTransfer(outEndpoint, bcmd, bcmd.length, 3000);
Log.e("out", "out:"+out);

int inMax = inEndpoint.getMaxPacketSize();
ByteBuffer byteBuffer = ByteBuffer.allocate(inMax);
UsbRequest usbRequest = new UsbRequest();
if (false==usbRequest.initialize(connection, inEndpoint))
{
Log.d("initialize ", "usbRequest initialize fail");
}
else
{
Log.d("initialize ", "usbRequest initialize OK");
}

if (false==usbRequest.queue(byteBuffer, inMax))
{
Log.d("queue ", "usbRequest queue fail");
}
else
{
Log.d("queue ", "usbRequest queue OK");
}

if(connection.requestWait() == usbRequest){
byte[] retData = byteBuffer.array();
for (int i=0;i<8;i++)
{
rand[i]=retData[i];
}
for(Byte byte1 : retData){
System.err.println(byte1);

}
}
...全文
501 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
内容概要:本文围绕“单相逆变器闭环逆变电路PWM模型仿真研究”展开,基于Simulink平台构建单相逆变器的闭环控制系统仿真模型,重点研究PWM调制技术在逆变电路中的应用与实现。文中详细阐述了系统架构设计、电压电流双闭环控制策略的实现原理、控制器参数设计及仿真建模全过程,并通过仿真结果验证了控制方案在动态响应、稳态精度与系统稳定性方面的有效性。同时,文档还涵盖多种电力电子系统典型应用场景,如多类型短路故障仿真(中性点不接地、经小电阻接地、经消弧线圈接地等)、软开关技术、微电网能量管理、MPPT控制等,体现出较强的技术综合性和工程实践价值。; 适合人群:电气工程、自动化、电力电子与新能源等相关专业的高校本科生、研究生、科研人员,以及从事电力系统仿真、逆变器设计与新能源并网技术研发的工程技术人员。; 使用场景及目标:①掌握基于Simulink的单相逆变器闭环控制系统建模与PWM仿真方法;②深入理解双闭环控制、SPWM/SVPWM调制、系统稳定性分析等核心技术原理;③为课程设计、毕业设计、科研项目或实际工程开发提供可复用的仿真模型与技术支持; 阅读建议:建议结合文中仿真模型动手实践,重点掌握PI控制器参数整定、PWM信号生成机制与仿真结果分析方法,同时可延伸学习文档中涉及的软开关、故障仿真、微电网控制等关联技术,以拓展系统级设计能力。

80,490

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧