i've tried all solutions, but things dosen't change.
This is the the pice C of code on usb device handling EP1 (Cypres FX2LP):
...
if(!(EP1OUTCS & bmBIT1))
{
char cmdbuff[10];
int cmdsize=0;
int i;
int bitcount= EP1OUTBC;
BOOL stc=FALSE;
BOOL done=FALSE;
int c=0;
while ((c<bitcount) && cmdsize<10 && (!(done)))
{
if ((stc) && (EP1OUTBUF[c]!=0x03))
cmdbuff[cmdsize++]=EP1OUTBUF[c];
if (EP1OUTBUF[c]==0x02) stc=TRUE;
if (EP1OUTBUF[c]==0x03) done=TRUE;
c++;
}
if (cmdsize>0)
{
if ((cmdbuff[0]=='S') && (cmdbuff[1]=='N'))
{
EP1INBUF[0]=0x02;
for (i=0;i<9;i++)
{
EP1INBUF[1+i]=_SNO[i];
}
EP1INBUF[10]=0x03;
EP1INBC=11;
SYNCDELAY;
} else
{
EP1INBUF[0]=0x02;
EP1INBUF[1]=cmdbuff[0];
EP1INBUF[2]=cmdbuff[1];
EP1INBUF[3]=0x03;
EP1INBC=4;
SYNCDELAY;
}
}
EP1OUTBC = 0x40;
SYNCDELAY;
}
....
the device can handle garbage code, looking for a specific STX/ETX
encapsulated text.
I fear that nothing is being sent to device, dued by the fact that im
using FC7+SELinux(Disabled), anyone have never tried javax.usb on FC7 ?
Btw can you tell me what is the USB monitor you are using?
At the moment i'm using the device with a C#/Windows solution, but i
really wants to switch to a Java/Linux one.
Thanks in advice,
Emanuele Maiarelli.
> I don't know specifically why you never get data from your device, it
> probably is actually not sending anything. If you think it is, you
> should enable the Linux usb monitor to see if anything is coming in
> from your device.
>
> As far as your code, it looks basically ok, except for this part:
> byte outdata[]=new byte[outmaxPs];
> outdata[0]=2;
> outdata[1]='S';
> outdata[2]='N';
> outdata[3]=3;
> wrp.setLength(4);
> wrp.setData(outdata);
>
> that is not doing what you want it to do. You set the data length to
> 4 but the call to setData resets it to outmaxPs. Read the API javadoc
> interface specification for UsbIrp.setData():
> http://javax-usb.org/jdoc/javax/usb/UsbIrp.html#setData(byte[])
>
>
> You instead should do either this:
> byte outdata[]=new byte[4];
> outdata[0]=2;
> outdata[1]='S';
> outdata[2]='N';
> outdata[3]=3;
> wrp.setData(outdata);
>
> or this:
> byte outdata[]=new byte[outmaxPs];
> outdata[0]=2;
> outdata[1]='S';
> outdata[2]='N';
> outdata[3]=3;
> wrp.setData(outdata, 0, 4);
>
> or, this:
> byte outdata[]=new byte[outmaxPs];
> outdata[0]=2;
> outdata[1]='S';
> outdata[2]='N';
> outdata[3]=3;
> wrp.setData(outdata);
> wrp.setLength(4);
>
> It's possible that is causing your problem, since your device is
> getting extra garbage bytes sent to it which may confuse it.
>
>
> On 8/27/07, Emanuele Maiarelli <[EMAIL PROTECTED]> wrote:
>> im running the code below, what happen is that out packet seems to work(
>> it returns from wp.asyncSubmit(wrp); wrp.waitUntilComplete(); // i've
>> tried
>> wp.asyncSubmit(wrp) before) but unless wp.abortAllSubmissions(); i
>> got
>> exception trying wp.close();).
>> The real problem is that i cannot recive data from the IN endpoint and
>> rrp.waitUntilComplete(); waits forever.
>>
>> I've tested the USB protocol and the data sent in ep1 (OUT) are correct,
>> in anycase i'll get a answer for errors.
>>
>> Thanks in advice,
>>
>> import java.util.Hashtable;
>> import java.util.Iterator;
>> import java.util.List;
>> import javax.usb.UsbDevice;
>> import javax.usb.UsbEndpoint;
>> import javax.usb.UsbHub;
>> import javax.usb.UsbInterface;
>> import javax.usb.UsbIrp;
>> import javax.usb.UsbPipe;
>> import javax.usb.util.UsbUtil;
>>
>>
>> /**
>> *
>> * @author root
>> */
>> public class DevScan extends javax.swing.JInternalFrame implements
>> FmkChild
>> {
>> static final int cmdEPw=0x01;
>> static final int cmdEPr=0x81;
>>
>> FmkFather Father;
>> /** Creates new form DevScan */
>> public DevScan() {
>> initComponents();
>> }
>>
>> public static String getID(UsbDevice d) throws Exception
>> {
>> String SID=null;
>> UsbEndpoint wep=null;
>>
>> UsbEndpoint rep=null;
>> List intf=d.getActiveUsbConfiguration().getUsbInterfaces();
>> for (int i=0;i<intf.size();i++)
>> {
>> UsbInterface interf=(UsbInterface) intf.get(i);
>> List eps=interf.getUsbEndpoints();
>> for (int j=0;j<eps.size();j++)
>> {
>> UsbEndpoint ep = (UsbEndpoint) eps.get(j);
>> int
>> epid=((int)(ep.getUsbEndpointDescriptor().bEndpointAddress()
>> & 0xFF));
>> if (epid == DevScan.cmdEPw)
>> {
>> wep=ep;
>> }
>> if (epid == DevScan.cmdEPr)
>> {
>> rep=ep;
>> }
>>
>> }
>> }
>> if ((wep!=null) && (rep!=null))
>> {
>> int outmaxPs =
>> wep.getUsbEndpointDescriptor().wMaxPacketSize();
>> int inmaxPs=
>> rep.getUsbEndpointDescriptor().wMaxPacketSize();
>> wep.getUsbInterface().claim();
>>
>> //rep.getUsbInterface().claim();
>>
>> System.out.println(wep.getUsbEndpointDescriptor().bEndpointAddress());
>>
>> System.out.println(rep.getUsbEndpointDescriptor().bEndpointAddress());
>>
>> UsbPipe wp=wep.getUsbPipe();
>> UsbIrp wrp=wp.createUsbIrp();
>>
>> UsbPipe rp=rep.getUsbPipe();
>>
>>
>> byte indata[]=new byte[inmaxPs];
>>
>> rp.open();
>> UsbIrp rrp=rp.createUsbIrp();
>> rrp.setData(indata);
>> rrp.setUsbException(null);
>>
>> rp.asyncSubmit(rrp);
>>
>>
>> wp.open();
>>
>> byte outdata[]=new byte[outmaxPs];
>> outdata[0]=2;
>> outdata[1]='S';
>> outdata[2]='N';
>> outdata[3]=3;
>> wrp.setLength(4);
>> wrp.setData(outdata);
>> wrp.setUsbException(null);
>>
>> wp.asyncSubmit(wrp);
>>
>> wrp.waitUntilComplete();
>> wrp.setComplete(false);
>> wp.abortAllSubmissions();
>> wp.close();
>> System.out.println("invio");
>>
>> rrp.waitUntilComplete();
>> rp.abortAllSubmissions();
>> rp.close();
>> wep.getUsbInterface().release();
>> rep.getUsbInterface().release();
>> char[] ss=new char[rrp.getLength()];
>> for (int i=0;i<ss.length;i++)
>> {
>> System.out.println(UsbUtil.toHexString(indata[i]));
>>
>> }
>> }
>> return SID;
>> }
>>
>> public static void FillUsbTable(Hashtable t,UsbHub hub) throws
>> Exception
>> {
>>
>> List usbdevs=hub.getAttachedUsbDevices();
>> Iterator it=usbdevs.iterator();
>> t.clear();
>> while (it.hasNext())
>> {
>> UsbDevice d=(UsbDevice) it.next();
>> if (d.isUsbHub())
>> {
>> DevScan.FillUsbTable(t,(UsbHub)d);
>> } else
>> {
>> if(d.getProductString().equals("MY-USB"))
>> {
>> DevScan.getID(d);
>> }
>> }
>> }
>> }
>>
>>
>> --
>> Emanuele Maiarelli
>>
>>
>>
>>
>>
>>
>> -------------------------------------------------------------------------
>> This SF.net email is sponsored by: Splunk Inc.
>> Still grepping through log files to find problems? Stop.
>> Now Search log events and configuration files using AJAX and a browser.
>> Download your FREE copy of Splunk now >> http://get.splunk.com/
>> _______________________________________________
>> javax-usb-devel mailing list
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/javax-usb-devel
>>
>
--
Emanuele Maiarelli
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
javax-usb-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/javax-usb-devel