Testing methodology for USB driver - testing

We are developing an windows application which interacts with an USB device for data. The device driver is obtained from an third party.
Our application works well in all systems except two to three Windows 8 PC.
Problem seen in those 3 pcs were :
1) Driver for the Device is installed and found in device manager but couldn't initialize the USB device (During initialization, we create an interface for additional end point)
These kind of problem is not reproducible in our testing PC but only in our 3 customer PC (not all PCs!)
We cannot test our application in all PCs , tablets, (with windows 7, 8 etc..) in the market to ensure that it works.
So,My question here is, what test strategy (setup) should we follow to confirm that the our application works in all PCs tablets with windows version.
Any ideas?
#DavidGrayson : Yes you are correct, may be i'll give you more details: What type of PC should i use to test the driver... should i setup PCs with different USB Controllers? How about Windows driver kit that comes along Visual studio? Can we test third party driver with it?

Related

Allen Bradley Connected Components RS Linx USB Connection

I am working with Allen Bradley's Connected Component Workbench to program a Micro 830 Controller. I'm having an issue when I try to connect to the controller via USB. The USB never comes up in RSLinx even though Windows Device Manager says the driver is installed and working correctly. I am running Connected Components Workbench version 10.01.00 on a Windows 10 machine plugged directly into the Controller via USB and I know that I can connect to the PLC with another machine in the office. Is there still something I'm missing?
I had the same problem. Thing to try:
1) Most of Allen Bradley's equipment only work on a USB 2.0 or below. My computer has both 2.0 and 3.0 ports. Only 2.0 ports will talk to a 830 PLC.
2) Flow this guide:
https://theautomationblog.com/setup-micro800-usb-comms/
3) Download and install the newest version of RsLinx https://compatibility.rockwellautomation.com/Pages/MultiProductFindDownloads.aspx?crumb=112&refSoft=1&toggleState=&versions=51543
4) Call you local AB sales office and ask for help. If you stop by they will help you for free. All sales office have support people that help.

Does an HID device need libusbx Windows backend driver on Windows 7?

Current status:
I have developed some USB based device and have developed a driver on Linux using libusb. I am now porting the driver to Windows 7.
Device details
My device is a touch screen with two interfaces, one for the OS to communicate with the touch screen and the other for some vendor communication.
Old Stack Overflow post:
libusb_open returns 'LIBUSB_ERROR_NOT_SUPPORTED' on Windows 7
Here I was stuck with a problem that my libusb_open returned with an error. I learnt that I need Windows backend drivers. But I also learnt that it is for devices which are not recognised by the operating system.
Action taken
I tried installing a driver for my device using the Zadig tool, but I am not able to override the driver used by the OS with the new driver.
Do i really need a libusbx Windows backend driver for a device which has been identified and working well on windows 7? (The touch screen works perfect as a multitouch device)
What is the way forward as the device just can't be opened?
If you really use libusbx then you should be able to at least open the device for sure.
Make sure you did not mess the default HID driver for your device while playing with Zadig tool. Go to Control Panel/Device Manager/Hid section (is your device listed there?), search your device and remove the driver. Then try again.

Is it possible to run my Windows 8 C/go/html program on a tablet

I am writing a program in Go/C for the backend and JavaScript/HTML for the front-end. It is not a web application but it runs a local server which sends data to the client(firefox). The client then displays this data and sends any user interaction back to the server using websockets.
The backend is written partially in C since I have to dynamically load a 32 bit DLL file to communicate with my hardware. The hardware (for which I have aquired both 64 and 32 bit drivers) sends its data via USB to my backend which processes and displays this to the frontend. The hardware, drivers and DLL file are from a third party so my chances of changing any of those are very low.
I use GCC (MinGW) as compiler for the C code since Go and Microsoft's compiler didn't get along very well and I use the 32 bit compiler since I am loading a 32 bit DLL.
The program compiles and runs on my 64 lenovo Thinkpad with Windows 8 professional(running it in legacy mode) but now I wonder if it would be possible to run the same program on a Windows tablet. Unfortunately I don't have a Windows tablet so how can I determine if it will work on a tablet without actually buying one? I know that Microsoft has some sort of emulator but will it work with GCC? Will the processor architecture of the tablet matter? Will the same drivers work? Will the DLL file work?
Yes, if the tablet runs Windows 8. No, if the tablet runs Windows RT. For example,
Surface by Microsoft - the New Tablet PC
Surface Pro specifications
Surface RT specifications
Which Surface is right for you? - SKU Chooser

How can I run my Windows CE project from within Visual Studio (2003)?

