tester for HID devices - usb

I have built my own USB HID device. I want to check, if it is working correctly.
I want to check the descriptors sent by the device, display input reports and send output reports. What tools are capable of this task and runs on Windows 7 64 bit?

On a day-to-day basis I use USBlyzer. It works well on Windows 7 64-bit.
As far as free tools go, the Windows DDK includes (in C:\winddk\7600.16385.1\tools\avstream\amd64) a tool called UVCview.exe ("USB device viewer") that shows at least some descriptor information.
You might also try Wireshark, but I admit, I only use it for network and can't speak to the quality of its USB capture.

(even though it's an old post) - here is a convenient and free solution:
Our Docklight Scripting software can test custom USB HID devices in the free (evaluation) download already, no time limit. Tested both on Windows 7 and Windows 10. You can access your device via the chosen VID and PID, display input report data and send output reports, even with variable output report ids.

Related

How to create a Virtual PDF ESC/POS Printer to make some tests while programming?

I need to send the tickets directly from the Point of Sale to an ESC/POS printer.
I was wondering if the only chance to print in a ESC/POS printer is to use the PosBox to print tickets directly from Odoo or if there is another way.
The PosBox is a little hardware box based on a Raspberry-Pi that will handle all the peripherals' drivers and setup in a very easy way
So my questions are:
How could I create a Virtual ESC/POS Printer? I would like to use something similar to the Virtual PDF printer, in order to print the tickets to PDF and make some test while I am programming. Is that possible?
What is there in the PosBox image ("Raspberry Pi Image") to make it work everything out of the box?
If I have the ESC/POS printer correctly installed and connected to a computer with Windows System. The Odoo Server is accessed remotely from this computer. I have installed the hw_escpos module. Could this work or the use of the PosBox is mandatory?
I am working with PosBox so as per me if you are managing odoo remotely and your printer is attched with some our system which is not direcly connected to you odoo server so in this case you need some extra device to bridge your harware(printer) and software(odoo). So here PosBox comes in picture. Or any other device if they can compatible with both system so it is also useful. In case of your answer:
1) If you are programming and you want to check printed ticket's PDF then you can do it via your xml template file. From that you can pass arguments under <report> tag.
2) In PosBox we need to insert an image i.e. OS image so that this device can work as your CPU of your system. In that image there are some h/w modules of odoo. i.e. hw_escpos, hw_proxy, hw_scale etc. kind of hardware modules are there. Also apart from this one odoo instance is running on from that device so you can manage all data from that link.
3) If all things are connected in a single system and odoo is working remotely then no need to you PosBox to print ticket. PosBox only helpful when your printer is attached remotely in any other place and odoo is working to any other system and after this you are accessing odoo to any 3rd system and you want to print ticket where printer is connected any else system so then and then only need to use of PosBox.

Finding USB Devices from VB.net

My background is that I have been supporting a Vb5 application which controls my customers equipment in real time. He is now developing a new control board which will be connected to the PC via USB.
As I understand it connecting the device will generate a Com port. At the same time we will upgrade to VB.net, which is new to me.
I have Visual studio 2015 Community edition. I have written a routine using GetPortnames to ascertain how many com ports there are and what numbers (COM4, etc) they have.
How do I find what USB devices, if any, are attached to the com ports together with any identifying data of the device?
Already answered, next time please google first.
The key word that I type in google was: vb usb
Link

Error running NI-DAQmx ANSI C example in Windows 7 virtual machine

I am running a Windows 7 guest system with an Ubuntu 14 host, using VirtualBox, and have run into a problem running even the simplest examples provided by National Instruments, using the ANSI C API for NI-DAQmx.
The first time the DAQ Device is powered on, I can run a single measurement, and after that, any other measurement displays the following error message:
Attempted to read samples that are no longer available.
The requested sample was previously available, but has since been overwritten.
Increasing the buffer size, reading the data more frequently, or specifying
a fixed number of samples to read instead of reading all available samples
might correct the problem.
Property: DAQmx_Read_RelativeTo
Corresponding Value: DAQmx_Val_CurrReadPos
Property: DAQmx_Read_Offset
Corresponding Value: 0
Task Name: _unamedTask(0)
Status Code: -200279
In order to be able to start a new measurement, I have to restart the DAQ device, probably in order to clear any internal buffers that are being overridden.
I am interested in running a basic continuous voltage measurement using a callback function. (The ContAcq_IntClk example provided by NI)
The exact same configuration, same version of NI-DAQmx(9.7.5), and running on Visual Studio 2012, runs smoothly on a machine running Windows 7 directly.
I suspect the problem is with the internal buffer being somehow messed up because of the connection with the Virtual Machine, but can't figure out an elegant solution to fix it.
The device I am using is NI USB-6289.
FIXED:
VirtualBox seems to have compatibility issues with NI USB devices. It appears to work, but it's unpredictable.
VMWare works much better. Switched to VMWare Player and now works flawless.

