This ensures that when the project is built, Visual Studio will copy mcHID.dll to the output directory that contains your executable. Once added, change its Copy to Output Directory property to either Copy always or Copy if newer. Once a new project has been created (see below), mcHID.dll needs to be added to the Visual Basic project via the Solution Explorer.
Copy USBTemplate.zip (copy the actual zip file – do not extract it) to your My Documents\Visual Studio \Templates\ProjectTemplates. Download and extract the archive and you will find two files: USBTemplate.zip and mcHID.dll. Make sure to compile using the x86 configuration. This means that the same executable compiled using “Any CPU” will work fine with mcHID.dll on 32-bit Windows, but will fail on 64-bit Windows. “Any CPU” configures your program so that it runs as a native 32-bit application on 32-bit Windows and runs as a native 64-bit application on 64-bit Windows. If you receive runtime errors such as “An attempt was made to load a program with an incorrect format” or similar messages, then make sure that you are not compiling your program to the “圆4” or “Any CPU” configurations. Since all 64-bit versions of Windows come with the WOW64 emulator to run 32-bit applications, mcHID.dll will work on a 64-bit operating system but only if your application is compiled as 32-bit/x86. McHID.dll is a 32-bit DLL and so can only be linked with 32-bit applications. I modified his code a little, wrote some documentation and packaged it into a VB template. To give credit where credit is due, I did not write the code that is in the template – the code is based on the code generated by the EasyHID application from Mecanique and modified for Visual Basic 2005 by Steve Monfette. After that you’re ready to read and write data. All you need to do is set the VID, PID and buffer sizes going into and out from the PC. The Visual Basic template, which you can download at the bottom of the page, generates the basic code framework that is needed to interface with your USB device.
However, you still need to write your own PC software to read and write data from your USB device.
The code generated by these compilers tends to produce a USB Human Interface Device (HID) as these devices do not require custom drivers to be written because Windows has them preinstalled. Luckily, many PIC compilers come with USB libraries that work out of the box and are dead easy to use.
However, writing firmware to work with the SIE can still be a difficult task.
Some PIC microcontrollers now come with a USB Serial Interface Engine (SIE) that handles the very low level parts of the interface. However, there are many hardware and software solutions that make developing USB device much simpler. Unfortunately, unlike serial and parallel ports, USB is far from simple and so it can be daunting to try to develop hardware and software for it. With the decline of serial and parallel ports from modern computers, electronics hobbyists are turning more to utilizing USB (or stick with old computers for their legacy ports).