hid4java icon indicating copy to clipboard operation
hid4java copied to clipboard

Event hidDataReceived not working.

Open cracktichi opened this issue 2 years ago • 1 comments

Hello all,

I want to get data from HID device so i used event hidDataReceived from class https://github.com/gary-rowe/hid4java/blob/develop/src/main/java/org/hid4java/HidServicesListener.java. But when i build this lib from this github (Not using veriosn 0.7.0 from Maven because it dont have above event), hidDataReceived not working on both Window 11 x64 and Linux x64(Raspberrypi 4). I'm tested device on Linux and other event working perfect(hidDeviceAttached, hidDeviceDetached). I'm checked comunicate of HID device (Barcode scanner) on Linux at path dev/input/by-id and i had received data from device. So make sure this is not device issue. Below is my implement:

public abstract class BarcodeDeviceService implements HidServicesListener {
	private HidServices hidServices;
	/**
	 * Constructor
	 */
	public BarcodeDeviceService() {
		// Configure to use custom specification
		HidServicesSpecification hidServicesSpecification = new HidServicesSpecification();

		// Use the v0.7.0 manual start feature to get immediate attach events
		hidServicesSpecification.setAutoStart(false);

		// Get HID services using custom specification
		hidServices = HidManager.getHidServices(hidServicesSpecification);
		hidServices.addHidServicesListener(this);

		// Manually start the services to get attachment event
		hidServices.start();
	}

	@Override
	public void hidDeviceAttached(HidServicesEvent event) {
		System.out.printf("BarcodeDeviceService hidDevice Attached");
	}

	@Override
	public void hidDeviceDetached(HidServicesEvent event) {
		System.out.printf("BarcodeDeviceService hidDevice Detached");
	}

	@Override
	public void hidFailure(HidServicesEvent event) {
		System.out.printf("BarcodeDeviceService hid Failure");
	}
	
	@Override
	public void hidDataReceived(HidServicesEvent event) {
		
		System.out.printf("BarcodeDeviceService hidDataReceived:%n");
		byte[] dataReceived = event.getDataReceived();
		System.out.printf("< [%02x]:", dataReceived.length);
		for (byte b : dataReceived) {
			System.out.printf(" %02x", b);
		}
	}

Could you please help me this issue. Thank you in advance.

cracktichi avatar Aug 08 '22 02:08 cracktichi

If you need data from HID device, you can implement this via int read(byte[] data) when your target device is attached and open

permiakover avatar Sep 14 '22 13:09 permiakover

Given that this has gone quiet I'll mark it as closed. Thank you @permiakover for providing some help here.

gary-rowe avatar Dec 05 '22 10:12 gary-rowe