I'm working on a legacy app that needs to be continued in VS 2003; I cannot effectively debug it, though, because when I try to run it, I get the following dialog:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Deploy
Choose the device to target. If the .NET Compact Framework is not already on the selected device, it will be deployed along iwth your application.
Pocket PC 2002 Emulator
Pocket PC Device
Windows CE .NET Device
Windows CE .NET Emulator (Default)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
I am running this (VS 2003) in XP Mode (Virtual Machine) on Windows 7. I do not have a connection (from XP Mode) to the device - a Symbol/Motorola PDT 3090 - so I get, "Unable to connect" when trying to run/debug/deploy in VS 2003.
What has been the case up to now is the developer would build the binary, adding debug messages, and then copy the binary over to the device and run it. Rather than continue this method, I would prefer to be able to debug it from within VS 2003. Is there a way to do this? None of the options (Pocket PC 2002 Emulator, etc.) seem to work...the device is attached to the computer via a usb. The Emulators won't work because they don’t have the necessary hardware (barcode scanner). So I need to use one of the *Device options, but have not been able to connect the usb port to XP Mode.
Does anybody have any ideas on how to debug without the constant copying-and-replacing of binaries, and the use of "show message"?
UPDATE
Alternately, if I can't run the app from within VS 2003 / XP Mode as an emulator, it would also be fine to run it on the attached Motorola handheld, attached via usb cable from the cradle to the desktop computer; I prefer the former, for the debugging capabilities afforded, but even the latter would be better than my current predicament (copying the files to the handheld device, detaching it from the computer, attaching it to the belt printer, firing it up, testing and repeat ad nauseum ad infinitum). ASAP (within two hours), I will set a bounty on this question.
UPDATE 2
If I try to run from VS 2003 in an emulator, and select "Windows CE .NET Emulator (Default)", I get:
"Emulator for Windows CE will not run within another copy of Emulator for Windows CE.
You just had to try, didn't you?"
?!? Is it saying this because I'm in a VM (XP Mode) session?
Then I select "OK" (the only option), and get, "There were deployment errors. Continue?" That trick never works; it even causes the build to fail (a rebuild fixes that, though).
UPDATE 3
Perhaps my problem with not being able to debug by connecting to the device itself is related to this msg I saw when booting up this morning (but I don't know what to do about it, IF this is the problem - do I need to search for a new driver for the Motorola MC3100?):
Devices or applications disabled.
Virtual PC/Windows CE Emulator will cause Windows to become unstable. Windows has prevented these drivers from loading. click here for more details.
The "more details" are:
Virtual PC/Windows CE Emulator
Microsoft
--------------------------------------------------------------------------------
Issue Description:
A driver is installed that causes stability problems with your system. This driver will be disabled. Please contact the driver manufacturer for an update that is compatible with this version of Windows.
Contact Information:
Web Site: http://go.microsoft.com/fwlink/?LinkId=26320
Telephone: 1-800-936-5800
That link (http://go.microsoft.com/fwlink/?LinkId=26320) ended up as: "Internet Explorer cannot display the webpage"
UPDATE 4
There is some headway (or perhaps just false hope) on the connecting to the device front:
I have 4 USB ports on my desktop machine. I plugged the USB cable into the 3rd from the top for the first time a bit ago. It then said it was recognized, and ActiveSync was finally able to make a connection.
So I then tried deploying the app again. The fourth option (the default - C.E. Device Emulator) failed as always. So did the penultimate choice (C.E. device). The second option, though (Pocket PC device), seems to possibly be working.
However, I got a cryptic err msg that just said:
#183:
I dismissed that and since then (it's been a good ten minutes now), the bottom of the VS Output windows has been saying "Launching Application" (with a blinking cursor beneath it) and the task bar has been claiming "Deploy started..."
Whether that is really of any value, though, it doesn't appear to be, as I am just "stuck" there...
Windows CE .NET Emulator (Default)
This should be the one you want, if you are running Windows CE.
The Barcode Reader takes the code and converts it to a string for you, so your code will never need to "decode" a barcode.
So, when you are testing your software using the CE Emulator, simply select the textbox you want to read the barcode to, and type that value in using your keyboard.
In your Windows 7 host PC's task bar, right click on the XP Mode VS2003 application. In the menu that appears select "Manage USB Devices".
Select your Windows Mobile device and hit the "Attach" button. Your XP Mode PC should connect via ActiveSync. (This assumes you've installed ActiveSync on the XP Mode VM. If not, you should do that first.)
Try rebooting the virtual machine. (Not the same as closing and re opening it). If that doesn't work, try a different USB port. You may end up reinstalling XP mode.
See also: How to Access USB Devices in Windows Virtual PC for Windows 7

"Unidentified USB Device" on Win CE 6.0

Quite a while I am struggling with a problem regarding the installation of certain USB device driver in Windows CE 6.0.
The device is some kind of Digital and Analog IO device that connects to the USB port.
It is the LabJack U3.
I followed all instruction and put the driver (labjackusb.dll) and coresponding registry entries into the Windows CE image but the device is not detected correctly.
On every boot up a small Message box came up with the Title "Unidentified USB Device"
and the message "Enter the name of the driver for this USB device:"
Whatever name I put into it want work. I tried the name of the dll. Some title in from the registry and so on but never succedes.
The driver does not work nor the device.
The customer support can not help me so I am asking here somebody to help me at least
with a steps to follow to try to find a solution.
Why the OS does not matches the USB device with the corresponding driver?
I checked everything one million times and everything is in place.
There are a load of reasons this might fail. First:
Is the driver definitely a Windows CE driver?
Is it built for CE 6.0 (not 5.0 or something else)?
Is it built for the same processor architecture you have?
The way to really debug this is to hook up KITL, put in a debug version of device.exe and see what the device managet is actually doing when you plug in the device. A way better and way more reliable mechanism than just trying to guess.