Creating a computer ID using Mono

I develop a few tools in C# using the .Net framework and I am considering the move to Mono. Based on the compatibility analyzer tool (MOMA), the only compatibility issue is the licensing code:
I use Window's serial number and a few other things to generate a computer ID which I then use to generate and manage my licenses.
Obviously, Windows will not be available on Linux or Mac, so I need another way to generate a computer ID.
What can I use in mono to create a reasonably reliable computer ID?
Use a MAC Address:
Get MAC Address in linux using mono
That should be unique to a given network interface, which would uniquely identify the machine.
Also, see this thread discussing the pitfalls and issues related to DRM in mono.
You can use a combination of either CPUID and a hard drive serial number.
As for your code, there is not going to be an elegant way to do this with a one-liner. You will have to check which platform you are running on via Environment.OSVersion. And then based on that, branch your code to do system-specific access. For example, to get CPUID/hdd serial number, use a WMI query; or parse the output of hdparm -I /dev/hda and go from there.
You could use a portion of how Microsoft checked hardware for Windows XP activation. They checked 10 items
Display Adapter
SCSI Adapter
IDE Adapter (effectively the motherboard)
Network Adapter (NIC) and its MAC Address
RAM Amount Range (i.e., 0-64mb, 64-128mb, etc.)
Processor Type
Processor Serial Number
Hard Drive Device
Hard Drive Volume Serial Number (VSN)
CD-ROM / CD-RW / DVD-ROM
When XP was (re)installed/activated it'd contact their servers and if 7 or more of the above items were unchanged it would activate without the need to speak with anyone.
I, personally, would recommend against using the MAC address. As you mentioned, it can be easily changed. Additionally, most machines have two or more network cards now (wired and wireless). It gets worse with virtualization as the MAC can be changed even more easily than the physical one can (do you license differently for virtual environments?)
Another option, instead of checking all 10 hardware components, is to use the UUID of the root file system. The downside of this, is that if the drive ever has issues, the license needs to be reacquired.
sudo blkid
/dev/sda1: TYPE="ntfs" UUID="72C0DE8EC0DE57C5" LABEL="windows"
/dev/sda2: UUID="30fcb748-ad1e-4228-af2f-951e8e7b56df" SEC_TYPE="ext2" TYPE="ext3"
/dev/sda5: TYPE="swap" UUID="8c4e69f8-5074-42c0-8134-0b2429c4c02c"
/dev/sdb1: SEC_TYPE="msdos" UUID="4848-E35A" TYPE="vfat"

Communication beetwen Windows CE and Windows XP applications

I have a desktop (XP) application and a CE app (Motorola MC9090) and I want to Scan few Barcodes with Motorola and then send the text to the application on PC using WiFi. I have no idea how to do it - any suggestions? (VB.NET preferred)
Think about it logically, and try simplifying this a little;
If you want to do it over WiFi, you're going to need "something" on the device to scan and send, as well as something on a "server" to receive, such as a webservice; so you actually need to write two things.
A simple option would be to put together a simple ASP.Net webservice for receiving the data (and processing it, dealing with authentication, etc.).
You can then write an application for your CE device that interacts with said webservice and handles the user interaction (most scanners will fake key presses into the control with focus). Bear in mind, that you might also need to cope with situations when the WiFi is out of range.
If you're targetting Windows CE, you cannot do it in Visual Studio 2010 or later (as far as I'm aware), so you may need to get hold of VS 2008 (to maximise your support lifecycle)