使用了d12软件包,改成前后台系统.<br /> 由于原来的系统是采用汇编写的,调用D12软件包的时候,函数指针数组(标准设备请求)编译连接以后地址一直错误,导致程序无法运行.<br /> 最后没办法只好用IF() ELSE () 语句完成,工作正常.<br /> 奇怪的是用SWITCH CASE也不正常.<br /><br /> req = ControlData.DeviceRequest.bRequest & USB_REQUEST_MASK;<br /> if (type == USB_STANDARD_REQUEST)<br /> //(*StandardDeviceRequest[req])(); //标准请求处理 //使用汇编模板一直不通过,主要是函数指针数组的值一直不对,采用以下方法实现.<br /><br /> { if (req==0) get_status();<br /> if (req==1) clear_feature();<br /> if (req==2) reserved();<br /> if (req==3) set_feature();<br /> if (req==4) reserved();<br /> if (req==5) set_address();<br /> if (req==6) get_descriptor();<br /> if (req==7) reserved();<br /> if (req==8) get_configuration();<br /> if (req==9) set_configuration();<br /> if (req==10) get_interface();<br /> if (req==11) set_interface();<br /> if (req==12) reserved();<br /> if (req==13) reserved();<br /> if (req==14) reserved();<br /> if (req==15) reserved();<br /><br />/*<br />switch (req) {<br />case 0 : get_status();<br />case 1 : clear_feature();<br />case 3 : set_feature();<br />case 5 : set_address();<br />case 6 : get_descriptor();<br />case 8 : get_configuration();<br />case 9 : set_configuration();<br />case 10: get_interface();<br />case 11: set_interface();<br />default: reserved();<br /> }<br />*/ //采用SWITCH不通过,没发现为什么,暂时使用IF语句.<br /><br />请高手有空帮我分析一下...<br /><br /> |
|