Hi Dan, and all

I wrote a little piece of code to detect the attach of my Palm device by
using UsbServicesListener. But it looks that the listener isn't working.
When I press the sync button of my Palm USB cradle, the monitor thread
dose not print out the information.

Did I correctly implement the UsbServicesListner interface or I
misunderstood the use case?

My code is attached.

Thanks a lot!
-JoeyS

import java.io.*;
import java.util.*;

import javax.usb.*;
import javax.usb.event.*;
import javax.usb.util.*;

public class testUSB {
        UsbServices services = null;
        UsbServicesMonThread monitor = null;
	

        public void initialize() {
            if (services == null) {
	        try {
	            services = UsbHostManager.getUsbServices();
	        } catch (UsbException uE) {
	            throw new RuntimeException("Error: " + uE.getMessage());
	        } catch (SecurityException sE) {
	            throw new RuntimeException("Error: " + sE.getMessage());
	        }
            }

            if (monitor == null) {
                monitor = new UsbServicesMonThread();
            }

            if (services != null && monitor != null) {
	        services.addUsbServicesListener(monitor);
                monitor.start();
	    }
	}

	class UsbServicesMonThread extends Thread implements UsbServicesListener {
            public void usbDeviceAttached(UsbServicesEvent event) {
                System.out.println("Device Attached!");
	        UsbDevice device = event.getUsbDevice();
	        UsbDeviceDescriptor deviceDesc = device.getUsbDeviceDescriptor();

	        if ((deviceDesc.idProduct() == 0x03) && (deviceDesc.idVendor() == 0x830)) {
	    	/* do handshaking packets here */
	    	System.out.println("Find Palm m515!");
	        }
	    }

	    public void usbDeviceDetached(UsbServicesEvent event) {
	        System.out.println("Device Detached");
            }

            public void run() {
                System.out.println("Start to run Monitor");
                for (;;);
            }
        }

        public static void main(String[] args) {
            testUSB myTest = new testUSB();
            myTest.initialize();
            System.out.println("Wait for the event being fired");
            for (;;);
       }
}

	
	        
	        

Reply via email to