<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6069588175912980102</id><updated>2011-12-13T22:45:14.650+05:30</updated><category term='USB Controllers'/><category term='USB Flash Drive Applications'/><category term='DOS Driver for USB'/><category term='USB Compliance'/><category term='USB 3.0'/><category term='USB Based Control Systems'/><category term='Human Interface Devices'/><category term='USB News'/><category term='HID'/><category term='All about USB'/><category term='USB Software'/><category term='Microchip USB Controllers'/><category term='Using MPUSBAPI.DLL'/><category term='Complete Software On USB Drive'/><category term='USB Devices'/><category term='USB Protocol Analyzers'/><category term='USB Ideas'/><title type='text'>USB at High Speed, Full Speed and Low Speed... And now at SuperSpeed...</title><subtitle type='html'>Covers
USB, USB 2.0, USB Controllers, USB Firmware &amp;amp; Hardware Reviews, USB Device Classes, HID and Mass Storage Devices, USB Book Reviews and many more topics related to USB.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://comvcon.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6069588175912980102/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://comvcon.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Vidya</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>39</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6069588175912980102.post-2658590177670517789</id><published>2009-01-02T12:16:00.002+05:30</published><updated>2009-01-02T12:22:23.294+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='USB Flash Drive Applications'/><title type='text'>Portable VLC Media Player</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://portableapps.com/files/images/screenshots/vlc_portable_small.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px; height: 167px;" src="http://portableapps.com/files/images/screenshots/vlc_portable_small.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The Portable VLC player can play DVDs, VCDs, and audio and video formats and codecs such as FLV, AVI, OGG, DivX, MPEG-1, MPEG-2, MPEG-4, MP3, WAV and many other streaming protocols.&lt;br /&gt;&lt;br /&gt;It is open source software. It can be downloaded for free from &lt;a href="http://portableapps.com/apps/music_video/vlc_portable"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6069588175912980102-2658590177670517789?l=comvcon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://comvcon.blogspot.com/feeds/2658590177670517789/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6069588175912980102&amp;postID=2658590177670517789' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6069588175912980102/posts/default/2658590177670517789'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6069588175912980102/posts/default/2658590177670517789'/><link rel='alternate' type='text/html' href='http://comvcon.blogspot.com/2009/01/portable-vlc-media-player.html' title='Portable VLC Media Player'/><author><name>Vidya</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6069588175912980102.post-3143059175114577580</id><published>2008-12-26T11:56:00.003+05:30</published><updated>2008-12-26T12:04:57.351+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='USB Ideas'/><title type='text'>Have you came across MojoPac?</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.mojopac.com/images/logo.gif"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 300px; height: 59px;" src="http://www.mojopac.com/images/logo.gif" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;I came across this interesting tool today. This software claims (to a large extent it is true) and allows you to carry your entire PC (actually every software and documents including iTunes) on a USB Flash disk.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But, there is a catch in this otherwise very nice technology. To use this software the steps are as following.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1. First install the &lt;a href="http://www.mojopac.com/"&gt;MojoPac&lt;/a&gt; software on your USB Drive.&lt;/div&gt;&lt;div&gt;2. Then install all the other software on the same USB Drive.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now this USB thumb drive will allow you to use the software anywhere. It is like one of the &lt;a href="http://portableapps.com/apps"&gt;portableApps&lt;/a&gt; applications.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But MojoPac helps you to achieve one more level user friendly behaviour. It allows you to have the same look and feel accross various Windows XP PCs.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6069588175912980102-3143059175114577580?l=comvcon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://comvcon.blogspot.com/feeds/3143059175114577580/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6069588175912980102&amp;postID=3143059175114577580' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6069588175912980102/posts/default/3143059175114577580'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6069588175912980102/posts/default/3143059175114577580'/><link rel='alternate' type='text/html' href='http://comvcon.blogspot.com/2008/12/have-you-came-across-mojopac.html' title='Have you came across MojoPac?'/><author><name>Vidya</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6069588175912980102.post-9114863041596406421</id><published>2008-12-26T11:34:00.002+05:30</published><updated>2008-12-26T11:40:58.951+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='USB Ideas'/><title type='text'>How do I burn DVDs onto USB/Thumb ?</title><content type='html'>I saw this question in one of the &lt;a href="http://www.computing.net/answers/digitalphoto/how-do-i-burn-dvds-onto-usbthumb-/1564.html"&gt;forums&lt;/a&gt;.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The funny part of the question is how to burn DVDs on USB. There is an answer also given there.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But in case if any one got such a doubt I suggest one simple answer. Just copy the files to the Thumb Drivethat "you want to burn" from the DVDs. The only catch is if you have a thumb drive that is of smaller size, then it can be problem.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In that case you can convert the DVD videos into other formats like DivX, WMA or VCD etc..&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The main purpose of doing this to view the videos in your computer while travelling.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt; &lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6069588175912980102-9114863041596406421?l=comvcon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://comvcon.blogspot.com/feeds/9114863041596406421/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6069588175912980102&amp;postID=9114863041596406421' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6069588175912980102/posts/default/9114863041596406421'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6069588175912980102/posts/default/9114863041596406421'/><link rel='alternate' type='text/html' href='http://comvcon.blogspot.com/2008/12/how-do-i-burn-dvds-onto-usbthumb.html' title='How do I burn DVDs onto USB/Thumb ?'/><author><name>Vidya</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6069588175912980102.post-696490646465175505</id><published>2008-12-26T11:22:00.002+05:30</published><updated>2008-12-26T11:33:35.887+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='USB Ideas'/><category scheme='http://www.blogger.com/atom/ns#' term='USB Devices'/><title type='text'>A Jewelry Box with USB and Fingerprint Authentication and Security</title><content type='html'>Syba has manufactured a sophisticated jewelry box called BioMirage Coffer which can only be opened via fingerprint identification or a USB key.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This secure jewelry box provides two security measures: fingerprint authentication and a USB key. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;While the finger sensor is inherently more convenient, the USB key serves as a &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;failsafe measure&lt;/span&gt; and additional protection in case the sensor loses its effectiveness or your fingerprint becomes unrecognizable.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I could not find an image for this Jewelry Box to show you. If anybody finds it, please leave a comment.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Also it is interesting to see what all ways USB can be used.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6069588175912980102-696490646465175505?l=comvcon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://comvcon.blogspot.com/feeds/696490646465175505/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6069588175912980102&amp;postID=696490646465175505' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6069588175912980102/posts/default/696490646465175505'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6069588175912980102/posts/default/696490646465175505'/><link rel='alternate' type='text/html' href='http://comvcon.blogspot.com/2008/12/jewelry-box-with-usb-and-fingerprint.html' title='A Jewelry Box with USB and Fingerprint Authentication and Security'/><author><name>Vidya</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6069588175912980102.post-8423048549139395333</id><published>2008-12-24T09:25:00.003+05:30</published><updated>2008-12-24T09:41:57.071+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='USB Software'/><category scheme='http://www.blogger.com/atom/ns#' term='DOS Driver for USB'/><title type='text'>USB Drivers for DOS - USBASPI.SYS</title><content type='html'>If your system BIOS does not support booting from USB Disks, or you are using an old PC and willing to access some information from MS-DOS (If you are still using it) then there are few options that came to my notice that can be helpful to you.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The USBASPI.SYS is driver file you need to do this. This file is also known as &lt;span class="Apple-style-span" style="font-family: Verdana; font-size: 13px; line-height: 17px; "&gt;"Panasonic v2.06 ASPI Manager for USB mass storage".&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This driver is capable of mapping only map &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;mass storage devices&lt;/span&gt; like external hard disks, cd- roms, cd-rw, dvd-rom, zip, jaz, ls-120, and flash memory to ASPI devices.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The driver switches you can use are: device=(path)USBASPI.SYS [/e] [/o] [/u] [/w] [/v] [/l[=n]] [/f] /r] [/slow] [/nocbc] [/norst] [/noprt]&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You should be editing your &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;config.sys&lt;/span&gt; and &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;autoexec.bat&lt;/span&gt; files and add required changes to start using this driver.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;[config.sys]&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Verdana; font-size: 13px; "&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 10px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 17px; clear: both; "&gt;DOS=HIGH,UMB &lt;br /&gt;lastdrive=Z &lt;br /&gt;device=HIMEM.SYS &lt;br /&gt;rem The following line loads Panasonic's universal USB- controller driver &lt;br /&gt;devicehigh=USBASPI.SYS /v /w /e &lt;br /&gt;rem the following is an aspi mass storage driver for usb- connected HDs and compactflash memory cards &lt;br /&gt;devicehigh=DI1000DD.SYS &lt;br /&gt;rem The following one loads CD-ROM driver &lt;br /&gt;devicehigh=USBCD.SYS /d:USBCD001&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 10px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 17px; clear: both; "&gt;[autoexec.bat] &lt;br /&gt;@echo off &lt;br /&gt;REM the following line adds a drive letter to the usb cd(rom/r/rw) mounted &lt;br /&gt;LH MSCDEX /d:USBCD001&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 10px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 17px; clear: both; "&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 10px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 17px; clear: both; "&gt;&lt;span class="Apple-style-span" style="font-family: Georgia; font-size: 16px; line-height: normal; "&gt;A very detailed explanation on how to use this driver and various options available with driver are nicely explained at &lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: normal; "&gt;&lt;a href="http://www.theinquirer.net/inquirer/news/069/1046069/yes-there-are-usb-drivers-for-dos"&gt;http://www.theinquirer.net/inquirer/news/069/1046069/yes-there-are-usb-drivers-for-dos.&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There is another interesting document explaining the USB Driver for DOS at &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;FreeDOS&lt;/span&gt; Documentation. The details on how to are provided &lt;a href="http://www.freedos.org/freedos/news/technote/203.html"&gt;here&lt;/a&gt;.  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma; font-size: 13px; "&gt;&lt;p&gt;usbaspi.sys and usbcd.sys available at:&lt;a href="http://panasonic.co.jp/pcc/products/drive/cdrrw/kxlrw40an/driver/kxlrw40an.exe" style="background-color: transparent; color: rgb(0, 51, 102); text-decoration: underline; "&gt;http://panasonic.co.jp/pcc/products/drive/cdrrw/kxlrw40an/driver/kxlrw40an.exe&lt;/a&gt;&lt;/p&gt;&lt;p&gt;di1000dd.sys available at: &lt;a href="http://www.stefan2000.com/darkehorse/PC/DOS/Drivers/USB/mhairu.zip" style="background-color: transparent; color: rgb(0, 51, 102); text-decoration: underline; "&gt;http://www.stefan2000.com/darkehorse/PC/DOS/Drivers/USB/mhairu.zip&lt;/a&gt;&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;If the pages don't open correctly better do a google search.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Alternatively, There is one more USB DOS Driver from Cypress. The link for Cypress USB Stack driver for DOS is &lt;a href="http://www.pocketec.net/downloads/duse_4_4.zip"&gt;here&lt;/a&gt;.(&lt;a href="http://www.pocketec.net/downloads/duse_4_4.zip"&gt;http://www.pocketec.net/downloads/duse_4_4.zip&lt;/a&gt;) &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6069588175912980102-8423048549139395333?l=comvcon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://comvcon.blogspot.com/feeds/8423048549139395333/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6069588175912980102&amp;postID=8423048549139395333' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6069588175912980102/posts/default/8423048549139395333'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6069588175912980102/posts/default/8423048549139395333'/><link rel='alternate' type='text/html' href='http://comvcon.blogspot.com/2008/12/usb-drivers-for-dos-usbaspisys.html' title='USB Drivers for DOS - USBASPI.SYS'/><author><name>Vidya</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6069588175912980102.post-4736964835776975999</id><published>2008-12-24T09:20:00.002+05:30</published><updated>2008-12-24T09:23:59.543+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='USB Ideas'/><title type='text'>How to Use the NTFS File System With USB Drives</title><content type='html'>&lt;div&gt;Why you want to use the NTFS File System with USB Drives?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;For users of computers that run Windows 2000, XP or Vista though, the preferred file system is often NTFS. The advantages over FAT32 include the ability to:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1. Create files larger than 4 GB in size&lt;/div&gt;&lt;div&gt;2. Encrypt documents for better security&lt;/div&gt;&lt;div&gt;3. Deny or limit permissions to individual files or folders&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Read more about how to create an NTFS File System with USB Drives at the following link.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://computer-drives-storage.suite101.com/article.cfm/how_to_use_the_ntfs_file_system_on_a_usb_drive"&gt;http://computer-drives-storage.suite101.com/article.cfm/how_to_use_the_ntfs_file_system_on_a_usb_drive&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;However there is one thing that one should take care of when changing to NTFS file system:&lt;/div&gt;&lt;div&gt;Backup your files from your USB Drive before staring to CONVERT and FORMAT.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6069588175912980102-4736964835776975999?l=comvcon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://comvcon.blogspot.com/feeds/4736964835776975999/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6069588175912980102&amp;postID=4736964835776975999' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6069588175912980102/posts/default/4736964835776975999'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6069588175912980102/posts/default/4736964835776975999'/><link rel='alternate' type='text/html' href='http://comvcon.blogspot.com/2008/12/how-to-use-ntfs-file-system-with-usb.html' title='How to Use the NTFS File System With USB Drives'/><author><name>Vidya</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6069588175912980102.post-2729151186685890512</id><published>2008-12-24T09:10:00.003+05:30</published><updated>2008-12-24T09:24:22.881+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='USB Controllers'/><category scheme='http://www.blogger.com/atom/ns#' term='USB Devices'/><title type='text'>XEM3050 - Xilinx Spartan-3 FPGA Integration Module</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.opalkelly.com/images/misc/xem3050-3d-360x245.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 360px; height: 245px;" src="http://www.opalkelly.com/images/misc/xem3050-3d-360x245.png" border="0" alt="" /&gt;&lt;/a&gt;The &lt;a href="http://www.opalkelly.com/products/xem3050/"&gt;XEM3050 FPGA&lt;/a&gt; Module promises to help in cutting design times and verification times of heavy electronic engineering projects.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In addition to a high gate-count FPGA, the XEM3050 utilizes the high transfer rate of USB 2.0 for configuration downloads, enabling an almost instant reprogramming of the FPGA.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;a href="http://www.opalkelly.com/products/frontpanel"&gt;Opal Kelly's FrontPanel&lt;/a&gt; software handles all the interaction between your software and the FPGA internals, dramatically reducing the time and effort required to interface to a design.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The XEM3050 is ideally suited for product prototyping and integration into OEM devices where a USB interface, flexible hardware solution, or PC software interface would be useful. The XEM3050 can easily be added to a new board design to provide turnkey USB integration with the convenience of Opal Kelly's software programmer's interface and existing USB drivers.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6069588175912980102-2729151186685890512?l=comvcon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://comvcon.blogspot.com/feeds/2729151186685890512/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6069588175912980102&amp;postID=2729151186685890512' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6069588175912980102/posts/default/2729151186685890512'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6069588175912980102/posts/default/2729151186685890512'/><link rel='alternate' type='text/html' href='http://comvcon.blogspot.com/2008/12/xem3050-xilinx-spartan-3-fpga.html' title='XEM3050 - Xilinx Spartan-3 FPGA Integration Module'/><author><name>Vidya</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6069588175912980102.post-7986048200414362421</id><published>2008-12-24T09:04:00.002+05:30</published><updated>2008-12-24T09:10:21.450+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='USB Ideas'/><category scheme='http://www.blogger.com/atom/ns#' term='Complete Software On USB Drive'/><title type='text'>Download Portable Office Suite (Openoffice 3.0) to your USB Thumb Drive/ USB Flash Disk</title><content type='html'>Openoffice 3.0 is a an open source Office software and with version 3.0 it is very much like Microsoft Office. The two interesting things about it is it supports both Microsoft Office file formats as well as Google Docs file formats and it is free.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It is developed in Java and supported be Sun Microsystems.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It is a complete office suite that is free. Now you can now carry it on your thumb drive too. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;File size of Portable Openoffice 3.0 is about 86.4 MB.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://downloads.sourceforge.net/portableapps/OpenOffice.org_Portable_3.0_en-us.paf.exe?download"&gt;Download Portable Openoffice.org 3.0&lt;/a&gt; for your USB Flash Drive.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6069588175912980102-7986048200414362421?l=comvcon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://comvcon.blogspot.com/feeds/7986048200414362421/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6069588175912980102&amp;postID=7986048200414362421' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6069588175912980102/posts/default/7986048200414362421'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6069588175912980102/posts/default/7986048200414362421'/><link rel='alternate' type='text/html' href='http://comvcon.blogspot.com/2008/12/download-portable-office-suite.html' title='Download Portable Office Suite (Openoffice 3.0) to your USB Thumb Drive/ USB Flash Disk'/><author><name>Vidya</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6069588175912980102.post-1719344124475790896</id><published>2008-12-23T19:56:00.003+05:30</published><updated>2008-12-23T20:08:56.492+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='USB Ideas'/><category scheme='http://www.blogger.com/atom/ns#' term='USB Devices'/><title type='text'>USB Cup Warmer</title><content type='html'>I have already posted about USB Chiller &lt;a href="http://comvcon.blogspot.com/2008/12/usb-beverage-chiller.html"&gt;here&lt;/a&gt;. This post is about the USB Gas Stove Cup Warmer. Yet another interesting use of USB :-).&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Image 1&lt;/span&gt; of the USB Cup Warmer.&lt;/div&gt;&lt;div&gt;&lt;img src="http://news.softpedia.com/images/newsrsz/The-USB-Gas-Stove-Cup-Warmer-2.jpg" style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 90px; height: 66px;" border="0" alt="" /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Image 2 of the USB Cup Warmer.&lt;/div&gt;&lt;img src="http://news.softpedia.com/images/newsrsz/The-USB-Gas-Stove-Cup-Warmer-3.jpg" style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 90px; height: 42px;" border="0" alt="" /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The USB Gas Stove Cup Warmer is a fairly small and cozy object, and its reduced footprint is most likely to make it easy to integrate on almost any desk. This toy sports 140mm x 125mm x 28mm, and comes in either orange or blue finish.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Links to some more USB Cup Warmers are given below.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab" id="Player_cd7aaaab-91c8-4d3e-865a-f998e8ddc061"  WIDTH="400px" HEIGHT="150px"&gt; &lt;PARAM NAME="movie" VALUE="http://ws.amazon.com/widgets/q?ServiceVersion=20070822&amp;MarketPlace=US&amp;ID=V20070822%2FUS%2Fwwwcomvconcom-20%2F8003%2Fcd7aaaab-91c8-4d3e-865a-f998e8ddc061&amp;Operation=GetDisplayTemplate"&gt;&lt;PARAM NAME="quality" VALUE="high"&gt;&lt;PARAM NAME="bgcolor" VALUE="#FFFFFF"&gt;&lt;PARAM NAME="allowscriptaccess" VALUE="always"&gt;&lt;embed src="http://ws.amazon.com/widgets/q?ServiceVersion=20070822&amp;MarketPlace=US&amp;ID=V20070822%2FUS%2Fwwwcomvconcom-20%2F8003%2Fcd7aaaab-91c8-4d3e-865a-f998e8ddc061&amp;Operation=GetDisplayTemplate" id="Player_cd7aaaab-91c8-4d3e-865a-f998e8ddc061" quality="high" bgcolor="#ffffff" name="Player_cd7aaaab-91c8-4d3e-865a-f998e8ddc061" allowscriptaccess="always"  type="application/x-shockwave-flash" align="middle" height="150px" width="400px"&gt;&lt;/embed&gt;&lt;/OBJECT&gt; &lt;NOSCRIPT&gt;&lt;A HREF="http://ws.amazon.com/widgets/q?ServiceVersion=20070822&amp;MarketPlace=US&amp;ID=V20070822%2FUS%2Fwwwcomvconcom-20%2F8003%2Fcd7aaaab-91c8-4d3e-865a-f998e8ddc061&amp;Operation=NoScript"&gt;Amazon.com Widgets&lt;/A&gt;&lt;/NOSCRIPT&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6069588175912980102-1719344124475790896?l=comvcon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://comvcon.blogspot.com/feeds/1719344124475790896/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6069588175912980102&amp;postID=1719344124475790896' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6069588175912980102/posts/default/1719344124475790896'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6069588175912980102/posts/default/1719344124475790896'/><link rel='alternate' type='text/html' href='http://comvcon.blogspot.com/2008/12/usb-cup-warmer.html' title='USB Cup Warmer'/><author><name>Vidya</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6069588175912980102.post-7812064421607571585</id><published>2008-12-16T19:08:00.002+05:30</published><updated>2008-12-16T19:16:47.171+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='USB 3.0'/><title type='text'>Intel Developers Demo USB 3.0 Throughput On Linux</title><content type='html'>USB 3.0 is on it's way. Intel has demonstrated the USB 3.0 transfer speeds upto 3.5 times faster than the USB 2.0.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;See the following video:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;embed id="VideoPlayback" src="http://video.google.com/googleplayer.swf?docid=-6015621370324169356&amp;amp;hl=en&amp;amp;fs=true" style="width:400px;height:326px" allowfullscreen="true" allowscriptaccess="always" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://video.google.com/googleplayer.swf?docid=-6015621370324169356"&gt;Link to video&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6069588175912980102-7812064421607571585?l=comvcon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://comvcon.blogspot.com/feeds/7812064421607571585/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6069588175912980102&amp;postID=7812064421607571585' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6069588175912980102/posts/default/7812064421607571585'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6069588175912980102/posts/default/7812064421607571585'/><link rel='alternate' type='text/html' href='http://comvcon.blogspot.com/2008/12/intel-developers-demo-usb-30-throughput.html' title='Intel Developers Demo USB 3.0 Throughput On Linux'/><author><name>Vidya</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6069588175912980102.post-7892892892793082598</id><published>2008-12-16T18:59:00.002+05:30</published><updated>2008-12-16T19:08:54.192+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='USB Software'/><category scheme='http://www.blogger.com/atom/ns#' term='USB Ideas'/><title type='text'>Free program to create protected partitions on USB drives</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://image.examiner.com/images/blog/wysiwyg/image/rohos.jpg" style="text-decoration: none;"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;img style="text-decoration: underline;display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 401px; height: 321px; " src="http://image.examiner.com/images/blog/wysiwyg/image/rohos.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;Now USB flash drives are cheap and available everywhere. So, securing the drive's contents has become a major issue. To avoid this problem. There is a free software called &lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.rohos.com/free-encryption/"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;Rohos Mini Drive&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;  helps in solving this problem. &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;This software is a Windows application. It lets you create a password-protected, encrypted, and hidden partition on any USB flash drive.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;This clever application works when you plug the USB drive with a &lt;/span&gt;&lt;a target="_blank" href="http://www.rohos.com/free-encryption/" style="text-decoration: none; color: rgb(102, 153, 204); "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;Rohos &lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;hidden partition into your PC. You will only see the unprotected partition. If &lt;/span&gt;&lt;a target="_blank" href="http://www.rohos.com/free-encryption/" style="text-decoration: none; color: rgb(102, 153, 204); "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;Rohos&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt; is installed on the computer you can right click the icon in the system tray to connect the hidden partition. If you're using a computer without &lt;/span&gt;&lt;a target="_blank" href="http://www.rohos.com/free-encryption/" style="text-decoration: none; color: rgb(102, 153, 204); "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;Rohos&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: georgia;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;installed, you can run the "Rohos mini.exe" program in the main partition on your flash drive and enter your password to unlock the hidden partition. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-family: georgia;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6069588175912980102-7892892892793082598?l=comvcon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://comvcon.blogspot.com/feeds/7892892892793082598/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6069588175912980102&amp;postID=7892892892793082598' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6069588175912980102/posts/default/7892892892793082598'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6069588175912980102/posts/default/7892892892793082598'/><link rel='alternate' type='text/html' href='http://comvcon.blogspot.com/2008/12/free-program-to-create-protected.html' title='Free program to create protected partitions on USB drives'/><author><name>Vidya</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6069588175912980102.post-7184369783867580618</id><published>2008-12-16T18:54:00.001+05:30</published><updated>2008-12-16T18:59:06.328+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='USB Controllers'/><title type='text'>Freescale Semiconductor’s MC9S08JM16</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.ecnmag.com/uploadedImages/Ecn/Articles/ec92ic506aweb.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 201px; height: 142px;" src="http://www.ecnmag.com/uploadedImages/Ecn/Articles/ec92ic506aweb.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;div&gt;Freescale Semiconductor’s &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;MC9S08JM16&lt;/span&gt; 8-bit microcontrollers integrates on-chip USB 2.0 &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Full-Speed device&lt;/span&gt; support.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Features include:&lt;/div&gt;&lt;div&gt;   - 48-MHz S08 core&lt;/div&gt;&lt;div&gt;   - Bus Frequency of 24 MHz&lt;/div&gt;&lt;div&gt;   - Upto 16-KB Flash Memory&lt;/div&gt;&lt;div&gt;   - 1 - KB SRAM&lt;/div&gt;&lt;div&gt;   - 256-Bytes USB RAM&lt;/div&gt;&lt;div&gt;   - Operating Voltage Range of 2.7 V to 5.5 V&lt;/div&gt;&lt;div&gt;   - Other Peripherals :  2x SCI, I²C, 2x SPI, a 7-channel keyboard interface (KBI), a 2-channel 16-bit timer, a 4-channel 16-bit timer, a 12-bit 8-channel ADC, and a real-time clock.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Package Options:  48-pin QFN, 44-pin LQFP, and 32-pin LQFP.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Software Support: Freescale's USB-LITE stack. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6069588175912980102-7184369783867580618?l=comvcon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://comvcon.blogspot.com/feeds/7184369783867580618/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6069588175912980102&amp;postID=7184369783867580618' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6069588175912980102/posts/default/7184369783867580618'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6069588175912980102/posts/default/7184369783867580618'/><link rel='alternate' type='text/html' href='http://comvcon.blogspot.com/2008/12/freescale-semiconductors-mc9s08jm16.html' title='Freescale Semiconductor’s MC9S08JM16'/><author><name>Vidya</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6069588175912980102.post-1449214727293474919</id><published>2008-12-12T16:17:00.005+05:30</published><updated>2008-12-12T16:31:49.148+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='USB Ideas'/><category scheme='http://www.blogger.com/atom/ns#' term='USB Devices'/><title type='text'>25 Miles USB Cable??? Do you think it is possible? See below.</title><content type='html'>This is an interesting Idea though. If such a cable exists we can following easily. We can break away with the 5 meter USB cable limit.&lt;br /&gt;&lt;br /&gt;Working from home by connecting your USB Monitor, USB Keyboard and USB Mouse to your computer at office which at a distance of 25 Miles.&lt;br /&gt;&lt;br /&gt;You can monitor activity in your backyard, or you can also monitor what your kid is doing at school and what the teacher is doing at school with an USB Camera and an USB Microphone. Outrageous right. But it is possible too.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://blog.wired.com/gadgets/images/2008/12/11/extremeusb_2.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 200px; height: 195px;" src="http://blog.wired.com/gadgets/images/2008/12/11/extremeusb_2.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The main benefit with such a cable according to &lt;a href="http://blog.wired.com/gadgets/2008/12/25-mile-usb-cab.html"&gt;wired blog&lt;/a&gt; is "one of the selling points of the system is that governments can use it to run secure connections to distant cameras. For us, more modest extensions over USB's five-foot limit mean we can tuck unsightly peripherals away in hidden corners."&lt;br /&gt;&lt;br /&gt;The image on right hand side shows the Icron's ThinkLogical setup, &lt;em style="font-weight: bold;"&gt;ExtremeUSB&lt;/em&gt; .&lt;br /&gt;&lt;br /&gt;ThinkLogical setup doesn't use the actual USB protocol to transfer the USB Data. They provide interface boxes and you need to plug them in. Each box converts the USB signal to or from a Icron's proprietary signal and sends this over the wire (or the air, or the powerline). &lt;span style="font-weight: bold;"&gt;The trick is, to the computer and other devices, the whole thing looks like a regular USB hub. A twenty five mile long USB hub, but a hub nonetheless&lt;/span&gt;(Wired.com).&lt;br /&gt;&lt;br /&gt;See the "&lt;a href="http://www.icron.com/products/usb_new/extremeusb.php"&gt;ExtremeUSB&lt;/a&gt;" site for more details details.&lt;br /&gt;&lt;br /&gt;That's an useful and impressive solution.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6069588175912980102-1449214727293474919?l=comvcon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://comvcon.blogspot.com/feeds/1449214727293474919/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6069588175912980102&amp;postID=1449214727293474919' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6069588175912980102/posts/default/1449214727293474919'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6069588175912980102/posts/default/1449214727293474919'/><link rel='alternate' type='text/html' href='http://comvcon.blogspot.com/2008/12/25-miles-usb-cable-do-you-think-it-is.html' title='25 Miles USB Cable??? Do you think it is possible? See below.'/><author><name>Vidya</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6069588175912980102.post-6448609323199533644</id><published>2008-12-11T10:36:00.003+05:30</published><updated>2008-12-11T10:44:42.616+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='USB Ideas'/><title type='text'>USB Guard Dog - Desktop Rex - Funny Device</title><content type='html'>&lt;h2  style="text-align: center;font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;USB Guard Dog - Desktop Rex&lt;/span&gt;&lt;/h2&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.lazyboneuk.com/product_images/b/usbguarddoga__48109.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 500px; height: 290px;" src="http://www.lazyboneuk.com/product_images/b/usbguarddoga__48109.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;It really does not protect you and your PC if some is logging in with your Password. But one thing the USB Guard Dog does is,  he makes menacing growl each time someone comes too close. So, they even cannot touch your keyboard, till they know that he just growls.&lt;br /&gt;&lt;br /&gt;Works with USB, basically draws power from USB or with three AA batteries too. Funny is in't it?&lt;br /&gt;&lt;br /&gt;It's pricing can be found on &lt;a href="http://www.lazyboneuk.com/products/USB-Guard-Dog-%252d-Desktop-Rex.html#"&gt;this site&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6069588175912980102-6448609323199533644?l=comvcon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://comvcon.blogspot.com/feeds/6448609323199533644/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6069588175912980102&amp;postID=6448609323199533644' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6069588175912980102/posts/default/6448609323199533644'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6069588175912980102/posts/default/6448609323199533644'/><link rel='alternate' type='text/html' href='http://comvcon.blogspot.com/2008/12/usb-guard-dog-desktop-rex-funny-device.html' title='USB Guard Dog - Desktop Rex - Funny Device'/><author><name>Vidya</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6069588175912980102.post-3322026172368455461</id><published>2008-12-10T15:46:00.002+05:30</published><updated>2008-12-10T15:50:36.911+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='USB Software'/><category scheme='http://www.blogger.com/atom/ns#' term='USB Ideas'/><title type='text'>USB Based Data Recovery Software and Tools</title><content type='html'>&lt;div&gt;Selkie Freedom is the first data recovery product in the Selkie Software line to allow users to back-up their data to a USB key. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Selkie Freedom is network independent so it doesn’t require a second computer. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;“Not everyone has a second computer to receive their recovered data. This product allows the user to push their data to a USB key, do a re-install on their broken machine, restore the data from the key and be up and running again in no time at all,” says Philip Fleischer, CTO. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Selkie Freedom is available in three data recovery categories,  Selkie Freedom Photographer, Selkie Freedom Multimedia and Selkie Freedom Office.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Find out more about Selkie Freedom at &lt;a href="www.SelkieFreedom.com"&gt;www.SelkieFreedom.com&lt;/a&gt; or &lt;a href="www.SelkieSoftware.com"&gt;www.SelkieSoftware.com&lt;/a&gt;. &lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6069588175912980102-3322026172368455461?l=comvcon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://comvcon.blogspot.com/feeds/3322026172368455461/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6069588175912980102&amp;postID=3322026172368455461' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6069588175912980102/posts/default/3322026172368455461'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6069588175912980102/posts/default/3322026172368455461'/><link rel='alternate' type='text/html' href='http://comvcon.blogspot.com/2008/12/usb-based-data-recovery-software-and.html' title='USB Based Data Recovery Software and Tools'/><author><name>Vidya</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6069588175912980102.post-3506385447099862190</id><published>2008-12-10T15:42:00.002+05:30</published><updated>2008-12-10T15:46:29.012+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='USB Ideas'/><category scheme='http://www.blogger.com/atom/ns#' term='USB Devices'/><title type='text'>The Rechargeable USB AA Cell</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://news.softpedia.com/images/news2/The-Rechargeable-USB-AA-Cell-2.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 450px; height: 450px;" src="http://news.softpedia.com/images/news2/The-Rechargeable-USB-AA-Cell-2.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A pack of these two Rechargeable USB AA cells cost around $19.95.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6069588175912980102-3506385447099862190?l=comvcon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://comvcon.blogspot.com/feeds/3506385447099862190/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6069588175912980102&amp;postID=3506385447099862190' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6069588175912980102/posts/default/3506385447099862190'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6069588175912980102/posts/default/3506385447099862190'/><link rel='alternate' type='text/html' href='http://comvcon.blogspot.com/2008/12/rechargeable-usb-aa-cell.html' title='The Rechargeable USB AA Cell'/><author><name>Vidya</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6069588175912980102.post-2999687205610555552</id><published>2008-12-10T15:38:00.001+05:30</published><updated>2008-12-10T15:42:27.553+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='USB Controllers'/><category scheme='http://www.blogger.com/atom/ns#' term='USB Devices'/><title type='text'>Nordic Semiconductor nRF24LU1+ USB dongle single chip system</title><content type='html'>Nordic Semiconductor has released the nRF24LU1+ USB dongle single chip for ultra-low power (ULP) wireless peripherals.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;The nRF24LU1+ combines Nordic’s nRF24L01+ 2.4GHz radio transceiver with the nRF24LU1 USB dongle single chip device.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This solution includes an integrated voltage regulator that allows the chip to be powered directly from a USB bus, removing the requirement for an external voltage regulator. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In addition, on-chip flash memory eliminates the need for an external E2PROM memory. The only external components the nRF24LU1+ chip requires are a low cost 16MHz crystal, decoupling, matching network and antenna.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;More details can be found &lt;a href="http://www.electronicsweekly.com/products/2008/12/10/20611/nordic-semiconductor-nrf24lu1+-usb-dongle-single-chip.htm"&gt;here&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6069588175912980102-2999687205610555552?l=comvcon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://comvcon.blogspot.com/feeds/2999687205610555552/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6069588175912980102&amp;postID=2999687205610555552' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6069588175912980102/posts/default/2999687205610555552'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6069588175912980102/posts/default/2999687205610555552'/><link rel='alternate' type='text/html' href='http://comvcon.blogspot.com/2008/12/nordic-semiconductor-nrf24lu1-usb.html' title='Nordic Semiconductor nRF24LU1+ USB dongle single chip system'/><author><name>Vidya</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6069588175912980102.post-6005140464542976753</id><published>2008-12-09T17:13:00.003+05:30</published><updated>2008-12-09T17:18:30.482+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='USB 3.0'/><category scheme='http://www.blogger.com/atom/ns#' term='USB News'/><title type='text'>Super Speed USB Logo and Cable Details - USB 3.0</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://media.bestofmicro.com/SuperSpeedUSB,Z-P-169765-1.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 200px; height: 105px;" src="http://media.bestofmicro.com/SuperSpeedUSB,Z-P-169765-1.jpg" border="0" alt="" /&gt;&lt;/a&gt; USB 3.0 uses different cable. But the connectors remains same. USB 3.0 cable carries 6 signals. The SuperSpeed USB carries 4 different signals, and can provide upto 50 percent more power for unconfigured or suspended devices, and 80 percent more power for configured devices.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(55, 55, 55); font-family: Verdana; font-size: 12px; line-height: 18px; "&gt;USB 3.0 will support data rates as high as 5.0 Gb/sec— which is 10 times faster than USB 2.0 (High Speed USB). &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6069588175912980102-6005140464542976753?l=comvcon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://comvcon.blogspot.com/feeds/6005140464542976753/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6069588175912980102&amp;postID=6005140464542976753' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6069588175912980102/posts/default/6005140464542976753'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6069588175912980102/posts/default/6005140464542976753'/><link rel='alternate' type='text/html' href='http://comvcon.blogspot.com/2008/12/super-speed-usb-logo-and-cable-details.html' title='Super Speed USB Logo and Cable Details - USB 3.0'/><author><name>Vidya</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6069588175912980102.post-6062647424535754688</id><published>2008-12-09T17:07:00.004+05:30</published><updated>2008-12-09T17:32:31.338+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='USB Software'/><category scheme='http://www.blogger.com/atom/ns#' term='USB Devices'/><title type='text'></title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.silexamerica.com/images/stories/svusb.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 325px; height: 233px;" src="http://www.silexamerica.com/images/stories/svusb.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;USB over IP Capabilities for your USB device. Silex introduced &lt;a href="http://www.silexamerica.com/sx-virtual-usb-sdk-for-linux.html"&gt;SDKs for network sharing of USB&lt;/a&gt; devices. It is called &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Silex Virtual Link SDKs&lt;/span&gt;.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;For more information and features of this SDK visit &lt;a href="http://www.silexamerica.com/sx-virtual-usb-sdk-for-linux.html"&gt;here&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6069588175912980102-6062647424535754688?l=comvcon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://comvcon.blogspot.com/feeds/6062647424535754688/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6069588175912980102&amp;postID=6062647424535754688' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6069588175912980102/posts/default/6062647424535754688'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6069588175912980102/posts/default/6062647424535754688'/><link rel='alternate' type='text/html' href='http://comvcon.blogspot.com/2008/12/usb-over-ip-capabilities-for-your-usb.html' title=''/><author><name>Vidya</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6069588175912980102.post-9123294553139416631</id><published>2008-12-09T16:48:00.003+05:30</published><updated>2008-12-09T16:52:53.327+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='USB Ideas'/><category scheme='http://www.blogger.com/atom/ns#' term='USB Devices'/><title type='text'>A USB Beverage Chiller?</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://us.st12.yimg.com/us.st.yimg.com/I/xoxide_2030_46295221"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 285px; height: 260px;" src="http://us.st12.yimg.com/us.st.yimg.com/I/xoxide_2030_46295221" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;Hmm.. that's an interesting Idea. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This product is available &lt;a href="http://www.xoxide.com/cool-it-usb-beverage-cooler.html"&gt;here&lt;/a&gt; for 24.99 USD. But the web site also says it is out of stock.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Looks useful. Is in't it?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;At Amazon also it is available. Here is the &lt;a href="http://www.amazon.com/D-H-CoolIT-Beverage-Chiller/dp/B000EDJJMI"&gt;link&lt;/a&gt;.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6069588175912980102-9123294553139416631?l=comvcon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://comvcon.blogspot.com/feeds/9123294553139416631/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6069588175912980102&amp;postID=9123294553139416631' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6069588175912980102/posts/default/9123294553139416631'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6069588175912980102/posts/default/9123294553139416631'/><link rel='alternate' type='text/html' href='http://comvcon.blogspot.com/2008/12/usb-beverage-chiller.html' title='A USB Beverage Chiller?'/><author><name>Vidya</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6069588175912980102.post-1160317445082865801</id><published>2008-12-09T16:39:00.002+05:30</published><updated>2008-12-09T16:48:39.344+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='USB Ideas'/><title type='text'>What to do with small memory size USB Flash Drives</title><content type='html'>Today I found out an interesting article posted by &lt;span class="Apple-style-span" style="font-family: Arial; font-size: 12px; "&gt;&lt;a href="http://www.mobilemag.com/feedback.php?content=16673&amp;amp;who=9721830432" style="color: rgb(0, 58, 189); text-decoration: none; "&gt;Michael Kwan &lt;/a&gt;&lt;a href="http://www.mobilemag.com/content/100/349/C16673/"&gt;here &lt;/a&gt;&lt;/span&gt;that explains how to get benifit from existing USB Drives.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here I will give the synopsis.&lt;/div&gt;&lt;div&gt;1. If you are using Windows Vista you can convert your USB drive to a Computer Lock. The process of doing this is explained &lt;a href="http://lifehacker.com/software/vista/windows-vista-tip-enable-bitlocker-with-a-usb-drive-234459.php"&gt;here&lt;/a&gt; by &lt;span class="Apple-style-span" style="font-family: Arial; font-size: 13px; "&gt;&lt;a href="http://lifehacker.com/software/vista/windows-vista-tip-enable-bitlocker-with-a-usb-drive-234459.php" style="color: rgb(0, 58, 189); text-decoration: none; "&gt;Lifehacker&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;2. There are versions of Linux that you can carry in the Thumb Drive. Visit &lt;a href="http://www.pendrivelinux.com/"&gt;http://www.pendrivelinux.com &lt;/a&gt;for the possibilities.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;3. Again you can load portable Apps. This helps you when you go to internet cafe as suggested by Michael Kwan. You can find some USB portable Apps here(&lt;a href="http://portableapps.com/"&gt;http://portableapps.com/&lt;/a&gt;). &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you also have any more Ideas feel free to add them here.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6069588175912980102-1160317445082865801?l=comvcon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://comvcon.blogspot.com/feeds/1160317445082865801/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6069588175912980102&amp;postID=1160317445082865801' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6069588175912980102/posts/default/1160317445082865801'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6069588175912980102/posts/default/1160317445082865801'/><link rel='alternate' type='text/html' href='http://comvcon.blogspot.com/2008/12/what-to-do-with-small-memory-size-usb.html' title='What to do with small memory size USB Flash Drives'/><author><name>Vidya</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6069588175912980102.post-3684097361552964957</id><published>2008-12-09T16:28:00.002+05:30</published><updated>2008-12-09T16:35:38.652+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='USB Devices'/><title type='text'>Acer and DisplayLink unleases a new 22-inch USB Monitor</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.slipperybrick.com/wp-content/uploads/2008/12/acer-b223.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 500px; height: 405px;" src="http://www.slipperybrick.com/wp-content/uploads/2008/12/acer-b223.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: 12px; line-height: 17px; "&gt;&lt;p&gt;Acer, and DisplayLink, announced the availability of a new USB computer LCD monitor which still supports Windows Vista’s Aero Glass interface as well as other 3D functions. &lt;/p&gt;&lt;p&gt;The B223 USB LCD Monitor comes with the following features:&lt;/p&gt;&lt;p&gt;22″ LCD display, 1,680 x 1,050 resolution, DisplayLink DL-160 network display chip, USB 2.0 connectivity, 5ms response time, 32-bit, true-color graphics. &lt;/p&gt;&lt;p&gt;The B223’s height, rotation and swivel angles can be adjusted for your optimal viewing comfort. It’s already available in Europe. Priced around $430.&lt;br /&gt;&lt;span id="more-15070"&gt;&lt;/span&gt;&lt;br /&gt;DisplayLink plug-and-play technology helps you to quickly connect the screen without having to install any drivers in Windows; DisplayLink offers separate Mac drivers for USB monitors but hasn’t said whether the B223 is supported.&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6069588175912980102-3684097361552964957?l=comvcon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://comvcon.blogspot.com/feeds/3684097361552964957/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6069588175912980102&amp;postID=3684097361552964957' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6069588175912980102/posts/default/3684097361552964957'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6069588175912980102/posts/default/3684097361552964957'/><link rel='alternate' type='text/html' href='http://comvcon.blogspot.com/2008/12/acer-and-displaylink-unleases-new-22.html' title='Acer and DisplayLink unleases a new 22-inch USB Monitor'/><author><name>Vidya</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6069588175912980102.post-5733736506650520121</id><published>2008-12-09T16:24:00.002+05:30</published><updated>2008-12-09T16:28:42.789+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='USB Based Control Systems'/><category scheme='http://www.blogger.com/atom/ns#' term='USB Devices'/><category scheme='http://www.blogger.com/atom/ns#' term='USB News'/><title type='text'>PC and USB based  Relay and Control Products</title><content type='html'>&lt;a href="http://www.j-works.com/"&gt;http://www.j-works.com/&lt;/a&gt; is manufacturer of PC and USB based  Relay.  DPDT,  SPDT, Temperature, Thermocouple, I/O, Digital, FPGA, Counter, WDT, Encoder, USB Switch, Analog, Opto IO, Monitor, USB IO, USB DIO, USB ADC, USB DAC, USB Measurement and Control Products.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;They have whole portfolio of USB Opto I/O Modules, USB WatchDog Timers Modules, USB Relay modules, USB Digital I/O (DIO) modules, USB Analog Measurement modules, USB AC Monitor Modules, USB Counter  Modules, and USBTemperature modules.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;They recently released their &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;J-Works JSB291-03 USB controlled SPDT 20 Amp relay module&lt;/span&gt; now and it is in full production.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Wow, this is one company that is fully into control systems and USB.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6069588175912980102-5733736506650520121?l=comvcon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://comvcon.blogspot.com/feeds/5733736506650520121/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6069588175912980102&amp;postID=5733736506650520121' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6069588175912980102/posts/default/5733736506650520121'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6069588175912980102/posts/default/5733736506650520121'/><link rel='alternate' type='text/html' href='http://comvcon.blogspot.com/2008/12/pc-and-usb-based-relay-and-control.html' title='PC and USB based  Relay and Control Products'/><author><name>Vidya</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6069588175912980102.post-215346732496011216</id><published>2008-12-09T16:16:00.002+05:30</published><updated>2008-12-09T16:23:49.346+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='USB Devices'/><title type='text'>Amazing Tiny 8GB Pico USB drive</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://mobilitysite.com/wp-content/uploads/2008/12/clip-image0027.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 215px; height: 186px;" src="http://mobilitysite.com/wp-content/uploads/2008/12/clip-image0027.jpg" border="0" alt="" /&gt;&lt;/a&gt;This Tiny USB Drive has 8GB capacity. This family of USB drives are available in the range of 1 GB to 8GB.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Visit &lt;a href="http://www.supertalent.com/"&gt;http://www.supertalent.com/&lt;/a&gt; and &lt;a href="http://mobilitysite.com/2008/12/amazing-blazing-tiny-8gb-pico-usb-drive/"&gt;here&lt;/a&gt; to get more details on this device.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It is USB 2.0 compliant and the gold plated one is around &lt;span class="Apple-style-span" style="color: rgb(32, 32, 32); font-family: Arial; font-size: 12px; line-height: 20px; "&gt;$39.95.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6069588175912980102-215346732496011216?l=comvcon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://comvcon.blogspot.com/feeds/215346732496011216/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6069588175912980102&amp;postID=215346732496011216' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6069588175912980102/posts/default/215346732496011216'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6069588175912980102/posts/default/215346732496011216'/><link rel='alternate' type='text/html' href='http://comvcon.blogspot.com/2008/12/amazing-tiny-8gb-pico-usb-drive.html' title='Amazing Tiny 8GB Pico USB drive'/><author><name>Vidya</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6069588175912980102.post-4615592907186514612</id><published>2008-12-09T16:13:00.002+05:30</published><updated>2008-12-09T16:16:11.891+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='USB Devices'/><title type='text'>LaCie USB Speakers</title><content type='html'>&lt;div&gt;Look at their ergonomics. These USB speakers look different.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.andpop.com/images/USB_Spk_laptop.jpgyokpnuiap.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 300px; height: 214px;" src="http://www.andpop.com/images/USB_Spk_laptop.jpgyokpnuiap.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And here is a &lt;a href="http://www.andpop.com/article/12842"&gt;good review&lt;/a&gt; on these speakers.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6069588175912980102-4615592907186514612?l=comvcon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://comvcon.blogspot.com/feeds/4615592907186514612/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6069588175912980102&amp;postID=4615592907186514612' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6069588175912980102/posts/default/4615592907186514612'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6069588175912980102/posts/default/4615592907186514612'/><link rel='alternate' type='text/html' href='http://comvcon.blogspot.com/2008/12/lacie-usb-speakers.html' title='LaCie USB Speakers'/><author><name>Vidya</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6069588175912980102.post-702610975295229710</id><published>2008-11-25T07:21:00.002+05:30</published><updated>2008-11-25T07:29:50.363+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='USB Protocol Analyzers'/><category scheme='http://www.blogger.com/atom/ns#' term='USB 3.0'/><category scheme='http://www.blogger.com/atom/ns#' term='USB News'/><category scheme='http://www.blogger.com/atom/ns#' term='USB Compliance'/><title type='text'>Agilent Technologies Announces USB 3.0 SuperSpeed Physical Layer Compliance Test Application</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: Arial; font-size: 13px; line-height: 17px; "&gt;Agilent Technologies Inc today announced Super Speed USB 3.0 comprehensive test equipment. This solution will mainly help in testing and making USB devices compliant with USB-IF requirements.&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: 13px; line-height: 17px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: 13px; line-height: 17px;"&gt;Agilent demonstrated their solution at the &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;First USB 3.0 Developers Conference&lt;/span&gt; in San Jose, CA. &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: 13px; line-height: 17px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: 13px; line-height: 17px;"&gt;The &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Super Speed USB or USB 3.0 &lt;/span&gt;can deliver upto 10 times speeds as compared with USB 2.0 and makes power usage more efficient. SuperSpeed USB will be necessary for data-storage devices transferring more than 25 Gbps.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: 13px; line-height: 17px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: 13px; line-height: 17px;"&gt;&lt;div class="p" style="margin-bottom: 14px; "&gt;-- Infiniium DSO/DSA91304A 13-GHz oscilloscope for transmitter testing;&lt;/div&gt;&lt;div class="p" style="margin-bottom: 14px; "&gt;-- Agilent USB 3.0 transmitter compliance test application;&lt;/div&gt;&lt;div class="p" style="margin-bottom: 14px; "&gt;-- Agilent USB 3.0 test fixtures;&lt;/div&gt;&lt;div class="p" style="margin-bottom: 14px; "&gt;-- J-BERT N4903A, a high-performance serial BERT with complete jitter tolerance test for characterizing USB 3.0 SuperSpeed serial communication links;&lt;/div&gt;&lt;div class="p" style="margin-bottom: 14px; "&gt;-- Agilent ADS simulation software for creating and analyzing USB 3.0 channels;&lt;/div&gt;&lt;div class="p" style="margin-bottom: 14px; "&gt;-- Agilent VNA/PNA network analyzer N5230C-245 for measuring and analyzing USB 3.0 channels.&lt;/div&gt;&lt;div class="p" style="margin-bottom: 14px; "&gt;Additional information about Agilent's USB compliance test solution is available at &lt;a class="lk001" target="_blank" href="http://www.agilent.com/find/N5416A" style="color: rgb(0, 0, 204); text-decoration: none; "&gt;www.agilent.com/find/N5416A&lt;/a&gt;.&lt;br /&gt;&lt;/div&gt;&lt;div class="p" style="margin-bottom: 14px; "&gt;For other USB Analyzers that can be used with USB 2.0 &lt;a href="http://comvcon.blogspot.com/2008/11/list-of-usb-protocol-analyzers.html"&gt;click here&lt;/a&gt;.&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: 13px; line-height: 17px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: 13px; line-height: 17px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: 13px; line-height: 17px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: 13px; line-height: 17px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6069588175912980102-702610975295229710?l=comvcon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://comvcon.blogspot.com/feeds/702610975295229710/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6069588175912980102&amp;postID=702610975295229710' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6069588175912980102/posts/default/702610975295229710'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6069588175912980102/posts/default/702610975295229710'/><link rel='alternate' type='text/html' href='http://comvcon.blogspot.com/2008/11/agilent-technologies-announces-usb-30.html' title='Agilent Technologies Announces USB 3.0 SuperSpeed Physical Layer Compliance Test Application'/><author><name>Vidya</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6069588175912980102.post-4762802781321830174</id><published>2008-11-24T22:15:00.002+05:30</published><updated>2008-11-24T22:23:33.049+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Using MPUSBAPI.DLL'/><category scheme='http://www.blogger.com/atom/ns#' term='Microchip USB Controllers'/><title type='text'>Using MPUSBAPI.CPP directly instead of MPUSBAPI.DLL</title><content type='html'>&lt;span style="font-family:Arial;"&gt;&lt;b&gt;&lt;u style="text-decoration: none;"&gt;&lt;div style=""&gt;&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS'; font-size: 13px; "&gt;&lt;div style="text-decoration: underline;"&gt;&lt;span class="Apple-style-span" style="font-style: italic; "&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153); "&gt;&lt;span class="Apple-style-span" style="font-size: 18px; "&gt;Related Links&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=""&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153); font-size: 18px; font-style: italic; "&gt;&lt;div style=""&gt;&lt;span class="Apple-style-span" style="font-size: small; "&gt;&lt;span class="Apple-style-span" style="font-weight: normal; "&gt;1. For learning how to Usie MPUSBAPI.DLL with VC++ 6.0 click &lt;a href="http://comvcon.blogspot.com/2008/11/interacting-with-microchip-full-speed.html"&gt;here&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=""&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;2. For &lt;a href="http://comvcon.googlepages.com/main.cpp"&gt;main.c&lt;/a&gt; file used in this example click &lt;a href="http://comvcon.googlepages.com/main.cpp"&gt;here&lt;/a&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-decoration: underline;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="text-decoration: underline;"&gt;1. Introduction&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;All the time, we are trying to use the MPUSBAPI.DLL in various development environments. We tried to use the .DLL in         Load-time Linking and Run-time Linking methods. Even Microchip provided samples that show how to use the .DLL in both         methods.         &lt;br /&gt;&lt;br /&gt;        After trying few things I realized that the &lt;b&gt;_mpusbapi.cpp&lt;/b&gt; file can be added to the project directly. The two         important pointes to be noted are:        &lt;br /&gt;             - When using along with Borland C++ Builder, _mpusbapi.cpp can be used without modifications.        &lt;br /&gt;             - When using with other environments few changes are required.        &lt;br /&gt;&lt;br /&gt;The project is created in Visual C++ 6.0. But almost the same steps/concepts can be adopted while developing your project in other C++ environments also.&lt;!--         The following flash presentation displays how a new project can be created.        &lt;br /&gt;&lt;br /&gt;         If you cannot view the presenation, I listed the steps below the presentaion and you can follow them to create a         Visual C++ 6.0 project.        &lt;br /&gt;&lt;br /&gt;  --&gt; &lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family:Arial;"&gt;&lt;b&gt;&lt;u&gt;2. Steps to use the _mpusbapi.cpp instead of mpusbapi.dll in Visual C++ 6.0&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial;"&gt;&lt;span style="font-family:Arial;"&gt;&lt;br /&gt;   &lt;ol&gt;   &lt;li&gt;Create a Win32 Console application as an &lt;b&gt;Empty Project&lt;/b&gt;.&lt;/li&gt;   &lt;li&gt;Create &lt;b&gt;main.cpp&lt;/b&gt; file and add it to the project.&lt;/li&gt;   &lt;li&gt;Now, using Windows Explorer copy the files &lt;b&gt;_mpusbapi.cpp&lt;/b&gt;, &lt;b&gt;_mpusbapi.h&lt;/b&gt; and &lt;b&gt;Ioctls.h&lt;/b&gt; files into your project folder.       These files are available in &lt;span style="color:darkblue;"&gt;&lt;b&gt;C:\MCHPFSUSB\Pc\Mpusbapi\Dll\Borland_C\Source&lt;/b&gt;&lt;/span&gt; folder. &lt;/li&gt;   &lt;li&gt;Go back to VC++ environment, and add the files to the newly created project. For this select the &lt;b&gt;FileView&lt;/b&gt; tab in &lt;b&gt;Workspace&lt;/b&gt; window. This window provides options to add the files in 3 sections. Source Files (.CPP) and Header Files(.H) and Resource Files(.RES). In our example we do not have .RES files. Add _mpusbapi.cpp under Source Files section and _mpusbapi.h &amp;amp; _Ioctls.h in Header Files Section.&lt;br /&gt;   &lt;u&gt;NOTE:&lt;/u&gt; If you compile the project at this point, it will throw errors. We havn't added any code in main.cpp. And some libraries are missing in the project settings at this point of time.&lt;br /&gt;   &lt;u&gt;Errors:&lt;/u&gt;    &lt;span style="font-family:courier;font-size:85%;"&gt;     &lt;br /&gt;      Compiling...     &lt;br /&gt;      main.cpp     &lt;br /&gt;      _mpusbapi.cpp     &lt;br /&gt;      C:\VCExamples\test\_mpusbapi.cpp(53) : warning C4068: unknown pragma     &lt;br /&gt;      Linking...     &lt;br /&gt;         Creating library Debug/test.lib and object Debug/test.exp     &lt;br /&gt;      _mpusbapi.obj : error LNK2001: unresolved external symbol __imp__SetupDiGetDeviceInterfaceDetailA@24     &lt;br /&gt;      _mpusbapi.obj : error LNK2001: unresolved external symbol __imp__SetupDiEnumDeviceInterfaces@20     &lt;br /&gt;      _mpusbapi.obj : error LNK2001: unresolved external symbol __imp__SetupDiDestroyDeviceInfoList@4     &lt;br /&gt;      _mpusbapi.obj : error LNK2001: unresolved external symbol __imp__SetupDiGetClassDevsA@16     &lt;br /&gt;      LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main     &lt;br /&gt;      Debug/test.exe : fatal error LNK1120: 5 unresolved externals     &lt;br /&gt;      Error executing link.exe.     &lt;br /&gt;    &lt;br /&gt;      test.exe - 6 error(s), 1 warning(s)     &lt;br /&gt;   &lt;/span&gt;       &lt;/li&gt;    &lt;li&gt;The next step is fixing these errors.    &lt;br /&gt;   - &lt;b&gt;&lt;span style="color:darkblue;"&gt;unknown pragma :&lt;/span&gt;&lt;/b&gt; This warning comes because the file is originally built for Borland C++ and Borland C++ prgrams    can not be understood by VC++. So remove the line &lt;b&gt;#pragma argsused&lt;/b&gt; from _mpusbapi.cpp file.    &lt;br /&gt;&lt;br /&gt;   - &lt;b&gt;&lt;span style="color:darkblue;"&gt;error LNK2001: unresolved external symbol :&lt;/span&gt;&lt;/b&gt; This error came because we need to add setupapi.lib file to the libararies list    in the project settings. The functions missing are from this library. So, goto &lt;&lt; &lt;b&gt; Project menu-&gt;Settings (Alt+F7)-&gt;Link Tab &lt;/b&gt; &gt;&gt;. Under &lt;b&gt;Object/Library Modules&lt;/b&gt;    add &lt;b&gt;setupapi.lib&lt;/b&gt; and click on ok.    &lt;br /&gt;&lt;br /&gt;   - &lt;b&gt;&lt;span style="color:darkblue;"&gt;error LNK2001: unresolved external symbol &lt;i&gt;_main&lt;/i&gt; :&lt;/span&gt;&lt;/b&gt; This error came as we did not add any code to main.cpp. We will do that at the end.    &lt;br /&gt;&lt;br /&gt;   &lt;/li&gt;    &lt;li&gt;The next step is setting the byte alignment to 1 byte. For this goto &lt;&lt; &lt;b&gt; Project menu-&gt;Settings (Alt+F7)-&gt;C/C++ Tab &lt;/b&gt; &gt;&gt;. Under &lt;b&gt;Category List box&lt;/b&gt; select &lt;b&gt;Code Generation&lt;/b&gt;. Selecting this displays four more list boxes.       Under &lt;b&gt;Struct member alignment&lt;/b&gt; select &lt;span style="color:darkblue;"&gt;1 byte&lt;/span&gt;.      &lt;br /&gt;&lt;br /&gt;   Then from same tab, this time from &lt;b&gt;Category List box&lt;/b&gt; select &lt;b&gt;Precompiled Headers&lt;/b&gt;. Then select &lt;span style="color:darkblue;"&gt;Not using precompiled headers&lt;/span&gt; and click on OK. If you create some other type of project, then make sure if the precompiled headers agree for 1-byte struct alignment. Normally the compiler throws a warning in case of any differences. If not change the setting to "Not using precompiled headers".&lt;br /&gt;      &lt;/li&gt;    &lt;li&gt;Now open to main.cpp file by selecting it from &lt;&lt; &lt;b&gt; Workspace Window-&gt;FileView tab&lt;/b&gt;&gt;&gt;.&lt;br /&gt;   Copy&amp;amp;Paste the content from &lt;span style="color:darkblue;"&gt;&lt;b&gt;C:\MCHPFSUSB\Pc\Mpusbapi\Example Applications\Borland_C\Example 01 - Load-time Linking\console.cpp&lt;/b&gt;&lt;/span&gt;.    &lt;br /&gt;Dont forget to remove the pragma "#pragma argsused" from this file also.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;NOTE:&lt;/u&gt;I added some more code to main.c used in this article.    The link to the file is available in the resources box(top-right hand side of screen).&lt;/li&gt;    &lt;li&gt;Connect your demo board in the usual way and build and run this application.&lt;/li&gt;   &lt;/ol&gt;   &lt;br /&gt;&lt;br /&gt;In _MPUSBAPI.CPP file there is a DllEntryPoint entry function. To my knowledge the compiler will consider this function as a normal function rather than an entry point as we are not building a DLL here. For exe files main() is the entry point.&lt;br /&gt;&lt;br /&gt;If get into trouble because of this function, then you can remove it. Other functions can be called straight away like how we do in Load-time linking.&lt;br /&gt;&lt;br /&gt;To use the functions like MPUSBOpen, MPUSBRead etc.. you can follow the same syntax as Load-time linking. All then you need to do is writing a &lt;b&gt; #include "_mpusbapi.h"&lt;/b&gt; on top of your source code. Before that you also need to include windows.h. &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial;"&gt;&lt;span style="font-family:Arial;"&gt;   &lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:Arial;"&gt;         &lt;!-- Link to presentation --&gt;           &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6069588175912980102-4762802781321830174?l=comvcon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://comvcon.blogspot.com/feeds/4762802781321830174/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6069588175912980102&amp;postID=4762802781321830174' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6069588175912980102/posts/default/4762802781321830174'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6069588175912980102/posts/default/4762802781321830174'/><link rel='alternate' type='text/html' href='http://comvcon.blogspot.com/2008/11/using-mpusbapicpp-directly-instead-of.html' title='Using MPUSBAPI.CPP directly instead of MPUSBAPI.DLL'/><author><name>Vidya</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6069588175912980102.post-3267155468729356733</id><published>2008-11-24T21:37:00.003+05:30</published><updated>2008-11-24T21:42:15.216+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Using MPUSBAPI.DLL'/><category scheme='http://www.blogger.com/atom/ns#' term='Microchip USB Controllers'/><title type='text'>Interacting with Microchip Full Speed USB Demo board using Visual Basic.NET</title><content type='html'>&lt;b dtid="844424930132013"&gt;&lt;u dtid="844424930132014" style="text-decoration: none;"&gt;&lt;div style=""&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Source Files&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=""&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;1. &lt;a href="http://comvcon.googlepages.com/vbnet.cdecl.zip"&gt;Download&lt;/a&gt; &lt;/span&gt;&lt;span class="Apple-style-span" style="font-style: normal; "&gt;&lt;span class="Apple-style-span" style="font-style: italic; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;the Visual Basic.NET Example with &lt;/span&gt;&lt;/span&gt;&lt;b dtid="844424930132001" style=""&gt;&lt;span class="Apple-style-span" style="font-style: italic; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;_cdecl&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="font-style: italic; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=""&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;2. &lt;a href="http://comvcon.googlepages.com/vbnet.stdcall.zip"&gt;Download&lt;/a&gt; the Visual Basic.NET Example with  &lt;/span&gt;&lt;/span&gt;&lt;b dtid="844424930132005" style=""&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;_stdcall&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-decoration: underline;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="text-decoration: underline;"&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;1. What you need to know.&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;VB 6.0 allows to invoke functions from DLLs with &lt;b dtid="844424930132020"&gt;_stdcall&lt;/b&gt; only. But VB.NET allows to invoke  functions &lt;b dtid="844424930132021"&gt;_cdecl&lt;/b&gt; calling convention  also. &lt;br /&gt;&lt;br /&gt;In this article I provided 2 project files  for interacting with the Microchip Full Speed USB Demo Board. These projects  interact with the Microchip general purpose USB Driver. MPUSBAPI.DLL with &lt;b dtid="844424930132024"&gt;_cdecl&lt;/b&gt; can be downloaded from Microchip  directly. The other example uses &lt;b dtid="844424930132025"&gt;_stdcall&lt;/b&gt; calling convention. For this the  MPUSBAPI.DLL need to be rebuilt with &lt;b dtid="844424930132026"&gt;_stdcall&lt;/b&gt; convention. Also refer to the &lt;a href="http://www.comvcon.com/VB6MCHPUSB.html" dtid="844424930132027"&gt;previous article&lt;/a&gt; for more information on  how to use the &lt;b dtid="844424930132028"&gt;_stdcall&lt;/b&gt; DLL in VB 6.0.  Also previous articles gives an idea from where to download the files. &lt;br /&gt;&lt;br /&gt;&lt;u dtid="844424930132031"&gt;&lt;b dtid="844424930132032"&gt;&lt;span  dtid="844424930132033" style="color:blue;"&gt;NOTE:&lt;/span&gt;&lt;/b&gt;&lt;/u&gt; The _cdecl DLL  contains underscore(_) prefixed to the funtion names. Where as the _stdcall DLL  will not contain the underscore(_) prefixed.&lt;br /&gt;&lt;br /&gt;To  interact with Microchip USB demo board from a PC MPUSBAPI.DLL need to be used.  &lt;br /&gt;&lt;br /&gt;&lt;b dtid="844424930132038"&gt;&lt;u dtid="844424930132039"&gt;2.  How Visual Basic.NET and Visual Basic 6.0 access DLLs, differences:&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Visual Basic.NET is a complete new development environment that is based  on the .NET framework. The VB.NET is a complete Object Oriented Programming  language and it supports modernization of code extensively. Most of the basic  keywords remained same, but there are many additional keywords. Being a full  object oriented language, VB.NET supports features like inheritance,  polymorphism, abstraction, and encapsulation. As far as declaring the functions  to access functions in .DLL file is same as VB 6.0 syntax. The major difference  with respect to VB 6.0 version of the example code is in place of &lt;b dtid="844424930132045"&gt;VarPtr&lt;/b&gt; the member functions of &lt;b dtid="844424930132046"&gt;System.Runtime.InteropServices.Marshal&lt;/b&gt;  need to be used. &lt;b dtid="844424930132047"&gt;Marshaling&lt;/b&gt; is a  mechanism used for converting/representing data between various platforms or  environments in way that the content will never be lost. The &lt;b dtid="844424930132048"&gt;System.Runtime.InteropServices.Marshal&lt;/b&gt; is  a .NET class that is used for this purpose. &lt;br /&gt;&lt;br /&gt;The  &lt;b dtid="844424930132051"&gt;UnsafeAddrOfPinnedArrayElement&lt;/b&gt; is used  for obtaining the base address of the buffer that is used in MPUSBRead and  MPUSBWrite function calls. &lt;br /&gt;&lt;br /&gt;The other differences are language and  environment specific differences. From the VB 6.0 example, .BAS file and .FRM  files are converted to their respective .VB files. &lt;br /&gt;&lt;br /&gt;&lt;b dtid="844424930132056"&gt;&lt;u dtid="844424930132057"&gt;3.  VBMPUSBAPI.vb:&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;This file also provides the same set of  functions which provided in the previous example. &lt;ul dtid="844424930132060"&gt;&lt;li dtid="844424930132061"&gt;&lt;b dtid="844424930132062"&gt;Initialize&lt;/b&gt;: Used for initializing the  variables. &lt;/li&gt;&lt;li dtid="844424930132063"&gt;&lt;b dtid="844424930132064"&gt;OpenMPUSBDevice&lt;/b&gt;: Used for opening the data  pipes of the Demo application. &lt;/li&gt;&lt;li dtid="844424930132065"&gt;&lt;b dtid="844424930132066"&gt;CloseMPUSBDevice&lt;/b&gt;: Used for closing the  opened data pipes. &lt;/li&gt;&lt;li dtid="844424930132067"&gt;&lt;b dtid="844424930132068"&gt;SendReceivePacket&lt;/b&gt;: Used for performing the  complete Demo application transfer. You can observe that SendData and  ReceiveData are passed as Byte arrays. Inside the function the address of the  first elements of the Byte arrays are passed to the Read and Write functions in  the DLL. &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;b dtid="844424930132071"&gt;&lt;u dtid="844424930132072"&gt;4. VB6PICUSBDemo.vb:&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;This  is the source code file that is generated when VB6PICUSBDemo.frm is ported to  VB.NET. This file contains the actual example code on how to use the above  functions. This ends the 3 article series on Visual Studio.NET. There is already  one article available at &lt;a href="http://www.piccoder.co.uk/content/view/42/26/" dtid="844424930132075"&gt;www.piccoder.co.uk&lt;/a&gt;. So I am not touching  the C# aspect. &lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6069588175912980102-3267155468729356733?l=comvcon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://comvcon.blogspot.com/feeds/3267155468729356733/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6069588175912980102&amp;postID=3267155468729356733' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6069588175912980102/posts/default/3267155468729356733'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6069588175912980102/posts/default/3267155468729356733'/><link rel='alternate' type='text/html' href='http://comvcon.blogspot.com/2008/11/interacting-with-microchip-full-speed_306.html' title='Interacting with Microchip Full Speed USB Demo board using Visual Basic.NET'/><author><name>Vidya</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6069588175912980102.post-3866962557436859724</id><published>2008-11-24T21:20:00.004+05:30</published><updated>2008-11-24T21:34:27.032+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Using MPUSBAPI.DLL'/><category scheme='http://www.blogger.com/atom/ns#' term='Microchip USB Controllers'/><title type='text'>Interacting with Microchip Full-Speed USB Demo Board using Visual Basic</title><content type='html'>This is MPUSBAPI Visual Basic 6.0 Example.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;Source Code available &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://comvcon.googlepages.com/vb6picusbdemo.zip"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;here&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;Modified _stdcall MPUSBAPI.DLL Files available &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://comvcon.googlepages.com/mpusbmodifiedforvb.zip"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;here&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;The &lt;a href="http://comvcon.blogspot.com/2008/11/interacting-with-microchip-full-speed.html"&gt;previous article&lt;/a&gt; shows how to connect to the PICDEM FS Demo Board using Visual C++ and Win32 API. The previous article also explains from where to get the required files. So, take a look at it if you are starting from scratch. And this article uses an example application with similar functionality and User Interface as application written in VC++ in the previous article. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In this article I will explain, how this can be done in Visual Basic 6.0. The Visual Basic.NET takes a different approach which I will explain in the next article. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The MPUSBAPI.DLL that is provided along with package MCHPFSUSB.ZIP is a dynamic-link library(DLL) that provides a set of public functions for communicating with the Demo Board with the custom driver. And both Visual Basic 6.0 and Visual Basic.NET provides mechanisms to access the Win32 DLL directly even though there is no .LIB file available. For using a DLL in VB one does not need to use the LoadLibrary() API function set. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;But there is a catch. The DLL functions can only be used in VB provided they are implemented using the Standard Calling convention. i.e functions declared with _stdcall. This places a limitation on the usage of a number DLLs in Visual Basic that are developed using Visual C++ or Borland C++ tools if the _cdecl or any other calling convention methods are used while declaring or defining the functions. &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;Please refer to http://support.microsoft.com/default.aspx?scid=kb;en-us;Q153586 for more information on how DLL need to build for using in Visual Basic. &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; "&gt;The DLL provided by Microchip is implemented using the _cdecl calling convention. This may be for achieving higher performance. So, we can not use it directly in Visual Basic. The DLL Source project need to be re-compiled by changing the declarations of the exported function to &lt;b&gt;_stdcall&lt;/b&gt;. The modified source code of the MPUSBAPI.DLL can be downloaded &lt;a href="file:///F:/comvcon/Downloads/MPUSBModifiedForVB.zip"&gt;here&lt;/a&gt;. Download this source code and re-build it using Borland C++ Builder tools. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color:blue;"&gt;NOTE&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;The DLL need to be recompiled by adding _stdcall in place of _cdecl to all exported functions. &lt;br /&gt;&lt;br /&gt;Ok, lets move on now.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style=" -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px;font-family:Arial;"&gt;&lt;div&gt;First things first, Visual Basic 6.0 does not support pointers. Which means that it is not supporting HANDLEs. HANDLEs are used in Win32 API to access system level objects. The HANDLEs in VC++ are represented as pointers. When it comes to VB, there is no way to declare pointers. But pointer is nothing but a variable that stores in address. An address is a numeric value of 32 bit length in WIN32 Operating Systems. That means variables of type Long datatype can be used for representing HANDLEs in VB. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Similarly corresponding VB data types which can hold the data need to be identified for each argument and return types of the functions in the DLL. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;For more information on how these functions work, take a look at the previous article. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now the task at hand is creating a .BAS file which will hold references to the above listed functions in the syntax that is followed in VB 6.0. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;Ok, it is time to learn some theory.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Next step is creating .BAS file in the Visual Basic with the list of exported (public) functions in the DLL. The MPUSBAPI.DLL has following functions(This DLL is created with the _stdcall and notice that the underscores prefix of the functions are gone.)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;li&gt;DWORD MPUSBGetDLLVersion(void)&lt;/li&gt;&lt;li&gt;DWORD MPUSBGetDeviceCount(PCHAR pVID_PID)&lt;/li&gt;&lt;li&gt;HANDLE MPUSBOpen(/*Input */ DWORD instance, /* Input */ PCHAR pVID_PID, /* Input */ PCHAR pEP, /*Input*/ DWORD dwDir, /*Input*/ DWORD dwReserved);&lt;/li&gt;&lt;li&gt;DWORD MPUSBRead(/*Input*/ HANDLE handle, /*Output*/ PVOID pData, /* Input */DWORD dwLen, /* Output */PDWORD pLength, /*Input*/ DWORD dwMilliseconds);&lt;/li&gt;&lt;li&gt;DWORD MPUSBWrite(/*Input*/ HANDLE handle, /*Input*/ PVOID pData, /*Input*/ DWORD dwLen, /*Output*/ PDWORD pLength, /*Input*/ DWORD dwMilliseconds);&lt;/li&gt;&lt;li&gt;DWORD MPUSBReadInt(/*Input*/ HANDLE handle, /*Output*/ PVOID pData, /* Input */DWORD dwLen, /* Output */PDWORD pLength, /*Input*/ DWORD dwMilliseconds);&lt;/li&gt;&lt;li&gt;DWORD MPUSBClose(/*Input*/ HANDLE handle);&lt;/li&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;u&gt;Keywords used in VB 6.0 for declaring API functions:&lt;/u&gt;&lt;/b&gt; &lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;u&gt;Public:&lt;/u&gt;  This keyword is used to indicate that the function declared is public function which can accessed through out the VB program.&lt;/li&gt;&lt;li&gt;&lt;u&gt;Declare:&lt;/u&gt;  Used at module level to declare references to external procedures in a dynamic-link library (DLL).&lt;/li&gt;&lt;li&gt;&lt;u&gt;Function/Sub:&lt;/u&gt;  &lt;i&gt;Function&lt;/i&gt; indicates that the procedure returns a value that can be used in an expression. &lt;i&gt;Sub&lt;/i&gt; indicates that the procedure does not return a value.&lt;/li&gt;&lt;li&gt;&lt;u&gt;Lib:&lt;/u&gt;  Indicates that a DLL or code resource contains the procedure being declared. The &lt;i&gt;Lib&lt;/i&gt; clause is required for all declarations when using a DLL.&lt;/li&gt;&lt;li&gt;&lt;u&gt;Alias:&lt;/u&gt;  Indicates that the procedure being called has another name in the DLL. This is useful when the external procedure name is the same as a keyword. You can also use &lt;i&gt;Alias&lt;/i&gt; when a DLL procedure has the same name as a public variable, constant, or any other procedure in the same scope. &lt;i&gt;Alias&lt;/i&gt; is also useful if any characters in the DLL procedure name are not allowed by the DLL naming convention.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Syntax used in VB 6.0 for declaring API functions:&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;[ &lt;b&gt;Public&lt;/b&gt; | &lt;b&gt;Private&lt;/b&gt;] &lt;b&gt;Declare&lt;/b&gt; { &lt;b&gt;Sub&lt;/b&gt; | &lt;b&gt;Function&lt;/b&gt; } &lt;i&gt;name&lt;/i&gt; &lt;b&gt;Lib&lt;/b&gt; &lt;b&gt;"&lt;/b&gt;&lt;i&gt;libname&lt;/i&gt;&lt;b&gt;"&lt;/b&gt; [ &lt;b&gt;Alias&lt;/b&gt; &lt;b&gt;"&lt;/b&gt;&lt;i&gt;aliasname&lt;/i&gt;&lt;b&gt;" &lt;/b&gt;] [&lt;b&gt;(&lt;/b&gt;[ &lt;i&gt;arglist&lt;/i&gt;]&lt;b&gt;)&lt;/b&gt;] [ &lt;b&gt;As&lt;/b&gt; &lt;i&gt;type &lt;/i&gt;] &lt;br /&gt;&lt;br /&gt;&lt;u&gt;Example:&lt;/u&gt; &lt;br /&gt;&lt;b&gt;Public&lt;/b&gt; &lt;b&gt;Declare&lt;/b&gt; &lt;b&gt;Function&lt;/b&gt; &lt;i&gt;LoadLibrary&lt;/i&gt; &lt;b&gt;Lib&lt;/b&gt; &lt;i&gt;"kernel32"&lt;/i&gt; &lt;b&gt;Alias&lt;/b&gt; &lt;i&gt;"LoadLibraryA"&lt;/i&gt; &lt;b&gt;(&lt;/b&gt; &lt;i&gt;ByVal lpLibFileName As String&lt;/i&gt; &lt;b&gt;)&lt;/b&gt; &lt;b&gt;As&lt;/b&gt; &lt;i&gt;Long&lt;/i&gt; &lt;br /&gt;&lt;br /&gt;The example shows the &lt;i&gt;LoadLibrary&lt;/i&gt; function which we used extensively in previous article when used in VB 6.0. The &lt;i&gt;"kernel32"&lt;/i&gt; represents the &lt;b&gt;KERNEL32.DLL&lt;/b&gt;file which is a system Win32 API file and one of the core DLLs of the operating system. Actually the function &lt;i&gt;LoadLibraryA&lt;/i&gt; is implemented in this DLL. But we are using the &lt;b&gt;Alias&lt;/b&gt; keyword to change the name to &lt;i&gt;LoadLibrary&lt;/i&gt;. &lt;br /&gt;&lt;br /&gt;This API function takes 1 argument and returns a value. So it is declared as function in VB. As it takes a string as argument, the datatype of the argument is declared as &lt;i&gt;String&lt;/i&gt;. As it returns a HANDLE as return value, the return value data type is selected as &lt;i&gt;Long&lt;/i&gt;. Similarly public exported functions available in other Windows System DLLs as well as User DLLs can be accessed. If the function name to be used in Visual Basic is same as the function name in the DLL the use of&lt;b&gt;Alias&lt;/b&gt; is not required. &lt;br /&gt;&lt;br /&gt;The MPUSBAPI.DLL functions looks in the following manner when declared in Visual Basic 6.0. When these declarations are made, make sure that the DLL is in a directory which is listed in the system path. &lt;br /&gt;&lt;br /&gt;&lt;div align="left"&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Public Declare Function&lt;/b&gt; &lt;span style="color:blue;"&gt;&lt;i&gt;MPUSBGetDLLVersion&lt;/i&gt;&lt;/span&gt; &lt;b&gt;Lib&lt;/b&gt; &lt;i&gt;"mpusbapi"&lt;/i&gt; () &lt;b&gt;As&lt;/b&gt; &lt;i&gt;Long&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Public Declare Function&lt;/b&gt; &lt;span style="color:blue;"&gt;&lt;i&gt;MPUSBGetDeviceCount&lt;/i&gt;&lt;/span&gt; &lt;b&gt;Lib&lt;/b&gt; &lt;i&gt;"mpusbapi"&lt;/i&gt; (ByVal pVID_PID As String) &lt;b&gt;As&lt;/b&gt; &lt;i&gt;Long&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Public Declare Function&lt;/b&gt; &lt;span style="color:blue;"&gt;&lt;i&gt;MPUSBOpen&lt;/i&gt;&lt;/span&gt; &lt;b&gt;Lib&lt;/b&gt; &lt;i&gt;"mpusbapi"&lt;/i&gt; (ByVal instance As Long, ByVal pVID_PID As String, ByVal pEP As String, ByVal dwDir As Long, ByVal dwReserved As Long) &lt;b&gt;As&lt;/b&gt; &lt;i&gt;Long&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Public Declare Function&lt;/b&gt; &lt;span style="color:blue;"&gt;&lt;i&gt;MPUSBRead&lt;/i&gt;&lt;/span&gt; &lt;b&gt;Lib&lt;/b&gt; &lt;i&gt;"mpusbapi"&lt;/i&gt; (ByVal handle As Long, ByVal pData As Long, ByVal dwLen As Long, ByRef pLength As Long, ByVal dwMilliseconds As Long) &lt;b&gt;As&lt;/b&gt; &lt;i&gt;Long&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Public Declare Function&lt;/b&gt; &lt;span style="color:blue;"&gt;&lt;i&gt;MPUSBWrite&lt;/i&gt;&lt;/span&gt; &lt;b&gt;Lib&lt;/b&gt; &lt;i&gt;"mpusbapi"&lt;/i&gt; (ByVal handle As Long, ByVal pData As Long, ByVal dwLen As Long, ByRef pLength As Long, ByVal dwMilliseconds As Long) &lt;b&gt;As&lt;/b&gt; &lt;i&gt;Long&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Public Declare Function&lt;/b&gt; &lt;span style="color:blue;"&gt;&lt;i&gt;MPUSBReadInt&lt;/i&gt;&lt;/span&gt; &lt;b&gt;Lib&lt;/b&gt; &lt;i&gt;"mpusbapi"&lt;/i&gt;(ByVal handle As Long, ByVal pData As Long, ByVal dwLen As Long, ByRef pLength As Long, ByVal dwMilliseconds As Long) &lt;b&gt;As&lt;/b&gt; &lt;i&gt;Long&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Public Declare Function&lt;/b&gt; &lt;span style="color:blue;"&gt;&lt;i&gt;MPUSBClose&lt;/i&gt;&lt;/span&gt; &lt;b&gt;Lib&lt;/b&gt; &lt;i&gt;"mpusbapi"&lt;/i&gt;(ByVal handle As Long)&lt;b&gt;As&lt;/b&gt; &lt;i&gt;Long&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;When we take a look at the above declarations which are used in Visual Basic, one can observe that the data types of the arguments in each function almost match the data types of their C language prototypes. But, few are not matching. Out of these one important argument is &lt;b&gt;pData&lt;/b&gt; which is originally an array of bytes. But here in VB it is declared as Long. The reason for this declaration is when the data is passed from VB, we are actually passing the address of first element in the array. As we know, the address is an unsigned numerical value, which can be represented in VB with Long type. Once the address is available to a function, the function can do any with the data available in that address. When see the source code files provided along with this project, you can observe that the address of first byte is passed from a Byte array. &lt;br /&gt;&lt;br /&gt;The VB 6.0 Example code can be downloaded from &lt;a href="http://www.comvcon.com/Downloads/VB6PICUSBDemo.zip"&gt;here&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;The (&lt;b&gt;VBMPUSBAPI.BAS&lt;/b&gt;) contains all the code related to MPUSBAPI.DLL and also additional &lt;u&gt;functions and data definitions &lt;/u&gt;required to communicate with the demo firmware that comes with the demo board. &lt;br /&gt;&lt;br /&gt;It implements following functions:&lt;ul&gt;&lt;li&gt;&lt;b&gt;Initialize&lt;/b&gt;: Used for initializing the variables.&lt;/li&gt;&lt;li&gt;&lt;b&gt;OpenMPUSBDevice&lt;/b&gt;: Used for opening the data pipes of the Demo application.&lt;/li&gt;&lt;li&gt;&lt;b&gt;CloseMPUSBDevice&lt;/b&gt;: Used for closing the opened data pipes.&lt;/li&gt;&lt;li&gt;&lt;b&gt;SendReceivePacket&lt;/b&gt;: Used for performing the complete Demo application transfer. You can observe that SendData and ReceiveData are passed as Byte arrays. Inside the function the address of the first elements of the Byte arrays are passed to the Read and Write functions in the DLL.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;The (&lt;b&gt;VB6PICUSBDemo.frm&lt;/b&gt;) is VB Form file, which contains the event handles for two check boxes and one command button. These function in-turn calls the functions declared in the .BAS file as per the requirement. The section 7.2 in the &lt;a href="file:///F:/comvcon/PICUSBDLLDemoFirmware.html"&gt;previous article&lt;/a&gt; shows how the sequence is to be followed. The event handles in this file also follows similar sequence.&lt;br /&gt;&lt;br /&gt;&lt;div align="left" unselectable="true" dataformatas="html"&gt;    &lt;b&gt;Private Sub&lt;/b&gt; Check1_Click()&lt;br /&gt;      &lt;span style="color:red;"&gt;&lt;b&gt;[Step A - Declarations]&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;      Dim send_buf(0 To 64) As Byte&lt;br /&gt;      Dim receive_buf(0 To 64) As Byte&lt;br /&gt;      Dim RecvLength As Long&lt;br /&gt;&lt;br /&gt;      &lt;span style="color:red;"&gt;&lt;b&gt;[Step B- Open the USB End-points]&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;      OpenMPUSBDevice&lt;br /&gt;&lt;br /&gt;      &lt;span style="color:red;"&gt;&lt;b&gt;[Step C- Check the Handles of the End-points to see if the are opened properly]&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;      If myOutPipe &lt;&gt; INVALID_HANDLE_VALUE And myInPipe &lt;&gt; INVALID_HANDLE_VALUE Then &lt;br /&gt;&lt;br /&gt;          &lt;span style="color:red;"&gt;&lt;b&gt;[Step D- Initialize the command to be transmitted to demo firmware]&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;          RecvLength = 1&lt;br /&gt;          send_buf(0) = 50 '0x32 - SET_LED &lt;br /&gt;          send_buf(1) = 3 ' LED Number&lt;br /&gt;          'Set LED value based on the check box state&lt;br /&gt;          If Check1.Value = 1 Then&lt;br /&gt;            send_buf(2) = 1&lt;br /&gt;          ElseIf Check1.Value = 0 Then&lt;br /&gt;            send_buf(2) = 0&lt;br /&gt;          End If&lt;br /&gt;&lt;br /&gt;          &lt;span style="color:red;"&gt;&lt;b&gt;[Step E- Call SendReceivePacket to send the command and to receive the response ]&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;          If (SendReceivePacket(send_buf, 3, receive_buf, RecvLength, 1000, 1000) = 1) Then&lt;br /&gt;&lt;br /&gt;            &lt;span style="color:red;"&gt;&lt;b&gt;[Step F- The received data confirms that the command is executed properly ]&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;            If (RecvLength &lt;&gt; 1 Or receive_buf(0) &lt;&gt; 50) Then&lt;br /&gt;              MsgBox "Failed to update LED"&lt;br /&gt;            End If&lt;br /&gt;&lt;br /&gt;          End If&lt;br /&gt;&lt;br /&gt;      End If&lt;br /&gt;&lt;br /&gt;      &lt;span style="color:red;"&gt;&lt;b&gt;[Step G- Once the operation is completed, close all the open handles ]&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;      CloseMPUSBDevice&lt;br /&gt;&lt;br /&gt;    &lt;b&gt;End Sub&lt;/b&gt;&lt;/div&gt;&lt;div align="left" unselectable="true" dataformatas="html"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="left" unselectable="true" dataformatas="html"&gt;In the next article I will explain how to use the Visual Basic .NET.&lt;/div&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6069588175912980102-3866962557436859724?l=comvcon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://comvcon.blogspot.com/feeds/3866962557436859724/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6069588175912980102&amp;postID=3866962557436859724' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6069588175912980102/posts/default/3866962557436859724'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6069588175912980102/posts/default/3866962557436859724'/><link rel='alternate' type='text/html' href='http://comvcon.blogspot.com/2008/11/interacting-with-microchip-full-speed_24.html' title='Interacting with Microchip Full-Speed USB Demo Board using Visual Basic'/><author><name>Vidya</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6069588175912980102.post-6228955371171022442</id><published>2008-11-24T21:11:00.002+05:30</published><updated>2008-11-24T21:16:32.750+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='All about USB'/><category scheme='http://www.blogger.com/atom/ns#' term='USB Protocol Analyzers'/><title type='text'>List of USB Protocol Analyzers available in market</title><content type='html'>&lt;h3 dtid="281474976710689"&gt;What does USB Protocol Analyzers do?&lt;/h3&gt;&lt;!-- Introduction --&gt;USB Protocol Analyzer is like  any other protocol analyzer. It basically hooks onto the bus and probes the  signal patterns, and from the signal patterns re-creates the user understandable  data or packet formats as per the USB 2.0 specifications.&lt;br /&gt;There are two types of Protocol Analyzers  for USB. 1) Hardware+Software Toolset 2) Only Software. This document explains  only the Hardware Type Protocol Analyzers.&lt;br /&gt;The Hardware type protocol analyzers are costly to procure, and the price is  directly proportional to the trace buffer available in the hardware. But these  analyzers come with great powers, the collected data can be viewed and formatted  in many formats and helps users to pin point the problems quickly and help in  debugging the application.&lt;br /&gt;Some of the  typical capabilities are: &lt;ul dtid="281474976710693"&gt;&lt;li dtid="281474976710694"&gt;Triggers - Specify when to start the data  collection from the bus &lt;/li&gt;&lt;li dtid="281474976710695"&gt;Prefetch -  How many packets need to be recorded before the trigger &lt;/li&gt;&lt;li dtid="281474976710696"&gt;Postfetch - How many packets need to be  recorded after the trigger &lt;/li&gt;&lt;li dtid="281474976710697"&gt;Trigger  Types - Manual, Automatic, Content Based (Based on what is there inside a  packet), Transaction Based &lt;/li&gt;&lt;li dtid="281474976710698"&gt;Buffer  Size Control - For managing the available trace buffers &lt;/li&gt;&lt;li dtid="281474976710699"&gt;Reporting &amp;amp; Filtering Options -  Flexibility to view specific trasactions and specific packets &lt;/li&gt;&lt;li dtid="281474976710700"&gt;Save &amp;amp; Reload operations &lt;/li&gt;&lt;li dtid="281474976710701"&gt;Simulation &amp;amp; Transmission of User Defined  Packets on the bus - In this case user can transfer a packet to see how the  device driver or the device responds to specific packets. Activity is intiated  by user, but the analyzer pretends as if the host or the device has generated  the packet &lt;/li&gt;&lt;/ul&gt;The above is a partial list of most common features. For  more information one should check the documents of each of the Analyzers.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;hr /&gt;&lt;br /&gt;&lt;br /&gt;   &lt;h3&gt;List of USB Protocol &amp;amp; Bus Analyzers (that come in form of Hardware+Software)&lt;/h3&gt;&lt;table width="100%" border="1px"&gt;&lt;tbody&gt;    &lt;tr&gt;     &lt;td align="left" width="20%" valign="middle"&gt;Analyzer&lt;/td&gt;     &lt;td align="justify" width="80%" valign="middle"&gt;Description&lt;/td&gt;            &lt;td align="left" width="20%" valign="middle"&gt;Image(If Available)&lt;/td&gt;            &lt;/tr&gt;            &lt;tr&gt;            &lt;td align="left" width="20%" valign="middle"&gt;              &lt;br /&gt;           &lt;b&gt;&lt;a href="http://www.mqp.com/usb480plus.htm"&gt;MQP Electronics Packet-Master USB480+&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;                        &lt;td align="justify" width="80%" valign="middle"&gt;&lt;b&gt;Description:&lt;/b&gt;&lt;br /&gt;              &lt;br /&gt;           &lt;ul&gt;&lt;br /&gt;                &lt;li&gt;On-the-Go(OTG) analysis&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Analyse High-Speed, Low-Speed, Full-Speed USB Device in any combination of speeds &lt;/li&gt;                &lt;br /&gt;                &lt;li&gt;32 Mbyte FIFO&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Advanced hardware event triggering as standard&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Up to 4Mbyte Pre-Trigger Data Buffer&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Highest Specification for the Lowest Cost&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Integral Capture Start and Stop buttons and Capture Indicator USB through-connectors for device under test &lt;/li&gt;     &lt;br /&gt;                &lt;li&gt;High Speed USB uplink for unlimited capture&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;BNC Connector for Trigger Input or Output&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Feature connector provides signals for oscilloscope or logic analyser&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Comprehensive event filtering, highlighting, searching and bookmarking &lt;/li&gt;&lt;br /&gt;                &lt;li&gt;ncludes Free Class Analysis package&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;~$1500 USD (special educational pricing available)&lt;/li&gt;                &lt;br /&gt;               &lt;/ul&gt;&lt;br /&gt;               &lt;/td&gt;            &lt;td align="left" width="20%" valign="middle"&gt;&lt;a href="http://www.mqp.com/usb480plus.htm"&gt;&lt;br /&gt;           &lt;img src="http://www.mqp.com/usb480_fnt_300.jpg" border="0" alt="MQP Electronics Packet-Master USB480+ Front View" /&gt;&lt;/a&gt;&lt;br /&gt;           &lt;a href="http://www.mqp.com/usb480plus.htm"&gt;&lt;br /&gt;           &lt;img src="http://www.mqp.com/usb480_back_300.jpg" border="0" alt="MQP Electronics Packet-Master USB480+ Back View" /&gt;&lt;/a&gt;&lt;br /&gt;           &lt;/td&gt;            &lt;/tr&gt;            &lt;tr&gt;            &lt;td align="left" width="20%" valign="middle"&gt;              &lt;br /&gt;           &lt;b&gt;&lt;a href="http://www.mqp.com/usb480.htm"&gt;MQP Electronics Packet-Master USB480&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;                        &lt;td align="justify" width="80%" valign="middle"&gt;&lt;b&gt;Description:&lt;/b&gt;&lt;br /&gt;              &lt;br /&gt;           &lt;ul&gt;&lt;br /&gt;                &lt;li&gt;On-the-Go(OTG) analysis&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Analyse High-Speed, Low-Speed, Full-Speed &lt;/li&gt;                &lt;br /&gt;                &lt;li&gt;32 Mbyte FIFO&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Hardware triggering &lt;/li&gt;&lt;br /&gt;                &lt;li&gt;BNC trigger input&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Highly cost-effective development solution&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Integral Capture Start and Stop buttons and Capture Indicator USB through-connectors for device under test &lt;/li&gt;     &lt;br /&gt;                &lt;li&gt;Automatically detects speed of link under test &lt;/li&gt;&lt;br /&gt;                &lt;li&gt;High Speed USB (480 Mbit/s) connection to host PC &lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Feature connector provides signals for oscilloscope or logic analyser &lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Comprehensive event filtering, highlighting, searching and bookmarking&lt;/li&gt;         &lt;br /&gt;                &lt;li&gt;~$1400 USD (special educational pricing available)&lt;/li&gt;      &lt;br /&gt;               &lt;/ul&gt;&lt;br /&gt;               &lt;/td&gt;            &lt;td align="left" width="20%" valign="middle"&gt;&lt;a href="http://www.mqp.com/usb480.htm"&gt;&lt;br /&gt;           &lt;img src="http://www.mqp.com/usb480_fnt_300.jpg" border="0" alt="MQP Electronics Packet-Master USB480 Front View" /&gt;&lt;/a&gt;&lt;br /&gt;           &lt;a href="http://www.mqp.com/usb480.htm"&gt;&lt;br /&gt;           &lt;img src="http://www.mqp.com/usb480_back_300.jpg" border="0" alt="MQP Electronics Packet-Master USB480 Back View" /&gt;&lt;/a&gt;&lt;br /&gt;           &lt;/td&gt;            &lt;/tr&gt;               &lt;tr&gt;            &lt;td align="left" width="20%" valign="middle"&gt;              &lt;br /&gt;           &lt;b&gt;&lt;a href="http://www.mqp.com/usb12.htm"&gt;MQP Electronics Packet-Master USB12&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;            &lt;td align="justify" width="80%" valign="middle"&gt;&lt;b&gt;Description:&lt;/b&gt;&lt;br /&gt;              &lt;br /&gt;           &lt;ul&gt;&lt;br /&gt;                &lt;li&gt;Analyses Low Speed, Full Speed or a mixture of both(No High Speed) &lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Power Indicator &amp;amp; Activity indicator shows presence of data exchanges&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Integral Capture Start and Stop buttons and Capture Indicator &lt;/li&gt;                &lt;br /&gt;                &lt;li&gt;Economically priced &lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Bus-powered for convenience of use, Optional external power input supply&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;High Speed USB uplink for unlimited capture time &lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Comprehensive event filtering, highlighting, searching and bookmarking&lt;/li&gt;                &lt;br /&gt;                &lt;li&gt;~$750 USD (special educational pricing available)&lt;/li&gt;&lt;br /&gt;               &lt;/ul&gt;&lt;br /&gt;               &lt;/td&gt;            &lt;td align="left" width="20%" valign="middle"&gt;&lt;a href="http://www.mqp.com/usb12.htm"&gt;&lt;br /&gt;           &lt;img src="http://www.mqp.com/usb12_front_300.jpg" border="0" alt="MQP Electronics Packet-Master USB12" /&gt;&lt;/a&gt;&lt;/td&gt;            &lt;/tr&gt;               &lt;tr&gt;            &lt;td align="left" width="20%" valign="middle"&gt;&lt;br /&gt;               &lt;b&gt;&lt;a href="http://www.ellisys.com/products/usbex200/index.php"&gt;Ellisys USB Explorer 200&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;            &lt;td align="justify" width="80%" valign="middle"&gt;&lt;b&gt;Description:&lt;/b&gt;&lt;br /&gt;              &lt;br /&gt;               &lt;ul&gt;&lt;br /&gt;                &lt;li&gt;Supports Low Speed (1.5Mbits/s), Full Speed (12Mbits/s) and High Speed (480Mbps)&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Measurement of USB bus states and low level protocols&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Device Bus Powered. No need for external adaptor.&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Speedy USB2.0 Uplink with Internal 32MB FIFO Memory.&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Intutive, Easy to use Interface.&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;High level decoding of requests and descriptors, making diagnosing problems a breeze.&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Filtering and Highlighting of Events.&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Dimensions: 150 x 120 x 65 mm, Weight 850g.&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;~$2600 USD and includes a 2 years of limited warranty.&lt;/li&gt;&lt;br /&gt;               &lt;/ul&gt;&lt;br /&gt;               &lt;/td&gt;            &lt;td align="left" width="20%" valign="middle"&gt;&lt;a href="http://www.ellisys.com/products/usbex200/index.php"&gt;&lt;img src="http://www.ellisys.com/products/usbex200/images/home.gif" border="0" alt="Ellisys USB Explorer 200" /&gt;&lt;/a&gt;&lt;/td&gt;            &lt;/tr&gt;            &lt;tr&gt;                        &lt;td align="left" width="20%" valign="middle"&gt;              &lt;br /&gt;           &lt;b&gt;&lt;a href="http://www.ellisys.com/products/usbtr110/index.php"&gt;Ellisys USB Tracker 110&lt;/a&gt; &lt;i&gt;&lt;span style="color:RED;"&gt;Recommended&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/td&gt;            &lt;td align="justify" width="80%" valign="middle"&gt;&lt;b&gt;Description:&lt;/b&gt;&lt;br /&gt;              &lt;br /&gt;           &lt;ul&gt;&lt;br /&gt;                &lt;li&gt;Supports Low Speed (1.5Mbits/s) and Full Speed (12Mbits/s)&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Unlimited capture time.&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;USB2.0 Uplink (Backwards compatible with 1.1).&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Device Bus Powered. No need for external adaptor.&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Power and Activity LEDs. Activity flashes green on receipt of DATA0/1 packet but not captured and red if captured.&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Realtime statistics during capture.&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Filtering and Highlighing of Events.&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Dimensions: 85 x 80 x 45 mm, Weight 75g.&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;~$850 USD and includes a 2 years of limited warranty.&lt;/li&gt;&lt;br /&gt;               &lt;/ul&gt;&lt;br /&gt;               &lt;/td&gt;            &lt;td align="left" width="20%" valign="middle"&gt;&lt;a href="http://www.ellisys.com/products/usbtr110/index.php"&gt;&lt;img src="http://www.ellisys.com/products/usbtr110/images/home.gif" border="0" alt="Ellisys USB Tracker 110" /&gt;&lt;/a&gt;&lt;/td&gt;            &lt;/tr&gt;            &lt;tr&gt;            &lt;td align="left" width="20%" valign="middle"&gt;              &lt;br /&gt;           &lt;b&gt;&lt;a href="http://www.ellisys.com/products/wusbex300/"&gt;Wireless USB Explorer 300&lt;/a&gt; &lt;i&gt;&lt;span style="color:RED;"&gt;Wireless USB Protocol Analyzer&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/td&gt;            &lt;td align="justify" width="80%" valign="middle"&gt;&lt;b&gt;Description:&lt;/b&gt;&lt;br /&gt;              &lt;br /&gt;               &lt;ul&gt;&lt;br /&gt;                &lt;li&gt;Displays UWB and Wireless USB protocols in an easy-to-use hierarchical view &lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Supports speeds up to 480 Mbps&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Non-intrusively captures traffic from any MB-OFDM UWB link.&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Automatically determines the speed of each frame and decodes it accordingly.&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Highlights protocol errors and interoperability issues &lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Supports the latest WiMedia and Wireless USB specifications.&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Free viewer software to exchange recorded traffic with others, Free lifetime software maintenance.&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Powered by USB, no need for a bulky external power supply.&lt;/li&gt;                &lt;br /&gt;                &lt;li&gt;Dimensions: 150 x 120 x 65 mm (5.91 x 4.72 x 2.56'') , Weight 850 g (1.9 lbs).&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;2 years of limited warranty.&lt;/li&gt;&lt;br /&gt;               &lt;/ul&gt;&lt;br /&gt;               &lt;/td&gt;            &lt;td align="left" width="20%" valign="middle"&gt;&lt;a href="http://www.ellisys.com/products/wusbex300/"&gt;&lt;img src="http://www.ellisys.com/products/wusbex300/images/home.gif" border="0" alt="Wireless USB Explorer 300" /&gt;&lt;/a&gt;&lt;/td&gt;            &lt;/tr&gt;            &lt;tr&gt;            &lt;td align="left" width="20%" valign="middle"&gt;              &lt;br /&gt;           &lt;b&gt;&lt;a href="http://www.iti.iwatsu.co.jp/e/products/sb/sb2020_top_e.html"&gt;USB Ver.2.0 Bus Protocol Analyzer SB-2020&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;            &lt;td align="justify" width="80%" valign="middle"&gt;&lt;b&gt;Description:&lt;/b&gt;&lt;br /&gt;              &lt;br /&gt;           &lt;ul&gt;&lt;br /&gt;                &lt;li&gt;Automatic detection of USB 2.0 at high, full, and low speed&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Trigger function&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Powerful filtering function.&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Built-in 512 MB capture memory.&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Capturing of log data up to 20 GB.&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Display descriptor tree.&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Bus state display.&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Display communication speed.&lt;/li&gt;                &lt;br /&gt;                &lt;li&gt;Dimensions: 150 x 120 x 65 mm (5.91 x 4.72 x 2.56'') , Weight 850 g (1.9 lbs).&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;2 years of limited warranty.&lt;/li&gt;&lt;br /&gt;               &lt;/ul&gt;&lt;br /&gt;               &lt;/td&gt;            &lt;td align="left" width="20%" valign="middle"&gt;&lt;a href="http://www.iti.iwatsu.co.jp/e/products/sb/sb2020_top_e.html"&gt;&lt;img src="http://www.iti.iwatsu.co.jp/e/products/sb/images/sb-2020.jpg" border="0" alt="USB Ver.2.0 Bus Protocol Analyzer SB-2020" /&gt;&lt;/a&gt;&lt;/td&gt;            &lt;/tr&gt;                                                                         &lt;tr&gt;            &lt;td align="left" width="20%" valign="middle"&gt;              &lt;br /&gt;           &lt;b&gt;&lt;a href="http://www.lecroy.com/tm/products/ProtocolAnalyzers/usbtt.asp?menuid=67"&gt;CATC USBTracer/Trainer™ Protocol Verification System&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;            &lt;td align="justify" width="80%" valign="middle"&gt;&lt;b&gt;Description:&lt;/b&gt;&lt;br /&gt;              &lt;br /&gt;           &lt;ul&gt;&lt;br /&gt;                &lt;li&gt;CATC Trace Analysis Software System&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;OTG (On-The-Go) Support&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Traffic Generation/Device Emulation.&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;512 MByte Recording Capacity&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Non-intrusive High Impedance Probe&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Advanced Triggering&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Extensive Decodes to display Device Class Specific information.&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Real-Time Statistics &amp;amp; Hardware Filtering&lt;/li&gt;                &lt;br /&gt;                &lt;li&gt;Hi-Speed USB Port&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;3 years of limited warranty.&lt;/li&gt;&lt;br /&gt;               &lt;/ul&gt;&lt;br /&gt;               &lt;/td&gt;            &lt;td align="left" width="20%" valign="middle"&gt;&lt;a href="http://www.lecroy.com/tm/products/ProtocolAnalyzers/usbtt.asp?menuid=67"&gt;&lt;img src="http://www.lecroy.com/tm/products/ProtocolAnalyzers/images/usbtt.gif" border="0" alt="USBTracer/Trainer™ Protocol Verification System" /&gt;&lt;/a&gt;&lt;/td&gt;            &lt;/tr&gt;                        &lt;tr&gt;            &lt;td align="left" width="20%" valign="middle"&gt;              &lt;br /&gt;           &lt;b&gt;&lt;a href="http://www.lecroy.com/tm/products/ProtocolAnalyzers/advisor.asp?menuid=67"&gt;CATC Advisor™ Protocol Analyzer&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;            &lt;td align="justify" width="80%" valign="middle"&gt;&lt;b&gt;Description:&lt;/b&gt;&lt;br /&gt;              &lt;br /&gt;           &lt;ul&gt;&lt;br /&gt;                &lt;li&gt;CATC Trace Analysis Software System&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Records USB 2.0 traffic - Supports all three USB speeds (High (480Mbps), Full (12Mbps) and Low (1.5Mbps))&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;128 MByte Recording Capacity.&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;BusEngine Protocol Processor technology&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Dual Recording Channels &lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Advanced Triggering&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Intelligent Reporting&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Real-Time Statistics &amp;amp; Hardware Filtering&lt;/li&gt;                &lt;br /&gt;                &lt;li&gt;Hi-Speed USB Port&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;3 years of limited warranty.&lt;/li&gt;&lt;br /&gt;               &lt;/ul&gt;&lt;br /&gt;               &lt;/td&gt;            &lt;td align="left" width="20%" valign="middle"&gt;&lt;a href="http://www.lecroy.com/tm/products/ProtocolAnalyzers/advisor.asp?menuid=67"&gt;&lt;img src="http://www.lecroy.com/tm/products/ProtocolAnalyzers/images/adv.gif" border="0" alt="Advisor™ Protocol Analyzer" /&gt;&lt;/a&gt;&lt;/td&gt;            &lt;/tr&gt;                   &lt;tr&gt;            &lt;td align="left" width="20%" valign="middle"&gt;              &lt;br /&gt;           &lt;b&gt;&lt;a href="http://www.lecroy.com/tm/products/ProtocolAnalyzers/usbhs.asp?menuid=67"&gt;CATC USBMobile™ Protocol Analyzer&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;            &lt;td align="justify" width="80%" valign="middle"&gt;&lt;b&gt;Description:&lt;/b&gt;&lt;br /&gt;              &lt;br /&gt;           &lt;ul&gt;&lt;br /&gt;                &lt;li&gt;PC Card form factor - Personal analyzer. Low-power, portable operation with any notebook PC &lt;/li&gt;&lt;br /&gt;                &lt;li&gt;CATC Trace Analysis Software System&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Records USB 2.0 traffic - Supports all three USB speeds (High (480Mbps), Full (12Mbps) and Low (1.5Mbps))&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;OTG (On-The-Go) Support&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;64 MByte Recording Capacity.&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;2 Mini AB USB ports and cables.&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Extensive Decodes to display Device Class Specific information.&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;BusEngine Protocol Processor technology&lt;/li&gt;                &lt;br /&gt;                &lt;li&gt;Advanced Triggering&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Intelligent Reporting&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Real-Time Statistics &amp;amp; Hardware Filtering&lt;/li&gt;                &lt;br /&gt;                &lt;li&gt;Hi-Speed USB Port&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;3 years of limited warranty.&lt;/li&gt;&lt;br /&gt;               &lt;/ul&gt;&lt;br /&gt;               &lt;/td&gt;            &lt;td align="left" width="20%" valign="middle"&gt;&lt;a href="http://www.lecroy.com/tm/products/ProtocolAnalyzers/advisor.asp?menuid=67"&gt;&lt;img src="http://www.lecroy.com/tm/products/ProtocolAnalyzers/images/usbhs.gif" border="0" alt="USBMobile™ Protocol Analyzer" /&gt;&lt;/a&gt;&lt;/td&gt;            &lt;/tr&gt;               &lt;tr&gt;            &lt;td align="left" width="20%" valign="middle"&gt;              &lt;br /&gt;           &lt;b&gt;&lt;a href="http://eecatalog.com/usb/index.php?page=datasheet&amp;amp;micrositeId=2&amp;amp;datasheetId=979"&gt;Beagle™ USB 12 Protocol Analyzer &lt;/a&gt;&lt;/b&gt;&lt;/td&gt;            &lt;td align="justify" width="80%" valign="middle"&gt;&lt;b&gt;Description:&lt;/b&gt;&lt;br /&gt;              &lt;br /&gt;           &lt;ul&gt;&lt;br /&gt;                &lt;li&gt;The Beagle USB 12 Protocol Analyzer is a bus-powered, high-speed USB 2.0 device. Being small, lightweight, and portable in size (89 x 41 x 25 mm) it is the ideal tool for engineers in the field.&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Non-intrusive Full-/Low-Speed USB monitoring of a USB bus in real time. The capture is nearly limitless as data is constantly streamed to the analysis computer. &lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Share your captured data with your colleagues with ease. The Beagle Data Center is our free GUI monitoring software which can be downloaded from the Total Phase website.&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;The Beagle USB 12 Protocol Analyzer is only $400 in single-unit quantities. Additional volume discounts are available. At this price, every engineer can have their own analyzer.&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;The Beagle USB 12 Protocol Analyzer is available for purchase through the Total Phase website. Small orders of 25 units or less normally ship within 24-48 hours. If you are located outside the United States, please consult the list of international distributors on our website.&lt;/li&gt;&lt;br /&gt;               &lt;/ul&gt;&lt;br /&gt;               &lt;/td&gt;            &lt;td align="left" width="20%" valign="middle"&gt;&lt;a href="http://eecatalog.com/usb/index.php?page=datasheet&amp;amp;micrositeId=2&amp;amp;datasheetId=979"&gt;&lt;br /&gt;           &lt;img src="http://eecatalog.com/usb/images/pg_14.jpg" border="0" alt="Beagle™ USB 12 Protocol Analyzer" /&gt;&lt;/a&gt;&lt;/td&gt;            &lt;/tr&gt;               &lt;tr&gt;            &lt;td align="left" width="20%" valign="middle"&gt;              &lt;br /&gt;           &lt;b&gt;&lt;a href="http://www.totalphase.com/products/beagle/usb480/"&gt;Beagle USB 480 Protocol Analyzer&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;            &lt;td align="justify" width="80%" valign="middle"&gt;&lt;b&gt;Description:&lt;/b&gt;&lt;br /&gt;              &lt;br /&gt;           &lt;ul&gt;&lt;br /&gt;                &lt;li&gt;Non-intrusive High-speed USB 2.0 monitoring (up to 480 Mbps) &lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Two capture modes: real-time and delayed-download &lt;/li&gt;&lt;br /&gt;                &lt;li&gt;High-speed USB chirp detection&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Hardware-based packet suppression &lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Digital inputs and outputs for synchronizing with external logic &lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Real-time capture and delayed-download capture&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Free software and API available. Compatible to Linux &amp;amp; Windows.&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;The Beagle USB 480 Protocol Analyzer comes complete with software for an introductory price of $1200.&lt;/li&gt;                                 &lt;br /&gt;               &lt;/ul&gt;&lt;br /&gt;               &lt;/td&gt;            &lt;td align="left" width="20%" valign="middle"&gt;&lt;a href="http://www.totalphase.com/products/beagle/usb480/"&gt;&lt;br /&gt;           &lt;img src="http://www.totalphase.com/products/beagle/usb480/beagle_usb480_big.png" border="0" alt="Beagle™ USB 12 Protocol Analyzer" /&gt;&lt;/a&gt;&lt;/td&gt;            &lt;/tr&gt;               &lt;tr&gt;            &lt;td align="left" width="20%" valign="middle"&gt;              &lt;br /&gt;           &lt;b&gt;&lt;a href="http://www.getcatalyst.com/product-conquest.html"&gt;CATALYST Conquest™ Series USB Protocol Analyzers&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;            &lt;td align="justify" width="80%" valign="middle"&gt;&lt;b&gt;Description:&lt;/b&gt;&lt;br /&gt;              &lt;br /&gt;           &lt;ul&gt;&lt;br /&gt;                &lt;li&gt;Three Variants: Conquest Classic; Conquest Standard; Conquest Advanced&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Low Speed (1.5 Mb/s); Full Speed (12 Mb/s); [ High Speed (480 Mb/s) Available in Standard, Advanced]&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;128 MB Trace Memory.&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Search on Errors and Data Payload&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Snapshot Capture&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Upper-level USB Device Class Decodes in Standard, Advanced&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Trigger on Protocol Errors &amp;amp; Transactions in Standard, Advanced&lt;/li&gt;                &lt;br /&gt;                &lt;li&gt;Multi-level Event Triggering (Advanced mode)&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Classic starts at $995.&lt;/li&gt;                &lt;br /&gt;               &lt;/ul&gt;&lt;br /&gt;               &lt;/td&gt;            &lt;td align="left" width="20%" valign="middle"&gt;&lt;a href="http://www.getcatalyst.com/product-conquest.html"&gt;&lt;br /&gt;           &lt;img src="http://www.getcatalyst.com/images/catalyst_header_conquest.gif" border="0" alt="Conquest™ Series USB Protocol Analyzers" /&gt;&lt;/a&gt;&lt;/td&gt;            &lt;/tr&gt;               &lt;tr&gt;            &lt;td align="left" width="20%" valign="middle"&gt;              &lt;br /&gt;           &lt;b&gt;&lt;a href="http://www.getcatalyst.com/product-sbae-usb.html"&gt;CATALYST SBAE Series, Universal Serial Bus (USB)&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;            &lt;td align="justify" width="80%" valign="middle"&gt;&lt;b&gt;Description:&lt;/b&gt;&lt;br /&gt;              &lt;br /&gt;           &lt;ul&gt;&lt;br /&gt;                &lt;li&gt;Too many features, see company website :-)&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Analyzer, Exerciser, Device Emulator, OTG, DC Compliance&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;DC Compliance Test Suite&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Protocol Error Detection&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Performance Analysis &amp;amp; Performance Characterization&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;SBAE30B USB 2.0 Protocol Analyzer System (SBAE30B-2X-ADC)&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;SBAE30B USB 2.0 Protocol Analyser / Exerciser System (SBAE30B-2X-EDH)&lt;/li&gt;     &lt;br /&gt;               &lt;/ul&gt;&lt;br /&gt;               &lt;/td&gt;            &lt;td align="left" width="20%" valign="middle"&gt;&lt;a href="http://www.getcatalyst.com/product-sbae-usb.html"&gt;&lt;br /&gt;           &lt;img src="http://www.getcatalyst.com/images/products/sbae-header.gif" border="0" alt="SBAE Series, Universal Serial Bus (USB)" /&gt;&lt;/a&gt;&lt;/td&gt;            &lt;/tr&gt;                                       &lt;tr&gt;            &lt;td align="left" width="20%" valign="middle"&gt;              &lt;br /&gt;           &lt;b&gt;&lt;a href="http://www.nital.com/corporate/usb2snooper.html"&gt;USB2 SnooperTM (USB 2.0 Bus Analyzer)&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;            &lt;td align="justify" width="80%" valign="middle"&gt;&lt;b&gt;Description:&lt;/b&gt;&lt;br /&gt;              &lt;br /&gt;           &lt;ul&gt;&lt;br /&gt;                &lt;li&gt;Compatible to USB2.0 &amp;amp; USB1.1 specs &lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Supports HS, FS and LS speeds&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Provides USB-ON-THE-GO ( OTG ) support &lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Non-intrusive snooping&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Self powered. Does not consume power from USB cable &lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Provides Packet View, Transaction View, Control transfer view, Summary view, Raw bit view for effective packet analysis.&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Comes as a PCI add-on card for fast transfer to PC memory. Optimizes the usage of PC's available memory. Works faster.&lt;/li&gt;     &lt;br /&gt;                &lt;li&gt;External Trigger input &amp;amp; external trigger outputs are for enhanced capture &amp;amp; trigger Oscilloscopes to observe electrical condition on the Bus &lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Time stamping for each captured packet with 16.67ns resolution.&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Provides very high capture buffer depending on the PC memory.  On Windows 2000 one can easily go up to 540MB of capture buffer depending on Memory support&lt;/li&gt;                &lt;br /&gt;               &lt;/ul&gt;&lt;br /&gt;               &lt;/td&gt;            &lt;td align="left" width="20%" valign="middle"&gt;&lt;a href="http://www.nital.com/corporate/usb2snooper.html"&gt;&lt;br /&gt;           &lt;img src="http://www.nital.com/corporate/images/usb2snooper.jpg" border="0" alt="USB2 SnooperTM" /&gt;&lt;/a&gt;&lt;/td&gt;            &lt;/tr&gt;                                                   &lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6069588175912980102-6228955371171022442?l=comvcon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://comvcon.blogspot.com/feeds/6228955371171022442/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6069588175912980102&amp;postID=6228955371171022442' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6069588175912980102/posts/default/6228955371171022442'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6069588175912980102/posts/default/6228955371171022442'/><link rel='alternate' type='text/html' href='http://comvcon.blogspot.com/2008/11/list-of-usb-protocol-analyzers.html' title='List of USB Protocol Analyzers available in market'/><author><name>Vidya</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6069588175912980102.post-689065336029382659</id><published>2008-11-22T14:15:00.009+05:30</published><updated>2008-11-24T19:43:04.324+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Using MPUSBAPI.DLL'/><category scheme='http://www.blogger.com/atom/ns#' term='Microchip USB Controllers'/><title type='text'>Interacting with Microchip Full-Speed USB Demo Board using Visual Studio Tools  - VC++ 6.0</title><content type='html'>While going through the USB forums I found out that there are many questions on how to develop PC applications for Microchip Full-Speed Demo boards by using MPUSBAPI.DLL. To answer one of the questions on Microchip USB forum, I developed a small application in VC++ which uses MPUSBAPI.DLL.&lt;br /&gt;&lt;br /&gt;In this article, I will explain the technical aspects associated behind this application. And in subsequent articles I will explain how to use the MPUSBAPI.DLL library in Visual Basic.NET and C#.NET.&lt;br /&gt;&lt;br /&gt;The  &lt;a href="http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=1406&amp;amp;dDocName=en021940&amp;amp;part=DM163025" dtid="844424930132021"&gt;Microchip Full Speed USB Demo Board&lt;/a&gt; is a great tool to learn USB and even for developing prototypes. The board comes with a PIC18F4550 device which is a USB part from Microchip. The board can be self-powered or bus-powered. It has a temperature sensor and potentio meter. It also comes with an expandable bus architecture (PIC-Tail Plus), which helps in prototype development.&lt;br /&gt;&lt;br /&gt;Apart from these hardware features the board also comes along with a set of firmware examples and PC application examples. And the famous Demo Tool GUI which supports Bootloader features and Demo features. The board comes with a default factory hex file which has these two operations implemented. The &lt;i dtid="844424930132024"&gt;Bootloader&lt;/i&gt; feature is always tempting for the end users like me. By using Bootloader I can reduce the cost of buying an ICD. The Demo Tool GUI is good enough to start with. But, I wanted to develop my own GUI and integrate the Boot example in my application. I am still on the learning curve on how to use it and develop GUI for the bootloader. In future I will post an article on it once I am done :-).&lt;br /&gt;&lt;br /&gt;But, before that, I will explain how to interact with the Demo portion of the default factory hex file. Which is nothing but Demo option in the PICDEMFS Demo Tool.&lt;br /&gt;&lt;br /&gt;&lt;b dtid="844424930132029"&gt;&lt;u dtid="844424930132030"&gt;How to develop an application that interacts with Demo firmware?&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;1. Download the &lt;a href="http://ww1.microchip.com/downloads/en/DeviceDoc/MCHPFSUSB.ZIP" dtid="844424930132036"&gt;MCHPFSUSB.ZIP&lt;/a&gt; from &lt;a href="http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=1406&amp;amp;dDocName=en021940&amp;amp;part=DM163025" dtid="844424930132037"&gt;Microchip USB&lt;/a&gt; site and install it. This  installation will have following directory structure.&lt;br /&gt;&lt;img alt="Microchip Fullspeed USB Directory Structure" src="chrome://performancing/content/editor/Images%5CMCHPUSBDirStruct.JPG" dtid="844424930132039" align="middle" border="0" hspace="0" /&gt;&lt;br /&gt;&lt;br /&gt;2. The PICDEM FS board should have been programmed with either the factory HEX (which is available in C:\MCHPFSUSB\fw\_factory_hex) or with the HEX file from Demo firmware example (which will be available in C:\MCHPFSUSB\fw\Demo\_output after compiling the Demo project).&lt;br /&gt;&lt;br /&gt;3. The functionality provided in the &lt;b dtid="844424930132044"&gt;C:\MCHPFSUSB\Pc\Mpusbapi\Dll\Borland_C\mpusbapi.dll&lt;/b&gt;  need to be understood and learnt. To learn this file, refer to the file &lt;b dtid="844424930132045"&gt;C:\MCHPFSUSB\Pc\Mpusbapi\Dll\Borland_C\Source\_mpusbapi.cpp&lt;/b&gt;. The developer of this DLL had put lot of effort in explaining each of function and how to use it. We will see more about these functions later.&lt;br /&gt;&lt;br /&gt;4.  And finally you should understand the code provided in the &lt;b dtid="844424930132048"&gt;C:\MCHPFSUSB\fw\Demo&lt;/b&gt; folder. This code has two parts, USB Stack(All other files related to USB) and the USER application (user.c and user.h in C:\MCHPFSUSB\fw\Demo\user\) code. If you go through the code little more, you can see how the endpoints are defined, how the hardware is configured etc.. But, as this article is concentrating only on the PC application development with Visual Studio we will be learning more about user.c.&lt;br /&gt;&lt;br /&gt;&lt;span dtid="844424930132051"  style="color:blue;"&gt;Ok, it is time to learn some theory.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Windows Basics:&lt;/span&gt;&lt;br /&gt;&lt;b dtid="281474976710702"&gt;&lt;u dtid="281474976710703"&gt;1. Libraries in Windows Operating System&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;A &lt;b dtid="281474976710709"&gt;Software Library&lt;/b&gt; is a  collection of functions, data and resources(bitmaps, string tables etc..) in  object code format. The libraries provide modularization and re-usability of  code. So, by developing a library we can group related code together and use  this code whenever any application requires that kind of functionality. The code  in the libraries are added to application code during the process of LINKING.&lt;br /&gt;&lt;br /&gt;The  compiler tool chains used by Embedded Systems developers will implement a  technique called, &lt;b dtid="281474976710712"&gt;Static Linking&lt;/b&gt; to  link libraries to the application. In this technique, all the libraries + source  code object files are combined together and a final single HEX file will be  generated, which will be used to program the device or board.&lt;br /&gt;&lt;br /&gt;But,  in a OS like Windows where Multi-tasking is implemented, two or more copies of  same application can be executed. And more than two copies of applications that  use same library code can also be executed.&lt;br /&gt;&lt;br /&gt;What this means is, if Static Linking technique is used then, there is redundant  code and data in the memory at the same time causing lot of memory wastage, and  also the operating system has to lot of work loading unloading applications with  larger in size into memory which can consume more time.&lt;br /&gt;&lt;br /&gt;To  avoid these problems, Multi-tasking OSs like Windows came out with another  technique of for linking libraries to the applications, which is known as &lt;b dtid="281474976710719"&gt;Dynamic-Linking&lt;/b&gt;. Those libraries that used  for Dynamic-Linking are called as &lt;b dtid="281474976710720"&gt;Dynamic-Link Libraries&lt;/b&gt;. And they will have  an extension of &lt;b dtid="281474976710721"&gt;.DLL&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;So,  The C:\MCHPFSUSB\Pc\Mpusbapi\Dll\Borland_C\mpusbapi.dll is a DLL, or Dynamic  Link Library.&lt;br /&gt;&lt;br /&gt;When two applications are using the same  DLL, then there will only one code copy of the DLL in memory which will be  shared by both applications. This will eventually reduce the size of user  application and as the library code is not combined to the application, it will  speed up loading of applications. For more information on DLLs, goto &lt;a href="http://msdn.microsoft.com/" dtid="281474976710726"&gt;Microsoft  MSDN site&lt;/a&gt;. Alternatively, you can read the books on &lt;a href="http://www.amazon.com/exec/obidos/redirect?link_code=ur2&amp;amp;tag=wwwcomvconcom-20&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;path=external-search%3Fsearch-type=ss%26index=books%26keyword=Windows%20Programming" dtid="281474976710727"&gt;Windows Programming&lt;/a&gt;&lt;img style="border: medium none ; margin: 0px;" alt="" src="http://www.assoc-amazon.com/e/ir?t=wwwcomvconcom-20&amp;amp;l=ur2&amp;amp;o=1" dtid="281474976710728" border="0" height="1" width="1" /&gt;.&lt;br /&gt;&lt;br /&gt;One  note is, even though Windows supports DLLs extensively, it still supports usage  of Static Link Libraries, but Microchip's DLL(MPUSBAPI.DLL) is a Dynamic Link  Library.&lt;br /&gt;&lt;br /&gt;&lt;b dtid="281474976710734"&gt;&lt;u dtid="281474976710735"&gt;&lt;br /&gt;2. Techniques for invoking functions from the library in Windows Operating  Systems&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;When a library project is built two files will be created. One is &lt;b dtid="281474976710741"&gt;Library reference file(.LIB)&lt;/b&gt; and the other  is &lt;b dtid="281474976710742"&gt;Object Code file( .OBJ, .DLL)&lt;/b&gt;.  Object code is Machine Code with unresolved memory map and references. An  Executable normally will have the references and memory map resolved.&lt;br /&gt;&lt;br /&gt;Once  the .LIB file and .OBJ file are generated, for using them in C or C++ programs,  a &lt;b dtid="281474976710745"&gt;Header File (.H)&lt;/b&gt; will also be  provided/required to be created. The Header file will be included into the  source files using #include in the project and .LIB file will be added to &lt;b dtid="281474976710746"&gt;Files to be Linked &lt;/b&gt;list of the project.  The .OBJ will be placed in the source file folder. Sometimes, the .LIB file  itself contains the Object Code also, depending on the compiler chain, and there  will not be any .OBJ file generated.&lt;br /&gt;&lt;br /&gt;Now, if the generated files are .LIB and  .OBJ, or only .LIB file, then these files will be used in Static linking,and if  the generated files are .DLL and .LIB files then they will be used in  Dynamic-Linking.&lt;br /&gt;&lt;br /&gt;In Static Linking, the method of calling the  included library functions is straight forward, and it is as good as calling any  other function in the source files which are part of the project. The .H file  need to be included in the sources files at required locations.&lt;br /&gt;&lt;br /&gt;In  Dynamic Linking, again there are two methods to access the functions available  in the library(DLL). They are,&lt;br /&gt;&lt;b dtid="281474976710754"&gt;2.1. Load-Time Linking:&lt;/b&gt; In this method,  the library is linked to the application using a .LIB in the same manner, how it  is done with Static Linking. The only difference is the .DLL file associated  with the .LIB file will be loaded at the time of execution. i.e when the  application is loaded into the memory. In this technique, the .LIB file will be  added to the project library list and the .DLL file will be placed in the system  PATH. Functions will be called in the same manner as Static Linking.&lt;br /&gt;The example given in the following path of  &lt;b dtid="281474976710756"&gt;C:\MCHPFSUSB\Pc\Mpusbapi\Example  Applications\Borland_C\Example 01 - Load-time Linking&lt;/b&gt; demonstrate this  technique.&lt;br /&gt;&lt;br /&gt;&lt;b dtid="281474976710759"&gt;2.2.  Run-time Linking:&lt;/b&gt; In this technique, the .LIB file will not be used. The  application assumes that the .DLL file is available in the system PATH. The  application uses &lt;b dtid="281474976710760"&gt;LoadLibrary()&lt;/b&gt;, &lt;b dtid="281474976710761"&gt;GetProcAddress()&lt;/b&gt; and &lt;b dtid="281474976710762"&gt;FreeLibrary()&lt;/b&gt; Win32 API calls for invoking  the functions from the DLL.&lt;br /&gt;The .DLL  file is supposed to have the exported public symbols for using these functions.  This technique is primarily helpful, when trying to access a DLL library for  which a .LIB and/or a .H file are not available. &lt;u dtid="281474976710764"&gt;We will use this technique for accessing the  MPUSBAPI.DLL file as we don't have proper .LIB for Visual Studio.&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;The  example given in the following path of &lt;b dtid="281474976710767"&gt;C:\MCHPFSUSB\Pc\Mpusbapi\Example  Applications\Borland_C\Example 01 - Load-time Linking&lt;/b&gt; demonstrate this  technique.&lt;br /&gt;&lt;br /&gt;&lt;b dtid="281474976710770"&gt;&lt;u dtid="281474976710771"&gt;3. Identifying the Function Names in a .DLL file with Dependency Walker.&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The Dependency Walker tool comes with Visual Studio 6.0 . This tool displays  what all the functions available in a .DLL file. When the MPUSBAPI.DLL file is  opened with Dependency Walker, it looks like this.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img alt="View of MPUSBAPI.DLL in Dependency Walker" src="http://www.blogger.com/Images%5Cmpusbapidllview.JPG" dtid="281474976710775" align="middle" border="0" hspace="0" /&gt;&lt;br /&gt;&lt;br /&gt;So, from this view we can make out that  there are 7 functions available in the DLL and, all of them have underscore  ("_") prefixed to them. The same functions along with comments can found out in  the files.&lt;br /&gt;C:\MCHPFSUSB\Pc\Mpusbapi\Dll\Borland_C\Source\_mpusbapi.cpp,&lt;br /&gt;C:\MCHPFSUSB\Pc\Mpusbapi\Dll\Borland_C\Source\_mpusbapi.h.&lt;br /&gt;&lt;br /&gt;The folder,  C:\MCHPFSUSB\Pc\Mpusbapi\Dll\Borland_C\Source\ has two important header files.  _mpusbapi.h and mpusbapi.h(without underscore).&lt;br /&gt;&lt;br /&gt;Now  we know what functions are available in MPUSBAPI.DLL file. Next step is  understand how to use these functions for application development. The  _mpusbapi.h (with underscore) file is the actual header file. What it means is  it declares the actual functions. &lt;b dtid="281474976710781"&gt;This file  can only be used during Load Time Linking&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;As  we know that Load Time Linking is not possible with Visual Studio and  MPUSBAPI.DLL, We need to use the Run Time Linking Technique.&lt;br /&gt;&lt;br /&gt;&lt;b dtid="281474976710786"&gt;&lt;u dtid="281474976710787"&gt;4.  Introduction to LoadLibrary(), GetProcAddress() and FreeLibrary() &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b dtid="281474976710790"&gt;4.1 LoadLibrary():&lt;/b&gt;&lt;br /&gt;This function is used to load any .DLL at  run-time of the application.&lt;br /&gt;&lt;br /&gt;&lt;u dtid="281474976710794"&gt;SYNTAX:&lt;/u&gt;&lt;br /&gt;&lt;b dtid="281474976710796"&gt;HMODULE&lt;/b&gt; &lt;b dtid="281474976710797"&gt;LoadLibrary(&lt;/b&gt; &lt;b dtid="281474976710798"&gt;LPCTSTR&lt;/b&gt; &lt;i dtid="281474976710799"&gt;&lt;a class="synParam" onclick="showTip(this)" href="http://www.blogger.com/post-edit.g?blogID=6069588175912980102&amp;amp;postID=689065336029382659" dtid="281474976710800"&gt;lpFileName&lt;/a&gt;&lt;/i&gt;&lt;b dtid="281474976710801"&gt;);&lt;/b&gt;&lt;br /&gt;This function takes the .DLL file name or a file name including full path as  argument. Then it loads the DLL into the memory for use by application and  returns HANDLE (HANDLE is a unique unsigned long number given by Windows OS to  each object when it is loaded/created. The object can be application, DLL,  Bitmap etc...). If the .DLL is already loaded this function returns the an  existing handle.&lt;br /&gt;If the DLL can not be  loaded due to incorrect path or any other reason, this function returns NULL.  So, the user application need to check for this condition.&lt;br /&gt;&lt;br /&gt;&lt;b dtid="281474976710806"&gt;4.2 GetProcAddress():&lt;/b&gt;&lt;br /&gt;This function is used to get a pointer to a  function in the .DLL file.&lt;br /&gt;&lt;br /&gt;&lt;u dtid="281474976710810"&gt;SYNTAX:&lt;/u&gt;&lt;br /&gt;&lt;b dtid="281474976710812"&gt;FARPROC&lt;/b&gt; &lt;b dtid="281474976710813"&gt;GetProcAddress(&lt;/b&gt; &lt;b dtid="281474976710814"&gt;HMODULE&lt;/b&gt; &lt;i dtid="281474976710815"&gt;&lt;a class="synParam" onclick="showTip(this)" href="http://www.blogger.com/post-edit.g?blogID=6069588175912980102&amp;amp;postID=689065336029382659" dtid="281474976710816"&gt;hModule&lt;/a&gt;&lt;/i&gt;&lt;b dtid="281474976710818"&gt;,  &lt;/b&gt;&lt;b dtid="281474976710819"&gt;LPCSTR&lt;/b&gt; &lt;i dtid="281474976710820"&gt;&lt;a class="synParam" onclick="showTip(this)" href="http://www.blogger.com/post-edit.g?blogID=6069588175912980102&amp;amp;postID=689065336029382659" dtid="281474976710821"&gt;lpProcName&lt;/a&gt;&lt;/i&gt;&lt;b dtid="281474976710823"&gt;  &lt;/b&gt;&lt;b dtid="281474976710824"&gt;);&lt;/b&gt;&lt;br /&gt;This function takes two arguments. The  HANDLE returned by the LoadLibrary function for hModule, and the name or ordinal  of the function. So, if you take a look at the Dependency Walker picture shown  earlier, &lt;b dtid="281474976710826"&gt;_MPUSBGetDLLVersion&lt;/b&gt; will be  name of the function. And &lt;b dtid="281474976710827"&gt;1&lt;/b&gt; is it's  ordinal number.&lt;br /&gt;If the specified  function with the name given is not found in the .DLL then it returns NULL.&lt;br /&gt;The returns value from the function need to  be collected in to appropriate pointer variable. This is when the &lt;b dtid="281474976710830"&gt;mpusbapi.h&lt;/b&gt; (without underscore) comes to  use. Microchip has done all the work in this case. The author of MPUSBAPI.DLL  created this file keeping in mind the situation. This file has all the required  pointer declarations for all the functions supported by DLL and this file need  to be included in to the appropriate source files as required so that those  declarations need not be made again.&lt;br /&gt;&lt;br /&gt;&lt;b dtid="281474976710833"&gt;4.3  FreeLibrary():&lt;/b&gt;&lt;br /&gt;This function is used  to close the .DLL library that is opened with LoadLibrary.&lt;br /&gt;&lt;br /&gt;&lt;u dtid="281474976710837"&gt;SYNTAX:&lt;/u&gt;&lt;br /&gt;&lt;b dtid="281474976710839"&gt;BOOL&lt;/b&gt; &lt;b dtid="281474976710840"&gt;FreeLibrary(&lt;/b&gt; &lt;b dtid="281474976710841"&gt;HMODULE&lt;/b&gt; &lt;i dtid="281474976710842"&gt;&lt;a class="synParam" onclick="showTip(this)" href="http://www.blogger.com/post-edit.g?blogID=6069588175912980102&amp;amp;postID=689065336029382659" dtid="281474976710843"&gt;hModule&lt;/a&gt;&lt;/i&gt;&lt;b dtid="281474976710845"&gt;  &lt;/b&gt;&lt;b dtid="281474976710846"&gt;);&lt;/b&gt;&lt;br /&gt;The hModule argument what is returned by  LoadLibrary is used as argument here. This function need to be called at the end  of the program or for unloading the library from memory.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;MPUSBAPI.DLL:&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b dtid="562949953421358"&gt;&lt;u dtid="562949953421359"&gt;5. MPUSBAPI.DLL &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;This is the PC side driver file, that communicates with the Demo Firmware on PICDEM FS Demo Board. A custom driver file is required when the a &lt;b dtid="562949953421365"&gt;Custom Device Class&lt;/b&gt; or &lt;b dtid="562949953421366"&gt;Vendor Specific Device Class&lt;/b&gt; are  implemented on the device. For understanding more on device classes, please  refer to &lt;a href="http://www.blogger.com/USBDesign.html" dtid="562949953421367"&gt;USB Basics -  Part II (How USB Devices are designed and developed?)&lt;/a&gt; It communicates with  lower level driver &lt;b dtid="562949953421368"&gt;mchpusb.sys&lt;/b&gt; which in  turn communicates with the bus drivers of USB for USB data transfers.&lt;br /&gt;&lt;br /&gt;The  MPUSBAPI.DLL provides functions that communicate over an&lt;br /&gt;end-point&lt;br /&gt;. Again to understand what is end-point  refer to &lt;a href="http://comvcon.blogspot.com/2008/11/usb-basics-part-ii-how-usb-devices-are.html" dtid="562949953421373"&gt;USB Basics -  Part II (How USB Devices are designed and developed?)&lt;/a&gt;. For now we can safely  assume end-point as a buffer to which both PC application as well as the device  has access.&lt;br /&gt;&lt;br /&gt;The MPUSBAPI.DLL refers the end points with string names. Example: "\\MCHP_EP1" refers to end-point 1 buffer. An end point can be IN end-point or OUT end-point or both.&lt;br /&gt;&lt;br /&gt;The terms IN and OUT are with respect to the HOST or PC. So, always a PC application writes to OUT end-point and the devices read from an OUT end-point. Similarly, the HOST reads from IN end-point and devices write to an IN end-point. The Demo firmware implemented 2 end-points in it. One is &lt;b dtid="562949953421378"&gt;Control end-point&lt;/b&gt; which will be used by the OS and BIOS for configuring the device. The other end-point implemented is "MCHP_EP1" which is both IN and OUT end-point. The second end-point uses Bulk transfer.&lt;br /&gt;&lt;br /&gt;This DLL provides following functions:  &lt;table dtid="562949953421381" align="center" border="1" cellpadding="2" cellspacing="1" width="75%"&gt;&lt;tbody&gt;&lt;tr dtid="562949953421382"&gt;&lt;td dtid="562949953421383"&gt;&lt;b dtid="562949953421384"&gt;1. DWORD _MPUSBGetDLLVersion(void)&lt;/b&gt;&lt;br /&gt;This function will retrieve the version  number of the DLL. &lt;/td&gt;&lt;/tr&gt;&lt;tr dtid="562949953421386"&gt;&lt;td dtid="562949953421387"&gt;&lt;b dtid="562949953421388"&gt;2. DWORD  _MPUSBGetDeviceCount(PCHAR pVID_PID)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;This function takes the pVID_PID (Vendor ID and Product ID) string as an argument and returns the number of devices with that specific Vendor ID and Product ID.&lt;br /&gt;If the VID is 0x04d8 and PID is 0x000c, the  pVID_PID string will need to have a the value as "vid_04d8&amp;amp;pid_000c"  &lt;/td&gt;&lt;/tr&gt;&lt;tr dtid="562949953421392"&gt;&lt;td dtid="562949953421393"&gt;&lt;b dtid="562949953421394"&gt;3. HANDLE _MPUSBOpen(DWORD instance, // Input PCHAR pVID_PID, // Input PCHAR pEP, // Input DWORD dwDir, // Input DWORD dwReserved); // Input &lt;future dtid="562949953421395" use=""&gt;&lt;/future&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;This  function returns a handle to the end-point. The argument &lt;i dtid="562949953421398"&gt;instance&lt;/i&gt; is used for passing a zero based  index. This index value is based on the number of devices returned by  MPUSBGetDeviceCount().&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i dtid="562949953421402"&gt;pVID_PID&lt;/i&gt; is the VID and PID string as  explained above.&lt;br /&gt;&lt;i dtid="562949953421404"&gt;pEP&lt;/i&gt; is the name of end-point something  like "\\MCHP_EP1".&lt;br /&gt;&lt;i dtid="562949953421406"&gt;dwDir&lt;/i&gt; based on the end-point IN or OUT  direction, MP_READ or MP_WRITE need to be passed as argument. &lt;i dtid="562949953421407"&gt;dwReserved&lt;/i&gt; For future use.&lt;br /&gt;&lt;br /&gt;This function returns a HANDLE to the end point opened which will be used by other functions. If no device is found, returns NULL. Check for NULL. &lt;/td&gt;&lt;/tr&gt;&lt;tr dtid="562949953421410"&gt;&lt;td dtid="562949953421411"&gt;&lt;b dtid="562949953421412"&gt;4. DWORD _MPUSBRead(HANDLE handle, // Input PVOID pData, // Output DWORD dwLen, // Input PDWORD pLength, // Output DWORD dwMilliseconds); // Input &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;This function is used to read from an IN end-point. It uses the handle returned by _MPUSBOpen function. The _MPUSBOpen function need to open this end point, with MP_READ as Direction (dwDir) argument.&lt;br /&gt;&lt;i dtid="562949953421416"&gt;pData&lt;/i&gt; is pointer to buffer.&lt;br /&gt;&lt;i dtid="562949953421418"&gt;dwLen&lt;/i&gt; size of data to be read.&lt;br /&gt;&lt;i dtid="562949953421420"&gt;pLength&lt;/i&gt; size of data actually read.&lt;br /&gt;&lt;i dtid="562949953421422"&gt;dwMilliseconds&lt;/i&gt; Total wait time.&lt;br /&gt;&lt;br /&gt;Returns 1 on SUCCESS. &lt;/td&gt;&lt;/tr&gt;&lt;tr dtid="562949953421425"&gt;&lt;td dtid="562949953421426"&gt;&lt;b dtid="562949953421427"&gt;5. DWORD _MPUSBWrite(HANDLE handle, // Input PVOID pData, // Input DWORD dwLen, // Input PDWORD pLength, // Output DWORD dwMilliseconds); // Input &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;This function is used to write to OUT end-point. It uses the handle returned by _MPUSBOpen function. The _MPUSBOpen function need to open this end point, with MP_WRITE as Direction (dwDir) argument.&lt;br /&gt;&lt;i dtid="562949953421431"&gt;pData&lt;/i&gt; is pointer to buffer.&lt;br /&gt;&lt;i dtid="562949953421433"&gt;dwLen&lt;/i&gt; size of data to be written.&lt;br /&gt;&lt;i dtid="562949953421435"&gt;pLength&lt;/i&gt; size of data actually written.&lt;br /&gt;&lt;i dtid="562949953421437"&gt;dwMilliseconds&lt;/i&gt; Total wait time.&lt;br /&gt;&lt;br /&gt;Returns 1 on SUCCESS. &lt;/td&gt;&lt;/tr&gt;&lt;tr dtid="562949953421440"&gt;&lt;td dtid="562949953421441"&gt;&lt;b dtid="562949953421442"&gt;6. DWORD _MPUSBReadInt(HANDLE handle, // Input PVOID pData, // Output DWORD dwLen, // Input PDWORD pLength, // Output DWORD dwMilliseconds); // Input &lt;/b&gt;&lt;br /&gt;Used in Isochronous transfer/ Interrupt  transfer. Refer to _mpusbapi.cpp for more details. &lt;/td&gt;&lt;/tr&gt;&lt;tr dtid="562949953421444"&gt;&lt;td dtid="562949953421445"&gt;&lt;b dtid="562949953421446"&gt;7. BOOL _MPUSBClose(HANDLE handle); &lt;/b&gt;&lt;br /&gt;Used to close the handle opened by the _MPUSBOpen function. Need to be called before application exits. Otherwise the device may not respond properly, if the application is re-opened. &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;b dtid="562949953421450"&gt;NOTE:  The functions in the DLL has underscores prefixed to them.&lt;/b&gt; &lt;b dtid="562949953421451"&gt;&lt;u dtid="562949953421452"&gt;&lt;br /&gt;&lt;br /&gt;6. A look  at the Demo Firmware Source Code &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Now, we know what are all the functions on PC side are available in Microchip DLL(MPUSBAPI.DLL). So, lets take look at the firmware code in Demo example which is in &lt;b dtid="562949953421458"&gt;C:\MCHPFSUSB\fw\Demo\&lt;/b&gt; folder. The files  which are of interest now are &lt;b dtid="562949953421459"&gt;main.c&lt;/b&gt;  and &lt;b dtid="562949953421460"&gt;user.c&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;The main() function in the main.c is starting point of the application. This function has an infinite while loop which inturn calls the function &lt;b dtid="562949953421463"&gt;ProcessIO()&lt;/b&gt;. The ProcessIO() function is  implemented in user.c and it calls another function called &lt;b dtid="562949953421464"&gt;ServiceRequests()&lt;/b&gt;. This is a general  structure adopted by Microchip Firmware library for USB.&lt;br /&gt;&lt;br /&gt;The ServiceRequests function handles the commands sent by the HOST (PC) application, using the _MPUSBRead and _MPUSBWrite calls. There is a &lt;b dtid="562949953421467"&gt;union&lt;/b&gt; called &lt;b dtid="562949953421468"&gt;DATA_PACKET&lt;/b&gt; in user.h. This union  comprises many structures that help in interpreting the data received over USB.&lt;br /&gt;&lt;br /&gt;When using the Demo application, the format of data transfer seems to be,&lt;br /&gt;&lt;br /&gt;1. CMDByte  ,   DATA LENGTH ,    [BYTES...]&lt;br /&gt;&lt;br /&gt;2. CMDByte  ,   LED NO. ,    ON(1)/OFF(0)&lt;br /&gt;&lt;cmd&gt;&lt;data&gt;&lt;cmd&gt;&lt;led&gt;&lt;on(1)&gt;&lt;br /&gt;&lt;br /&gt;So, in the above format the data will be filled by the Host application and transmitted. The firmware interprets the commands received from host, and it will perform actions depending on what the host sends. The commands are listed in &lt;b dtid="562949953421486"&gt;C:\MCHPFSUSB\fw\Demo\user\user.h&lt;/b&gt; file. The Host side application need to match these commands. More commands can be added and the Demo application can extended by adding more code in ServiceRequests() function.&lt;br /&gt;&lt;p dtid="562949953421483"&gt;&lt;br /&gt;&lt;b dtid="562949953421489"&gt;&lt;u dtid="562949953421490"&gt;7. VC++ Example&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Download the VC++ Example by clicking &lt;a href="http://www.blogger.com/Downloads%5CVCPICUSBDemo.zip" dtid="562949953421493"&gt;here.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In this example there are two files  that need to be looked at.&lt;br /&gt;&lt;br /&gt;&lt;b dtid="562949953421498"&gt;7.1.   PICConnector.h and PICConnector.cpp&lt;/b&gt;: In these 2 files I implemented a simple  wrapper class which invokes the functions from MPUSBAPI.DLL. The &lt;b dtid="562949953421499"&gt;LoadDLL()&lt;/b&gt; member function of PICConnector class need to be called and it uses the Win32 API LoadLibrary(), GetProcAddress(), and FreeLibrary() to load the MPUSBAPI.DLL. Take a look at the source code while reading this portion. When the GetProcAddress call is made, note that the function names are passed with an underscore and the return value is assigned to corresponding function pointer. The function pointers are declared in &lt;b dtid="562949953421500"&gt;mpusbapi.h&lt;/b&gt; file which is in  the project folder.&lt;br /&gt;&lt;br /&gt;Once this DLL is loaded, the &lt;b dtid="562949953421503"&gt;Open()&lt;/b&gt; and &lt;b dtid="562949953421504"&gt;Close()&lt;/b&gt; functions can be called to open  the pipes on end-point 1 of device with &lt;b dtid="562949953421505"&gt;index 0&lt;/b&gt;. These functions use the MPUSBOpen() and MPUSBClose() functions internally. Also, take a look at the error checking that is done in these files. This code is designed to work only with the first connected device, which will have an index of 0. But by modifying the code, more than one device can be handled.&lt;br /&gt;&lt;br /&gt;In the Open() function, before calling MPUSBOpen(), the function MPUSBGetDeviceCount() is called with the vid_pid argument. This function returns the count, and if the count is 0, then it means no devices are connected to the PC. This is another error checking mechanism that can be used.&lt;br /&gt;&lt;br /&gt;The  &lt;b dtid="562949953421510"&gt;SendReceivePacket()&lt;/b&gt; function is  responsible for actual data transmission. This function makes calls to both &lt;b dtid="562949953421511"&gt;MPUSBWrite()&lt;/b&gt; as well as &lt;b dtid="562949953421512"&gt;MPUSBRead()&lt;/b&gt;. The MPUSBRead() is called as soon as MPUSBWrite() is invoked. What it means is, as soon as the PC application sends a command, it is also expecting a response. You can see in the firmware that, after receiving the command and data, there is a response packet sent by the firmware which includes the command bytes in it. It is a kind of acknowledgement implemented in the Demo application. And all applications does not require to implement this feature. So, there can be independent calls to MPUSBRead and MPUSBWrite functions.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b dtid="562949953421516"&gt;7.2.  VCPICUSBDemoDlg.cpp and  VCPICUSBDemoDlg.h&lt;/b&gt;: The cpp file, implements 3 event handler functions. They  are, &lt;b dtid="562949953421517"&gt;OnGetVersion()&lt;/b&gt;, &lt;b dtid="562949953421518"&gt;OnLed3()&lt;/b&gt; and &lt;b dtid="562949953421519"&gt;OnLed4()&lt;/b&gt;. Take a look at the code of these  functions.&lt;br /&gt;&lt;br /&gt;Here I will explain the &lt;b dtid="562949953421522"&gt;OnGetVersion()&lt;/b&gt; function. &lt;/p&gt;&lt;p dtid="562949953421483"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p dtid="562949953421483"&gt;&lt;img style="max-width: 800px;" src="http://lh6.ggpht.com/_HhgNGHF8d1c/SSfDH4W_OoI/AAAAAAAAAF0/0LMGAFmd93w/%5BUNSET%5D.jpg?imgmax=800" /&gt;&lt;/p&gt;&lt;p dtid="562949953421483"&gt;The m_PICConnector is a object of PICConenctor class which loads the  MPUSBAPI.DLL, created in the CVCPICUSBDemoDlg class.&lt;br /&gt;&lt;br /&gt;&lt;u dtid="562949953421529"&gt;&lt;b dtid="562949953421530"&gt;Step A:  &lt;/b&gt;&lt;/u&gt;In this step the pipes on end-point 1(MCHP_EP1) are opened by calling the Open() function. This function inturn calls MPUSBOpen on MCHP_EP1 for both OUT and IN pipes and stores the handler values in two variables, &lt;b dtid="562949953421531"&gt;myOutPipe&lt;/b&gt; and &lt;b dtid="562949953421532"&gt;myInPipe&lt;/b&gt;. Take a look at how the calls are  made in Open function.&lt;br /&gt;&lt;br /&gt;&lt;u dtid="562949953421535"&gt;&lt;b dtid="562949953421536"&gt;Step B: &lt;/b&gt;&lt;/u&gt;In this step two buffers are declared. The length of an bulk endpoint can not exceed 64 bytes in Full-Speed USB. So, the buffer length for both OUT and IN pipes is 64 bytes. But actually we will be transmitting less number of bytes compared to the buffer size.&lt;br /&gt;&lt;br /&gt;&lt;u dtid="562949953421539"&gt;&lt;b dtid="562949953421540"&gt;Step C:  &lt;/b&gt;&lt;/u&gt;In this step, the Demo Application command(READ_VERSION) is defined. Take a look at the user.h file in the Demo firmware. The value of the command READ_VERSION is mentioned as 0. Then the send_buf is being filled with the command and the data length. When firmware receives this command, based on the command it interprets remaining fields.&lt;br /&gt;&lt;br /&gt;&lt;u dtid="562949953421543"&gt;&lt;b dtid="562949953421544"&gt;Step D:  &lt;/b&gt;&lt;/u&gt;&lt;b dtid="562949953421545"&gt;SendReceivePacket&lt;/b&gt; is called in this step. The send_buf which is populated in the previous step with the command and data fields is transmitted in this step, at the same time, as this command is retrieving version information, the pointer to receive_buf and expected length which is 4 are passed as arguments.&lt;br /&gt;&lt;br /&gt;The ServiceRequests() function in the  firmware processes this command and fills the response data. When the firmware  sets the &lt;b dtid="562949953421548"&gt;counter&lt;/b&gt; to a non-zero value,  the USB stack will transmit the buffer back to Host.&lt;br /&gt;&lt;br /&gt;&lt;u dtid="562949953421551"&gt;&lt;b dtid="562949953421552"&gt;Step E:  &lt;/b&gt;&lt;/u&gt;In this step, the received data is verified if it is generated by the  firmware correctly.&lt;br /&gt;&lt;br /&gt;&lt;u dtid="562949953421555"&gt;&lt;b dtid="562949953421556"&gt;Step F: &lt;/b&gt;&lt;/u&gt;As the operation is complete,  both IN and OUT pipes are closed in this function.&lt;br /&gt;&lt;br /&gt;Here I am stopping this article. And this article showed how to interact with Demo firmware on Microchip PICDEM FS USB Board using VC++. &lt;/p&gt;&lt;p dtid="562949953421483"&gt;&lt;span style="font-family:verdana;"&gt;&lt;b&gt;&lt;i&gt;Source Code &lt;/i&gt;for this article can be found &lt;a href="http://cprogramming.classes.googlepages.com/VCPICUSBDemo.zip"&gt;here.&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dtid="562949953421483"&gt;&lt;b&gt;&lt;a href="http://cprogramming.classes.googlepages.com/VCPICUSBDemo.zip"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;&lt;/on(1)&gt;&lt;/led&gt;&lt;/cmd&gt;&lt;/data&gt;&lt;/cmd&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6069588175912980102-689065336029382659?l=comvcon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://comvcon.blogspot.com/feeds/689065336029382659/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6069588175912980102&amp;postID=689065336029382659' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6069588175912980102/posts/default/689065336029382659'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6069588175912980102/posts/default/689065336029382659'/><link rel='alternate' type='text/html' href='http://comvcon.blogspot.com/2008/11/interacting-with-microchip-full-speed.html' title='Interacting with Microchip Full-Speed USB Demo Board using Visual Studio Tools  - VC++ 6.0'/><author><name>Vidya</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_HhgNGHF8d1c/SSfDH4W_OoI/AAAAAAAAAF0/0LMGAFmd93w/s72-c/%5BUNSET%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6069588175912980102.post-3814548414932071413</id><published>2008-11-06T21:47:00.000+05:30</published><updated>2008-11-06T21:50:14.170+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='All about USB'/><title type='text'>USB Device Classes and Choosing the right Device Class for your application</title><content type='html'>&lt;span style="font-weight: bold;"&gt;1. USB Device Classes&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;A USB Device Class is a groups of devices or interfaces with similar attributes or services. USB Class is mainly used to describe the manner in which an interface communicates with the host including both data and control mechanisms. The class information is used by the host to identify and load the required drivers for specific interfaces/devices, to manage interface connectivity, and to manage the capabilities provided by the interface.&lt;br /&gt;&lt;br /&gt;A USB Class Specification defines the requiremenets of a USB Class. The Class Specification is used by both firmware developers and host software developers (device driver developers) to agree upon certain rules while developing a USB device. The device drivers that cover all features of a device class is known as Class Drivers. These drivers can be used by any kind of device that falls in a particular device class.&lt;br /&gt;&lt;br /&gt;The Class Drivers are developed by Operating System or third party software vendors, as well as by manufacturers supporting multiple devices which fall in the same device class.&lt;br /&gt;&lt;br /&gt;USB-IF is responsible for defining and maintaining Device Class Specifications.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2. OS Supplied Device Drivers&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The Class Definition and Class Specification allows independent groups to work seperately on host software development and device development, but still allows the device and host software work without any interoperability issues. Most of the times the Operating Systems will implement default device drivers for most of the device classes introduced by USB-IF. The default device drivers reduce the burden on device manufacturers as they avoid spending time on development of device drivers. These device drives will be installed when the Operating System is installed on a host, and available for all devices that follow the class specifcation.&lt;br /&gt;&lt;br /&gt;The other benifit of designing a device to follow a specific Device Class is, even if a Operating System does not support a device class in current version, there is a good chance that the class will be supported in next version.&lt;br /&gt;&lt;br /&gt;To avoid Windows to show the Unknown Provider message, the vendor developed device drivers need to signed for Windows. If you are already using a Operating System supplied Class Driver then this activity can also be avoided.&lt;br /&gt;&lt;br /&gt;So, overall apart form grouping devices which has common features, the device class also reduces the development time cycle by helping the Operating Systems also to do some work on device manufacturer's behalf.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3. List of USB Device Classes supported by Windows Operating System as of today.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The Base Class Code is a hexadecimal number which is used by the USB identify a device class. In the following lists it is provided in the parenthesis. Device Classes listed in Microsoft web-site:&lt;br /&gt;&lt;br /&gt;   1. Bluetooth class - (0xE0)&lt;br /&gt;   2. Chip/smart card interface devices (CCID) - (0x0B)&lt;br /&gt;   3. Hub class - (0x09)&lt;br /&gt;   4. Human interface device (HID) - (0x03)&lt;br /&gt;   5. Mass storage class (MSC) - (0x08)&lt;br /&gt;   6. Printing class - (0x07)&lt;br /&gt;   7. Scanning/imaging (PTP) - (0x06)&lt;br /&gt;   8. USB Audio class - (0x01)&lt;br /&gt;   9. Modem class (CDC) - (0x02)&lt;br /&gt;  10. Video class (UVC) - (0x0E)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Not all classes proposed by the USB-IF are implemented in the Operating Systems. Compare the following list with previous list. The numbers in the parenthesis will give th Base Class code. This should match in both the lists.&lt;br /&gt;&lt;br /&gt;Device Classes listed in USB-IF web-site(www.usb.org):&lt;br /&gt;&lt;br /&gt;   1. Use class information in the Interface Descriptors - (0x00) - Special Case&lt;br /&gt;   2. Audio Class - (0x01)&lt;br /&gt;   3. Communications and CDC Control - (0x02)&lt;br /&gt;   4. HID (Human Interface Device) - (0x03)&lt;br /&gt;   5. Physical - (0x05)&lt;br /&gt;   6. Image (PTP) - (0x06)&lt;br /&gt;   7. Printer - (0x07)&lt;br /&gt;   8. Mass Storage (MSD) - (0x08)&lt;br /&gt;   9. Hub - (0x09)&lt;br /&gt;  10. CDC-Data - (0x0A)&lt;br /&gt;  11. Smart Card - (0x0B)&lt;br /&gt;  12. Content Security - (0x0D)&lt;br /&gt;  13. Video - (0x0E)&lt;br /&gt;  14. Diagnostic Device - (0xDC)&lt;br /&gt;  15. Wireless Controller - (0xE0)&lt;br /&gt;  16. Miscellaneous - (0xEF)&lt;br /&gt;  17. Application Specific - (0xFE)&lt;br /&gt;  18.&lt;br /&gt;  19. Vendor Specific - (0xFF)&lt;br /&gt;20.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Each Device Class will have pre-defined format for the descriptors in use. So, when a particual device is implemented to use a particular device class, all the data structures need to be formatted as per the device class requirements.&lt;br /&gt;&lt;br /&gt;Next Section on Standard USB Device Classes and Choosing the right Device Class for your application - (Part II) explains how Descriptors in USB is used to distinguish between Device Classes and how they need to be used for defining Device Classes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6069588175912980102-3814548414932071413?l=comvcon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://comvcon.blogspot.com/feeds/3814548414932071413/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6069588175912980102&amp;postID=3814548414932071413' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6069588175912980102/posts/default/3814548414932071413'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6069588175912980102/posts/default/3814548414932071413'/><link rel='alternate' type='text/html' href='http://comvcon.blogspot.com/2008/11/usb-device-classes-and-choosing-right.html' title='USB Device Classes and Choosing the right Device Class for your application'/><author><name>Vidya</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6069588175912980102.post-4126033019215549103</id><published>2008-11-06T21:45:00.000+05:30</published><updated>2008-11-06T21:47:22.500+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='All about USB'/><title type='text'>Windows 98 USB Driver Information - How to find one for your USB device?</title><content type='html'>&lt;span style="font-family:MS Sans Serif;"&gt; &lt;b&gt;&lt;u&gt;1. Windows 98 USB Drivers - Introduction&lt;br /&gt;&lt;br /&gt;&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-family:MS Sans Serif;"&gt;In this article I try to provide some insights on why we struggle to find Windows 98 USB Drivers for many USB devices.          &lt;u&gt;&lt;strong&gt;At the same time I also tried to provide various links to available free and non-free drivers for Windows 98 based devices.&lt;/strong&gt;&lt;/u&gt;            &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:MS Sans Serif;"&gt;See if the links in the &lt;b&gt;Article related resources section&lt;/b&gt; can solve your problems, or you can read through the main article below.        &lt;br /&gt;       &lt;br /&gt;First and most important one has to know about Windows 98 USB Driver support is, the evolution of the windows product line.&lt;br /&gt;      i.e Windows 95 &gt; Windows 98 &gt; Second Edition &gt; Windows ME &gt; XP.               &lt;br /&gt;       &lt;br /&gt;        If you see the time lines of USB Specification versions and Windows Operating Systems version, by the time &lt;b&gt;Windows 98&lt;/b&gt;(NOT Windows 98 SE) came into existence only USB 1.1 Specification is available. And not many USB devices are available in the market. The USB Host Protocol Stack implementation is still going on in both hardware (host controllers development) as well as in software (USB Stacks).&lt;br /&gt;       &lt;br /&gt;So, when Windows 98 is released it came with limited support for USB devices. The only devices that started working on USB are Mouse and Keyboard. No Pen Drives, No Cameras, No iPods, No Mobile phones could connect to the PC over USB.&lt;br /&gt;Also, Windows 98 being a new face-lift OS from the time Windows 95 is released, it could support USB devices from few vendors (device manufacturers) only.&lt;br /&gt;  &lt;br /&gt;     The &lt;b&gt;Windows 98 SE (Second Edition)&lt;/b&gt; is released, the number of USB devices that are supported increased dramatically. We can say proper USB support   is available starting from Windows 98 SE only. What it means is, Windows 98 SE essentially came with more USB Device Drivers.       &lt;br /&gt;     &lt;br /&gt;  Also note that &lt;b&gt;Windows NT&lt;/b&gt;, which also came into existence along with Windows 98, does not have USB support at all. And there many software   suites like Jungo's WinDriver/KernelDriver are designed to specifically solve this problem.   &lt;br /&gt;  &lt;br /&gt;        &lt;b&gt;&lt;u&gt;2. Windows 98 USB Driver for you MSD (Mass Storage Drives)&lt;br /&gt;&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-family:MS Sans Serif;"&gt;The scarcity of support in Windows 98 for many vendors lead to unavailability of Windows 98 specific usb device drivers for devices like iPODs, USB Pen Drives, Game Consoles etc...&lt;br /&gt;  &lt;br /&gt;  How most vendors tackled this situation is  they started providing &lt;b&gt;download packages of Windows 98 driver&lt;/b&gt; for their devices on their web sites and re-distribution packages. Most of the times you need provide your product details in a search box in the vendor's website.&lt;br /&gt;     &lt;br /&gt;For example if you have ScanDisk USB Thumb Drive, goto ScanDisk's website, in the support section enter the Device details, they show you available list of driver downloads. If the drivers are not available here or they don't give Windows 98 USB Driver support, then you can goto the generic driver download web sites and search for closest match.&lt;br /&gt;              &lt;br /&gt;There are many general websites which claim to scan your computer provide you with appropriate drivers. Some websites provide free downloads of Windows 98 USB Driver software.&lt;br /&gt;           &lt;br /&gt;  And you can do search for Windows 98 USB Drivers at &lt;a href="http://www.microsoft.com/downloads/Search.aspx"&gt;Microsoft Download Center&lt;/a&gt; too.      &lt;br /&gt;  &lt;br /&gt;  &lt;b&gt;&lt;u&gt;3.Generic Windows 98 USB Driver packages&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Apart from the USB Device specific drivers, there are generic usb drivers also available. I have provided few links in the resource section which give more details on from where these Generic Windows 98 USB Driver packages can be downloaded.&lt;br /&gt;        &lt;b&gt;&lt;u&gt;            &lt;br /&gt;            4.Notes for developers/programmers&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Every Windows OS will come with it's Driver Development Kit(DDK). If you want to develop a Windows 98 USB Driver you should learn the Windows 98 DDK first and start doing the development. Windows XP, 2000, 2003, Vista are having Layered USB Driver Architecture, where as a developer you don't need to learn DDK and do low level programming on the OS. These OSes are providing a generic user level USB driver that any one can use easily.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6069588175912980102-4126033019215549103?l=comvcon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://comvcon.blogspot.com/feeds/4126033019215549103/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6069588175912980102&amp;postID=4126033019215549103' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6069588175912980102/posts/default/4126033019215549103'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6069588175912980102/posts/default/4126033019215549103'/><link rel='alternate' type='text/html' href='http://comvcon.blogspot.com/2008/11/windows-98-usb-driver-information-how.html' title='Windows 98 USB Driver Information - How to find one for your USB device?'/><author><name>Vidya</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6069588175912980102.post-2325648657228409038</id><published>2008-11-06T21:44:00.001+05:30</published><updated>2008-11-06T21:44:55.654+05:30</updated><title type='text'>jsr080 - javax.usb - A Java based USB Library</title><content type='html'>&lt;span style="font-family:Arial;"&gt;&lt;b&gt;&lt;u&gt;1. JSR-080 Introduction&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;JSR-080 (JSR080 or JSR-80) is a Java Specification Request in the Java Community Process(SM) Program. The JSR080 specification provides a standard Java(TM) API for communicating with any device attached to the computer via Universal Serial Bus (USB). It allows Java applications to discover, read, write, and manage USB devices.&lt;br /&gt;  The JSR080 specification is released during year 2005. More details about the JSR080(JSR-80) can be found &lt;a href="http://jcp.org/en/jsr/detail?id=80"&gt;here.&lt;/a&gt;      &lt;br /&gt;  &lt;br /&gt;         &lt;b&gt;&lt;u&gt;2. javax.usb Introduction&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;  &lt;b&gt;javax.usb&lt;/b&gt; is an Opensource implementaion for the API provided in JSR080. There are 7 modules in javax.usb project. They are listed below.   &lt;ul&gt;&lt;li&gt;&lt;a href="http://javax-usb.cvs.sourceforge.net/javax-usb/javax-usb/"&gt;javax-usb&lt;/a&gt;: The actual API implementation as per JSR080.&lt;/li&gt;&lt;li&gt;&lt;a href="http://javax-usb.cvs.sourceforge.net/javax-usb/javax-usb-ri/"&gt;javax-usb-ri&lt;/a&gt;: This is the common RI (Partial OS-Independent Reference Implementation ).&lt;/li&gt;&lt;li&gt;&lt;a href="http://javax-usb.cvs.sourceforge.net/javax-usb/javax-usb-ri-linux/"&gt;javax-usb-ri-linux&lt;/a&gt;: This is the Linux implementation that connects the Linux USB Stack to OS-Independent RI.&lt;/li&gt;&lt;li&gt;&lt;a href="http://javax-usb.cvs.sourceforge.net/javax-usb/javax-usb-ri-windows/"&gt;javax-usb-ri-windows&lt;/a&gt;: This is an &lt;strong&gt;ABANDONED&lt;/strong&gt; Windows implementation.  it does not work, it needs a kernel driver.&lt;/li&gt;&lt;li&gt;&lt;a href="http://javax-usb.cvs.sourceforge.net/javax-usb/javax-usb-libusb/"&gt;javax-usb-libusb&lt;/a&gt;: This is an &lt;strong&gt;alpha&lt;/strong&gt; libusb implementation (written for Windows).&lt;/li&gt;&lt;li&gt;&lt;a href="http://javax-usb.cvs.sourceforge.net/javax-usb/javax-usb-tck/"&gt;javax-usb-tck&lt;/a&gt;: This is the Test Compliance Kit (TCK) required by the &lt;a href="http://jcp.org/"&gt;JCP&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;&lt;a href="http://javax-usb.cvs.sourceforge.net/javax-usb/javax-usb-example/"&gt;javax-usb-example&lt;/a&gt;: This package contains example code that shows how the API can be used.&lt;/li&gt;&lt;/ul&gt;      There is also a &lt;a&gt;BSD implementation&lt;/a&gt; created by Ricoh. For more information, visit either their &lt;a href="http://www.ricoh.com/esa/index.html"&gt; global site&lt;/a&gt; and register for the Ricoh Developer Program (RiDP).           &lt;br /&gt;        &lt;b&gt;&lt;u&gt;3. How javax.usb API looks?&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;  The starting point to use the API is a Java class &lt;a&gt;USBHostManager&lt;/a&gt;.    This class lets you obtain an &lt;i&gt;OS-specific instance&lt;/i&gt; of the &lt;a&gt;USBServices&lt;/a&gt; interface (based on information in &lt;i&gt;javax.usb.properties&lt;/i&gt;), from which you can obtain the virtual root hub:        &lt;br /&gt;        &lt;span style="direction: ltr; text-indent: 10pt; font-family: 'Courier New',Arial; background-color: rgb(255, 255, 204); text-align: left;"&gt;                 UsbServices services =&lt;br /&gt;                             UsbHostManager.getUsbServices ();&lt;br /&gt;                             UsbHub vroothub = services.getRootUsbHub ();&lt;br /&gt;        &lt;/span&gt;            &lt;br /&gt;&lt;br /&gt;            The virtual root hub, obtained by calling &lt;code&gt;UsbServices&lt;/code&gt;'s &lt;code&gt;public UsbHub                 getRootUsbHub()&lt;/code&gt; method, provides access to all of the available host             controllers (and their root hubs). &lt;code&gt;UsbHub&lt;/code&gt;'s &lt;code&gt;public boolean isRootUsbHub()&lt;/code&gt;,             &lt;code&gt;public byte getNumberOfPorts()&lt;/code&gt;, and &lt;code&gt;public List getUsbPorts()&lt;/code&gt;             methods are useful in verifying, enumerating, and obtaining root hubs.&lt;br /&gt;           &lt;br /&gt;            More details on how to access USB devices is explained here: "&lt;a href="http://www-128.ibm.com/developerworks/linux/library/j-usb.html"&gt;Access                 USB Devices from Java Applications&lt;/a&gt;"&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6069588175912980102-2325648657228409038?l=comvcon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://comvcon.blogspot.com/feeds/2325648657228409038/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6069588175912980102&amp;postID=2325648657228409038' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6069588175912980102/posts/default/2325648657228409038'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6069588175912980102/posts/default/2325648657228409038'/><link rel='alternate' type='text/html' href='http://comvcon.blogspot.com/2008/11/jsr080-javaxusb-java-based-usb-library.html' title='jsr080 - javax.usb - A Java based USB Library'/><author><name>Vidya</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6069588175912980102.post-8913251391567711305</id><published>2008-11-06T21:35:00.000+05:30</published><updated>2008-11-06T21:42:49.874+05:30</updated><title type='text'>USB Mass Storage Device Class (MSD) [Or] The "Flash Drive, MP3 Player, External USB Hard Drive, Digital Camera" Class</title><content type='html'>&lt;b&gt;&lt;u&gt;1. USB Mass Storage Device (MSD) Class - Introduction&lt;br /&gt;&lt;br /&gt;&lt;/u&gt;&lt;/b&gt;&lt;div&gt;After &lt;a href="http://www.comvcon.com/hid.html"&gt;HID Class&lt;/a&gt; MSD (Mass Storage Device)             Class is the most celebrated device class out of all the USB Device Classes. Unlike             HID class it is &lt;strong&gt;really not&lt;/strong&gt; used for many    different kinds of applications. It's &lt;strong&gt;sole purpose&lt;/strong&gt; of existance is to connect a device to the PC as             if the device is a &lt;strong&gt;Disk Drive&lt;/strong&gt;. Thus the name &lt;strong&gt;Mass Storage Device                 Class&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:MS Sans Serif,Arial,MS Serif;"&gt;&lt;div style="clear: left;"&gt;                         Most popular examples of devices based on Mass Storage Device Class are:              &lt;div style="font-size: smaller; font-weight: bold;"&gt;          &lt;br /&gt;                           * external magnetic hard drives              &lt;br /&gt;              * external optical drives, including CD and DVD reader and writer drives              &lt;br /&gt;              * portable flash memory devices              &lt;br /&gt;              * adapters bridging between standard flash memory cards and a USB connection              &lt;br /&gt;              * digital cameras              &lt;br /&gt;              * various digital audio players &amp;amp; portable media players              &lt;br /&gt;              * Card readers              &lt;br /&gt;              * Portable Gaming systems (Nokia N-GAGE/Sony PSP)              &lt;br /&gt;              * personal data assistants and handheld computers              &lt;br /&gt;              * some newer mobile phones, like Sony Ericsson K800 and K510, Nokia N73, Nokia E61 &lt;/div&gt;                                              &lt;/div&gt;             &lt;p&gt;                 Two books that covers MSD to the core are &lt;a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;amp;location=http%3A%2F%2Fwww.amazon.com%2FUSB-Complete-Everything-Develop-Peripherals%2Fdp%2F1931448027%3Fie%3DUTF8%26s%3Dbooks%26qid%3D1179363567%26sr%3D8-1&amp;amp;tag=wwwcomvconcom-20&amp;amp;linkCode=ur2&amp;amp;camp=1789&amp;amp;creative=9325"&gt;USB Complete&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=wwwcomvconcom-20&amp;amp;l=ur2&amp;amp;o=1" alt="" style="border: medium none  ! important; margin: 0px ! important;" border="0" height="1" width="1" /&gt;                 and &lt;a href="http://www.amazon.com/gp/offer-listing/1931448043?ie=UTF8&amp;amp;tag=wwwcomvconcom-20&amp;amp;linkCode=am2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=1931448043"&gt;USB Mass Storage&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=wwwcomvconcom-20&amp;amp;l=as2&amp;amp;o=1&amp;amp;a=1931448043" alt="" style="border: medium none  ! important; margin: 0px ! important;" border="0" height="1" width="1" /&gt; .         &lt;br /&gt;&lt;br /&gt;       &lt;b&gt;&lt;u&gt;2. Benefits of using MSD device in your application&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;              Mass Storage Devices are almost supported by all existing operating systems. For                 Windows 95, the MSD device used to come with it's own Windows 95 driver, as Microsoft                 did not produce any Generice USB MSD driver by then. Similar case with Windows 98                 too. Almost all  versions of Microsoft Windows    starting from &lt;a href="http://www.comvcon.com/windows%2098%20usb%20driver.html"&gt;                     Windows 98 SE&lt;/a&gt;, and all most all Linux variants, latest MaxOS versions give                 good support to Mass Storage Device Class. &lt;b&gt;What it means to you as an USB    device developer is, you don't have put effort on developing OS specific device drivers.&lt;/b&gt;    These device drivers are already available for your use.  The &lt;strong&gt;only catch&lt;/strong&gt;                 is when you design and develop a Mass Storage Device hardware/firmware you are essentially                 developing a device that will be viewed by the &lt;strong&gt;host computer &lt;/strong&gt;as                 a &lt;strong&gt;Disk Drive. &lt;/strong&gt;And that is what you need to remember.&lt;br /&gt;          &lt;/p&gt;             &lt;p&gt;                 Windows Mobile supports accessing of the most USB mass storage devices formatted                 with FAT on devices with USB Host. Also note that there is no native support for                 Mass Storage Devices in Windows NT.             &lt;/p&gt;             &lt;p&gt; &lt;br /&gt;        &lt;b&gt;&lt;u&gt;3. How to interact with any MSD device on Windows&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;&lt;/span&gt;&lt;p&gt;The USB mass storage specification does not require any particular                 &lt;strong&gt;file system&lt;/strong&gt; to be used on MSD devices. Instead, it provides a simple                 interface to read and write sectors of data—much like the low-level interface used                 to access any hard drive—using the "&lt;strong&gt;SCSI transparent command set&lt;/strong&gt;."                 Operating systems may treat the USB drive like a hard drive, and can format it with                 any file system they like.&lt;/p&gt;             &lt;p&gt;                 But if you want to provide additional File System support then, MSD device need                 to implement a File Syetem on top of the firmware. Some standard file systems are                 &lt;strong&gt;NTFS, FAT, FAT32 &lt;/strong&gt;etc..&lt;/p&gt;                Once you are have your MSD firmware stack ready, and your device is viewed as MSD                 device by    the OS, and you can access the MSD device from your application like access                 any other file system. You can create files, directories, format the drive and do                 all sorts of things that you can do with a file system.&lt;br /&gt;&lt;br /&gt;           &lt;div style="clear: left;"&gt;                 &lt;b&gt;&lt;u&gt;4. How to Initialize any MSD device on Linux&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;    The following articles will provide better understanding on &lt;a href="http://www.linux-usb.org/USB-guide/x498.html"&gt;MSD on Linux&lt;/a&gt;. &lt;br /&gt;These articles explain how Mass Storage Devices can be initialized in Linux, what are Linux commands need to use called etc...   &lt;/div&gt;   &lt;span style="font-family:MS Sans Serif,Arial,MS Serif;"&gt;&lt;/span&gt;&lt;br /&gt;          &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6069588175912980102-8913251391567711305?l=comvcon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://comvcon.blogspot.com/feeds/8913251391567711305/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6069588175912980102&amp;postID=8913251391567711305' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6069588175912980102/posts/default/8913251391567711305'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6069588175912980102/posts/default/8913251391567711305'/><link rel='alternate' type='text/html' href='http://comvcon.blogspot.com/2008/11/usb-mass-storage-device-class-msd-or.html' title='USB Mass Storage Device Class (MSD) [Or] The &quot;Flash Drive, MP3 Player, External USB Hard Drive, Digital Camera&quot; Class'/><author><name>Vidya</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6069588175912980102.post-7945961245160862571</id><published>2008-11-06T21:34:00.000+05:30</published><updated>2008-11-06T21:35:36.444+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='HID'/><category scheme='http://www.blogger.com/atom/ns#' term='All about USB'/><category scheme='http://www.blogger.com/atom/ns#' term='Human Interface Devices'/><title type='text'>The HID (Human Interface Device) Class [Or] The "Keyboard, Mouse, Joystick" Class</title><content type='html'>&lt;span style="font-family:Arial;"&gt;&lt;b&gt;&lt;u&gt;1. HID Class - Introduction&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;     HID Class is most celebrated device class out of all the USB Device Classes. It is used by many    different kinds of applications. Sometimes you will be surprised to know that a device    that does not fit into the HID paradigm, connects to the PC using HID class. I saw some    initial mobile phones connecting the PC on USB using HID class. You will also find many   industrial control applications, that connect to PC uses HID class. You will not know    that those devices are HID devices, because the INF(Microsoft Windows Information) file tells otherwise.       &lt;br /&gt;       Initially the HID specification is designed with the intention to support, PC devices like   keyboard, mouse, joystick etc... Because these devices fall in the category of Human Interface   for the PC.   &lt;br /&gt;     But, later HID has expanded it's reach. The HID section(See Article Related Resources)   on www.usb.org has grown to huge segment. One book that covers HID to the core is &lt;a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;amp;location=http%3A%2F%2Fwww.amazon.com%2FUSB-Complete-Everything-Develop-Peripherals%2Fdp%2F1931448027%3Fie%3DUTF8%26s%3Dbooks%26qid%3D1179363567%26sr%3D8-1&amp;amp;tag=wwwcomvconcom-20&amp;amp;linkCode=ur2&amp;amp;camp=1789&amp;amp;creative=9325"&gt;USB Complete&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=wwwcomvconcom-20&amp;amp;l=ur2&amp;amp;o=1" alt="" style="border: medium none  ! important; margin: 0px ! important;" border="0" height="1" width="1" /&gt;            &lt;br /&gt;  &lt;br /&gt;         &lt;b&gt;&lt;u&gt;2. Benefits of using HID device in your application&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;  HID is almost support by all operating systems, including versions of Microsoft Windows    starting from Windows 98 SE, and all most all Linux versions. &lt;b&gt;What it means to you as a USB    device developer is, you don't have put effort on developing OS specific device drivers.&lt;/b&gt;    These device drivers are already available for your use. Well, If you are not developing Mouse,    Joystick or Keyboard, then there is some work you have to do on PC side too, but not at the     kernel level of the OS.           &lt;br /&gt;  &lt;br /&gt;          &lt;b&gt;&lt;u&gt;3. How to interact with any HID device on Windows&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;  Once you are have your HID firmware stack ready, and your device is viewed as HID device by    the OS, you can use the two standard API provided by Windows to interact directly with the    HID device.      &lt;br /&gt;  &lt;ol type="1"&gt;&lt;li&gt;Windows API functions - supplied by the HID.DLL file.&lt;/li&gt;&lt;li&gt;Microsoft DirectX® - which provides faster, more direct access to the hardware (USB device).&lt;/li&gt;&lt;/ol&gt;         &lt;br /&gt;  &lt;br /&gt;          &lt;b&gt;&lt;u&gt;4. How to interact with any HID device on Linux&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;   Still reading! Hoping to finish it soon! :-)   &lt;br /&gt;&lt;br /&gt;     &lt;b&gt;&lt;u&gt;5. Major concepts of HID&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;  &lt;ol style="" type="A"&gt;&lt;li&gt;   While using HID, the class specification defines an entity called &lt;b&gt;Reports&lt;/b&gt;.    A HID Report is nothing but the data exchange format defined by the HID speciation.   &lt;u&gt;NOTE: User can also add his own report formats.&lt;/u&gt;  Each report is identified by a    &lt;b&gt;Report Descriptor&lt;/b&gt;.   &lt;br /&gt;       The host sends and receives data by sending and requesting reports in control or interrupt    transfers. The &lt;b&gt;report format&lt;/b&gt; is flexible and can handle any type of data.       &lt;br /&gt;     So, when designing the device, the firmware need to be designed by keeping the standard    Report formats in mind, as well as per the requirement new report formats may have to be defined.   &lt;br /&gt;  &lt;br /&gt;   &lt;/li&gt;&lt;li&gt;   Each transaction can carry only small or moderate amounts of data, as only Interrupt transfer is    supported on HID class devices. That mans Bulk, and Isochronous transfers are not supported on HID Class.   &lt;br /&gt;  A low speed device can transfer maximum of 8 bytes per transaction.&lt;br /&gt;  A full speed device can transfer maximum of 64 bytes per transaction.&lt;br /&gt;  A high speed device can transfer maximum of 1024 bytes per transaction.&lt;br /&gt;  A long report can use multiple transactions.   &lt;br /&gt;  A device may send information at unpredictable times, well again because it uses interrupt transfer   the latency is maintained as in interrupt transfers the host polls the device periodically.    &lt;br /&gt;  &lt;br /&gt;     &lt;/li&gt;&lt;li&gt;   Many HID devices mostly send data to host, but HID specification allows devices to receive data from host.   This helps in control applications, or those applications where the device need information from host for it's   operations.   &lt;br /&gt;  &lt;br /&gt;       &lt;/li&gt;&lt;li&gt;   Any device that can technically follow the HID class specification (sending &amp;amp; receiving data at the data rates   specified for HID) can be implemented as a HID device. Some examples are &lt;b&gt;Bar-code readers&lt;/b&gt;, &lt;b&gt;Thermometers&lt;/b&gt;,   &lt;b&gt;Voltmeters&lt;/b&gt; and are even included in the HID specification as examples of HID devices :-). These devices mostly send    data to the host computer.     &lt;br /&gt;  Similarly devices like &lt;b&gt;Remote displays&lt;/b&gt;, &lt;b&gt;robots&lt;/b&gt; or devices of any kind that receive occasional or    periodic commands can also be HID devices.            &lt;br /&gt;  &lt;br /&gt;  &lt;/li&gt;&lt;li&gt;   The HID can be implemented as one the multiple USB interfaces supported by a device. For example   a video display may have a HID interface for software control of brightness, contrast etc.., while   a conventional &lt;b&gt;Video Class&lt;/b&gt; interface to manage the display.      &lt;br /&gt;Another example is a USB speaker system, where volume can be controlled using HID, and the Audio    class interface allows actual Audio data transfer.   &lt;br /&gt;  &lt;br /&gt;           &lt;/li&gt;&lt;li&gt;   Two important documents for working with HIDs are &lt;b&gt;&lt;i&gt;"Device Class Specification for Human Interface Devices"&lt;/i&gt;&lt;/b&gt;    and &lt;b&gt;&lt;i&gt;"HID Usage Tables"&lt;/i&gt;&lt;/b&gt;.        &lt;br /&gt;  &lt;br /&gt;  &lt;/li&gt;&lt;/ol&gt;    This concludes the article on HID class.   &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6069588175912980102-7945961245160862571?l=comvcon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://comvcon.blogspot.com/feeds/7945961245160862571/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6069588175912980102&amp;postID=7945961245160862571' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6069588175912980102/posts/default/7945961245160862571'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6069588175912980102/posts/default/7945961245160862571'/><link rel='alternate' type='text/html' href='http://comvcon.blogspot.com/2008/11/hid-human-interface-device-class-or.html' title='The HID (Human Interface Device) Class [Or] The &quot;Keyboard, Mouse, Joystick&quot; Class'/><author><name>Vidya</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6069588175912980102.post-168438244627001478</id><published>2008-11-06T21:28:00.000+05:30</published><updated>2008-11-06T21:34:04.182+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='All about USB'/><title type='text'>USB Basics - Part II (How USB Devices are designed and developed?)</title><content type='html'>&lt;span style="font-family:Arial;"&gt;This article answers many questions related to how to develop USB devices and what are the factors involved in the development process.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;When you goto any shop to buy an USB device, you might have found out many variants of USB devices like         &lt;a href="http://www.amazon.com/exec/obidos/redirect?link_code=ur2&amp;amp;tag=wwwcomvconcom-20&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;path=external-search%3Fsearch-type=ss%26index=blended%26keyword=Flash%20Drives"&gt;Pen Drives&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=wwwcomvconcom-20&amp;amp;l=ur2&amp;amp;o=1" alt="" style="border: medium none ; margin: 0px;" border="0" height="1" width="1" /&gt;,         &lt;a href="http://www.amazon.com/exec/obidos/redirect?link_code=ur2&amp;amp;tag=wwwcomvconcom-20&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;path=external-search%3Fsearch-type=ss%26index=blended%26keyword=USB%20MP3%20Players"&gt;MP3 Players&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=wwwcomvconcom-20&amp;amp;l=ur2&amp;amp;o=1" alt="" style="border: medium none ; margin: 0px;" border="0" height="1" width="1" /&gt;,         &lt;a href="http://www.amazon.com/exec/obidos/redirect?link_code=ur2&amp;amp;tag=wwwcomvconcom-20&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;path=external-search%3Fsearch-type=ss%26index=blended%26keyword=Printers"&gt;USB Printers and Scanners&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=wwwcomvconcom-20&amp;amp;l=ur2&amp;amp;o=1" alt="" style="border: medium none ; margin: 0px;" border="0" height="1" width="1" /&gt;,         &lt;a href="http://www.amazon.com/exec/obidos/redirect?link_code=ur2&amp;amp;tag=wwwcomvconcom-20&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;path=external-search%3Fsearch-type=ss%26index=blended%26keyword=Digital%20Cameras"&gt;Digital Cameras&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=wwwcomvconcom-20&amp;amp;l=ur2&amp;amp;o=1" alt="" style="border: medium none ; margin: 0px;" border="0" height="1" width="1" /&gt;,         &lt;a href="http://www.amazon.com/exec/obidos/redirect?link_code=ur2&amp;amp;tag=wwwcomvconcom-20&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;path=external-search%3Fsearch-type=ss%26index=blended%26keyword=Cell%20Phones"&gt;Cell Phones&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=wwwcomvconcom-20&amp;amp;l=ur2&amp;amp;o=1" alt="" style="border: medium none ; margin: 0px;" border="0" height="1" width="1" /&gt; and many more devices which use USB. All these devices can connect to a Personal Computer or Laptop through the ports available on that system. Later on y&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;ou can use these devices to transfer data like photos contacts etc.. to the PC. After release of the USB Specification 2.0 many devices started supporting USB, which originally never thought of being connected to PC. In the previous article &lt;a href="file:///F:/comvcon/USB%20Basics.html"&gt;USB Basics - Part I&lt;/a&gt; the basic architectural features and facilities are listed.&lt;br /&gt;&lt;br /&gt;This article discusses what are things need to be taken into cons&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;ideration before the design of the USB device and what are all the options available to the designer of an USB device.&lt;br /&gt;&lt;br /&gt;       USB device development involves basically 4 steps.&lt;br /&gt;          &lt;li&gt; Choosing the right FPGA, Microcontroller, Microprocessor, or Custom built devices which suits your application.&lt;/li&gt;             &lt;li&gt; Designing and developing the hardware and firmware as required by the application.&lt;/li&gt;             &lt;li&gt; Host system application development. To understand what is a host refer to  &lt;a href="file:///F:/comvcon/USB%20Basics.html"&gt;USB Basics - Part I&lt;/a&gt;.&lt;/li&gt;             &lt;li&gt; Obtaining a Vendor ID and Product ID.&lt;/li&gt;       &lt;br /&gt;&lt;br /&gt;        Let us take a look at these aspects more closely.&lt;br /&gt;&lt;br /&gt;  &lt;span style="color:blue;"&gt; Ok, it is time to learn some theory.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;       &lt;b&gt;&lt;u&gt;1. Choosing the right FPGA, Microcontroller, Microprocessor, or Custom built device.&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;      USB came in two revisions, 1.1 and 2.0 . And all the ne&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;w &lt;a href="http://www.amazon.com/exec/obidos/redirect?link_code=ur2&amp;amp;tag=wwwcomvconcom-20&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;path=external-search%3Fsearch-type=ss%26index=blended%26keyword=Computers%20Laptops"&gt;Computers&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=wwwcomvconcom-20&amp;amp;l=ur2&amp;amp;o=1" alt="" style="border: medium none ; margin: 0px;" border="0" height="1" width="1" /&gt; in the market now support the revision 2.0 which is also known as USB specification 2.0. The USB specificaiton mentions verious features like speed of operation, trasfer types, physical connectors etc.. that can supported by the USB&lt;/span&gt;&lt;span style="font-family:Arial;"&gt; devices. See previous article &lt;a href="file:///F:/comvcon/USB%20Basics.html"&gt;USB Basics - Part I&lt;/a&gt; for more details.&lt;br /&gt;&lt;br /&gt;But, one important thing to note down is, a particular device may not need all features that are mentioned in the specification. Some devices like Mouse can just have interrupt transfer(small quantity data transfer mechanism) and low speed operation supported in them. Some devices like memory stick or external CD drives may need high speed bulk operation(large quantity data transfer) implemented in them. So, it is the designer's responsibility to choose the right FPGA, Microcontroller or Microprocessor for his application. The&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;re are now many semi conductor companies coming out with USB solutions. For example &lt;a href="http://www.microchip.com/"&gt;Microchip&lt;/a&gt; has the &lt;a href="http://www.microchip.com/usb"&gt;PIC16C7X5 and 18F4550 family of devices&lt;/a&gt; which support low speed and full speed operations respectively. &lt;a href="http://www.cypress.com/"&gt;Cypress&lt;/a&gt; and &lt;a href="http://www.semiconductor.philips.com/"&gt;Philips&lt;/a&gt; also have devices that support High Speed, Low Speed and Full Speed USB operations.&lt;br /&gt;&lt;br /&gt;Other technologies like USB-OTG( USB On the go) and Wireless&lt;/span&gt;&lt;span style="font-family:Arial;"&gt; USB are emerging and these companies are coming up with solutions that support these emerging technologies.&lt;br /&gt;&lt;br /&gt;There are also Custom built silicon available with RS-232 to USB conversion features, or Parallel Port to USB conversion features. So, if someone's applicat&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;ion is just RS-232 to USB or USB to RS-232 conversion, he don&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;'t have spend lot of money on buying the micro controllers or FPGA and later on working on USB specific details. The developer can straight away pick one of the application specific chips and integrate them on his product. Devices of this type reduce the burden on the designer, so that he can concentrate on the end product instead of spending lot of time on developing USB related code. Again &lt;a href="http://www.cypress.com/"&gt;Cypress&lt;/a&gt; produces this kind of solutions&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;br /&gt;FPGA are specifically developed for a group of applicaitons and there are companies out there who are doing customized USB solutions on FPGAs.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;So, depending on the speed, memory and transfer rate, and data integraty requirements one of the device can be selected. A list of devices supporting USB and their features are explained in the article &lt;a href="file:///F:/comvcon/VariousUSBDevices.html"&gt;Various USB Devices&lt;/a&gt;.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;         &lt;b&gt;&lt;u&gt;2. Designing and developing the hardware and firmware as required by the application.&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;      &lt;span&gt;   &lt;script type="text/javascript"&gt;&lt;!--   google_ad_client = "pub-6599861972105872";   google_ad_width = 336;   google_ad_height = 280;   google_ad_format = "336x280_as";   google_ad_type = "text_image";   google_ad_channel ="";   google_color_border = "FFFFFF";   google_color_bg = "FFFFFF";   google_color_link = "0000FF";   google_color_text = "FFFFFF";   google_color_url = "FFFFFF";   //--&gt;&lt;/script&gt;   &lt;script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;      &lt;/script&gt;&lt;script&gt; window.google_render_ad(); &lt;/script&gt;    &lt;/span&gt;&lt;br /&gt;Depending on the requirements you might have selected a device as per the explanation above. So, if the device selected is a custom built or application spec&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;ific device in most probability the device might have implemented the USB operation completely and you just need to write to a bunch of registers for transmitting and receiving data over USB and make the required physical connections. But if you choose a microcontroller or microprocessor then, you may need to develop the USB Protocol Stack on t&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;he device(peripheral) side. This will involve considerable amount of work and you should be prepared for it. But most of the companies will do this work for you by providing the software and firmware frameworks when you buy their products. Again, as a developer you need to know what portions of the stack need to be implemented in the firmware. Sometimes the microprocessor/controller will come with the Chapter 8 protocol(This protocol is explained in Chapter 8 of the USB specification) and you may have to implemen&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;t the Chapter 9(Again this protocol is defined in Chapter 9 of the USB specification) protocol. Sometime both. PIC18F4550 family devices come with Chpater 8 protocol implemented in them and the company supplies free Chapter 9 protocol stack. More e&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;xplanation on the firmware USB Stack is available in the article &lt;a href="file:///F:/comvcon/FirmwareUSBStack.html"&gt;Firmware USB       Stack.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The other aspect is related to hardware design. The USB Bus ha&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;s four wires in the cable. The cable can be 5 meters in length between the Hub and device. The signals carried in the cable are Vusb, GND, D+ and D- lines. D+ and D- lines are differential data lines and Vusb and GND can power lines which can power up the device. By placing pull-up resistors(1.5 K ohm connected to 3.3 V) on the D+ or/and D- lines we can enable a particular speed of operation. A pull-up on D+ line indicates the device uses Full-Speed Operation and pull-up on D- line indicates that the device uses Low-Speed operation. The High-Speed device connect to host as Full-Speed devices, meaning they&lt;/span&gt;&lt;span style="font-family:Arial;"&gt; will have a pull-up on D+ line. Many devices come with internal pull-up resistors which can be enabled or disabled as required. Otherwise external pull-up resistors need to be used.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;USB works at 3.3 Volts, so the USB portion of the device need to have this power supply. Many devices come with 3.3 internal regulator or will have fac&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;ilities to connect to an external regulator when other parts on the device operate at different voltages like 5 volts. Apart from this to achieve the bit rates as specified by the specification the USB devices need to have an appropriate input clock supplied. Now in industry the defacto standards related clock frequency are - 6 MHz in case of Low-Speed devices , 48 MHz in case of Full-Speed devices and 480 MHz in case of High-Speed operation.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;br /&gt;After configuring the required speed with the pull-up and selecting appropriate input clock frequency for the device, one has to take a look at how the power supply need to provided to the device. The USB devices can draw power from the bus (kno&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;wn as &lt;b&gt;Bus powered devices&lt;/b&gt;  or they can have an external power supply connected to them (known as &lt;b&gt; Self powered devices &lt;/b&gt;). The factor that influences this decision is the power requirements of the USB device or USB board. By default the USB Bus can supply up to a maximum of 100 mAmps to each device connected on the bus and if more power is required upto 500 mAmps can be obtained through a process called negotiation. If the device does not get allocated the required amount of power because already other devices on the board are bus-powered, then the device need to have an external power supply. Also, if the device draws &lt;/span&gt;&lt;span style="font-family:Arial;"&gt;more than 500 mAmps, then it need to have an external power supply (self-powered).&lt;br /&gt;&lt;br /&gt;The next thing that need to be taken into consideration related to hardware is the kind of USB connector to use. There are two types of connectors namely "A" Plug and "B" Plug. They are also called as Upstream Connectors and Downstream Connectors respectively. The "A" Plug is the one that get connected to the host or any hub. "B" Plugs are the combination of plugs. The following diagram shows 3 varities of "B" plugs for various speeds of operation.&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_HhgNGHF8d1c/SRMUiQokVeI/AAAAAAAAAEs/JdRa5Evker0/s1600-h/usbconnectors.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 357px; height: 400px;" src="http://3.bp.blogspot.com/_HhgNGHF8d1c/SRMUiQokVeI/AAAAAAAAAEs/JdRa5Evker0/s400/usbconnectors.jpg" alt="" id="BLOGGER_PHOTO_ID_5265574968139470306" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;The "mini - B" plugs are most widely used in Digital Cameras, Mobile Phones etc.. Sometimes the device will not use any "B type plugs". If you have observed on some of the &lt;a href="http://www.amazon.com/exec/obidos/redirect?link_code=ur2&amp;amp;tag=wwwcomvconcom-20&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;path=external-search%3Fsearch-type=ss%26index=blended%26keyword=Flash%20Drives"&gt;Flash Drives or Pen Drives&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=wwwcomvconcom-20&amp;amp;l=ur2&amp;amp;o=1" alt="" style="border: medium none ; margin: 0px;" border="0" height="1" width="1" /&gt; you can devices with out "B type" or "mini - B" type plugs. They will have the "A " type plug directly soldered to them. The specification allows some deviations in certain cases.&lt;br /&gt;&lt;br /&gt;After selecting the chip and speed requirements, implementing the firmware USB stack, designing the board with specific power requirements deciding on the connectors you will be ready to have the USB device ready. So, the development activities will move further and you will get the first prototype of the board load the firmware and connect it to PC. At this point of time, if you think that the device works straight away you are mistaken. Still the hardware and firmware development activities are not completed.&lt;br /&gt;&lt;br /&gt;At this point of time, you need to decide on how the device need to be seen by Windows operating system or any Host operating system for that matter.&lt;br /&gt;&lt;br /&gt;The USB specification also introduced another concept called &lt;b&gt;Classes&lt;/b&gt; also known as &lt;b&gt;Device Classes&lt;/b&gt;.This mechansim helps in grouping similar types of devices into a single group. For example we can group devices like mouse, keyboard, joystick etc.. into a group. The basic nature of these 3 devices is that, they transmit data to the computer which the computer use to perform specific operations. Actually the USB Specification has given specific class name to this set of devices called as "Human Interface Device Class" or simply "HID Class". There are many types of device classes. To list a few,&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Audio Device Class - For audio devices like MP3 players &lt;/li&gt;&lt;li&gt;Communication Device Class - RS-232(COM) port emulators, Parallel Port Emulators, Modems etc.. &lt;/li&gt;&lt;li&gt;Mass Storage Class - Flash Disks &amp;amp; Pen Drives &lt;/li&gt;&lt;li&gt;Printer Class &lt;/li&gt;&lt;li&gt;Test &amp;amp; Measurement Class &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;a href="http://www.usb.org/developers/devclass_docs#approved"&gt;etc..&lt;/a&gt; Devices that does not fall in any of the mentioned catogories are called as &lt;b&gt;Custom Class&lt;/b&gt; or &lt;b&gt;Vendor Class&lt;/b&gt; devices.&lt;br /&gt;&lt;br /&gt;Each device class again has some sub classes. So, during the development of firmware, after having the Chapter 8 and Chapter 9(Data-Link Protocol) ready, the required device class code need to be implemented. The device class information is stored/represented in the form of collection of data structures also known as &lt;b&gt;Descriptors&lt;/b&gt;. So, these descriptors need to be defined as per the device class specification. There are 5 types of descreptors. Device Descriptor, Configuration Descriptors, Interface Descriptors, End Point Descriptors and String Descriptors. More about these later in the article &lt;a href="file:///F:/comvcon/DeviceDescriptors.html"&gt;Device Descriptors&lt;/a&gt;. The Chapter 9 protocol stack needs this information for making the device functional and they are part of the Chapter 9 of the specification.&lt;br /&gt;&lt;br /&gt;The next step would be development of user application itself. Once the user application is developed, the data transfer takes place on the USB Bus on a bunch of vrtual links called pipes. The Endpoint Descriptor mentioned above will define these pipes. The host will gatheger the information about the endpoints and the pipes are created between the host and the device. Later on the application on the device can use these pipes to transmit and receive data from the host.&lt;br /&gt;&lt;br /&gt; So, the device is ready for operation.&lt;br /&gt;&lt;br /&gt;  &lt;b&gt;&lt;u&gt;3.Host system application development.&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;There are two aspects related to Host system application development. We have already seen in the previous section that there are two types of device classes namely Standard classes and Vendor Classes. If the device incorporates the descriptors and functionality for the standard classes, then the host system would have already supplied a device driver for this group of devices. This is the reason why when we plug in the flash or pen drive on the PC, automatically it shows a drive name like E:\ or F:\. But if the host system does not already support a device driver then, a new device driver for that class need to be developed and supplied along with USB device.&lt;br /&gt;&lt;br /&gt; Also, if the device falls under &lt;b&gt;Custom Class&lt;/b&gt; that time also a device driver need to be supplied.&lt;br /&gt;&lt;br /&gt;One important note here is versions of Windows earlier to Windows 98 SP2 does not have support for USB. There are custom vendors who developed support packages for Windows NT.&lt;br /&gt;&lt;br /&gt;The next aspect would be to decide on if a host application software need to be developed or not. In most cases the host application need to be developed. In cases where the host it self is the user of the device, no host application need to be developed. A good example for this is Mouse. Also when you are migrating the old RS-232 application to USB which comunicates with an already existing PC application using COM port, the PC application need not be modified. The new USB device can have the CDC(Communication Device Class) implemented in it and emulate the COM port behaviour. This reduces the burden of re-writing many applications.&lt;br /&gt;&lt;br /&gt; Also, along with every device an &lt;b&gt;.INF file (Information File)&lt;/b&gt; need to be supplied if the operating system does not have one. The INF file contains information about how to install the new USB device when it is connected. The installation process may include setting registry of the host, re-configuring the kernal and copying certain files from the installation disk.&lt;br /&gt;&lt;br /&gt;  &lt;b&gt;&lt;u&gt;4.Obtaining a Vendor ID and Product ID.&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;This is the last major and important step before releasing the product to the Market apart from device testing. The Vendor ID and Product ID are two unique 16-bit unsigned hexa decimal numbers assigned to a specific vendor or USB product developer. Out of these two, the Vendor ID need to be obtained from the &lt;a href="file:///F:/comvcon/www.usb.org"&gt;USB Implementars Forun&lt;/a&gt;. For obtaining the Vendor ID also known as VID is a serial number, the company has to pay $1500 to the forum and register with them. The Product ID, also known as PID is an in-house serial number that is maintained by the developer or developer's company them selves and whenever a new product is released into the market a unique Product ID need to be incorporated into it.&lt;br /&gt;&lt;br /&gt;The Vendor ID(VID) and Product ID(PID) are used in both the INF Files as well as in the Device Descriptors. During the Plug &amp;amp; Play(Auto Detection, Auto Configuration) activities, the Device Descriptors containing the VID &amp;amp; PID will be transferred to the Host System. The Host Operating System will search through all the registred INF files and if a match is found, will use that INF file for installing the device. If no match is found it will prompt the user to provide the media(CD-ROM, Floppy Disk etc..) with a new INF file.&lt;br /&gt;&lt;br /&gt;So, to avoid the confilicts with other vendor's devices during the auto configuration stage, and to avoid leagel issues the Vendor ID need to be obtained from the implementors forum, before releasing the product into the market. The Product ID is required to avoid conflicts with other devices from the same vendor. Many semi conductor vendors has programs to help their customers related to Vendor IDs. &lt;a href="http://www.microchip.com/"&gt;Microchip Technologies &lt;/a&gt; has one program as of today where you can share their Vendor ID. This saves $1500 for you.&lt;br /&gt;&lt;br /&gt;I conclude this article here.. And in next bunch of articles I will explain in detail how to go about device selection, firmware development, device class development, device driver selection &amp;amp; development etc.. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6069588175912980102-168438244627001478?l=comvcon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://comvcon.blogspot.com/feeds/168438244627001478/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6069588175912980102&amp;postID=168438244627001478' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6069588175912980102/posts/default/168438244627001478'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6069588175912980102/posts/default/168438244627001478'/><link rel='alternate' type='text/html' href='http://comvcon.blogspot.com/2008/11/usb-basics-part-ii-how-usb-devices-are.html' title='USB Basics - Part II (How USB Devices are designed and developed?)'/><author><name>Vidya</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_HhgNGHF8d1c/SRMUiQokVeI/AAAAAAAAAEs/JdRa5Evker0/s72-c/usbconnectors.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6069588175912980102.post-8138505043173705414</id><published>2008-11-06T21:15:00.000+05:30</published><updated>2008-11-06T21:25:45.738+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='All about USB'/><title type='text'>USB Basics - Part I (What actullay is USB?)</title><content type='html'>&lt;table summary="" border="0" width="90%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td colspan="1" align="left" valign="top" width="100%"&gt;This article is part of a series of articles that explain USB from the standpoint of a software/firmware developer. USB has become a defacto standard in the PC world. And it is replacing the older buses like RS-232, ISA and Parallel ports at faster pace.&lt;br /&gt;&lt;br /&gt;Apart from this USB is becoming more available, like USB On The Go(USB-OTG) and Wireless USB. Which means that both embedded system developers as well as PC application developers need to understand on how to use this new bus architecture in their development activities.&lt;br /&gt;&lt;br /&gt;As per the USB Specification 2.0 the motivation for developing USB came from three interrelated considerations. They are connecting PC to telephone, Ease-of-use and Port expansion. USB met all these 3 considerations and it not only able to connect the PC to telephone, but it also allowed lot of new devices to be created and lot of existing applications to be migrated to it architecture.&lt;br /&gt;&lt;br /&gt;The primary advantage of USB is the ease-of-use. This is accomplised by incorporating plug &amp;amp; play and hot plugging mechanisms into the architecture. These features have lead to the conversion of many existing applications which use the legacy parallel ports and serial ports to USB.&lt;br /&gt;&lt;br /&gt;         The USB Specification came in two revisons. The first release is called &lt;a href="http://www.usb.org/developers/docs/usbspec.zip"&gt;USB 1.1&lt;/a&gt; and the second release is called &lt;a href="http://www.usb.org/developers/docs/usb_20_02212005.zip"&gt;USB 2.0&lt;/a&gt;.         These specifications can be downloaded from &lt;a href="file:///F:/comvcon/www.usb.org"&gt;www.usb.org&lt;/a&gt;. &lt;a href="file:///F:/comvcon/www.usb.org"&gt;www.usb.org&lt;/a&gt; is the implementars forum of USB and it responsible for maintaining the USB specification.         This web site also maintains links to various developer resources, a frequently ask questions section etc.&lt;br /&gt;&lt;br /&gt;The USB 2.0 specification is released in year 2000 and subsequently some errata documents are added. USB 1.1 has support for two different speeds of operation namely Low-Speed USB and Full-Speed USB. The USB 2.0 specification added another speed to the specification which is called as High-Speed USB. What this means to a developer is that, when a USB device is developed, it can operate at 3 different data transfer rates depending the device requirement. For exmample, if the USB device developed is lets say a &lt;i&gt;Mouse device&lt;/i&gt;. The Mouse normally does not transfer large quantities of data, also in a second it         may just transmit few bytes of data. Then it can work in &lt;i&gt;Low-Speed USB&lt;/i&gt;. If there another device like let's say a &lt;i&gt;data acquisition system&lt;/i&gt; which need to transmit data at higher rate as compared to Mouse, then         it can use the &lt;i&gt;Full-Speed USB&lt;/i&gt; operation which can do approximately 1 MB/s. If the device is something like &lt;i&gt;disk drive&lt;/i&gt;,then the device may use &lt;i&gt;High-Speed USB&lt;/i&gt; which can do approximate 480 Mb/s.&lt;br /&gt;&lt;br /&gt;So, if we take an anology with RS-232, like how RS-232 supports various baud rates, USB also supports 3 speeds of operation.&lt;br /&gt;&lt;br /&gt;Apart from USB has another feature also, which different from how RS-232 works. It supports 4 types of transfers, namely &lt;i&gt;Control Transfer, Interrupt Transfer, Bulk Transfer and Isochronous Transfers&lt;/i&gt;.         Depending on the application's requirement the USB device developer need to choose the required transfer types.&lt;br /&gt;&lt;br /&gt;In USB each transfer type is mechanism which dectates how and what kind of the data is packed and transmitted over the USB bus.&lt;br /&gt;&lt;br /&gt;        &lt;b&gt;Control Transfer:&lt;/b&gt; It is primarily used during intiling the device or configuring the device. USB devices support plug &amp;amp; play mechanism, which is nothing but auto detection and auto configuration. The USB device transmits certain information about itself as per the specificaiton to the PC to which this device is connected through the mechanism called control transfer.&lt;br /&gt;&lt;br /&gt;       &lt;b&gt;Interrupt Transfer:&lt;/b&gt; This mechanism is used for tranmitting the actual data over the bus. The speciality of this transfer type is, the integraty of data is varified and maintained. Also, the data is transmitted in real time with accuracy. In this transfer type the amount of data that can be transmitted per second is limited. Again tipical applications are those which require integraty and timeliness. Mouse device is a good example which use this transfer.&lt;br /&gt;&lt;br /&gt;       &lt;b&gt;Bulk Transfer:&lt;/b&gt; This mechanism is again used for transmitting the actual data. In this case the timeliness of data is not maintained, but integraty is maintained. So, applications like printers which requires correct data but which can neglect small delays in data arraival can use this transfer. As the name indicates this transfer type can transfer large quantities of data depending the speed of operation.&lt;br /&gt;&lt;br /&gt;       &lt;b&gt;Isochronous Transfer:&lt;/b&gt; This mechanism is again used for transmitting the actual data. In this case timeliness is maintained during data transfer. But, integraty will not checked. So, applications like streaming audio devices, video cameras etc.. can use this tranfer type for real time transfer of the data.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        The following table shows how each transfer type is supported in each speed of operation.         &lt;i&gt;                     &lt;/i&gt;&lt;i&gt;                     &lt;/i&gt;&lt;i&gt;                     &lt;/i&gt;&lt;i&gt;                     &lt;/i&gt;&lt;i&gt;                     &lt;/i&gt;&lt;table border="1"&gt;               &lt;tbody&gt;&lt;tr&gt; &lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;b&gt;Speed of Operation&lt;/b&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt; &lt;/tr&gt;            &lt;tr&gt;&lt;td&gt;&lt;b&gt;Transfer Type&lt;/b&gt;&lt;/td&gt;                  &lt;td&gt;Low Speed&lt;/td&gt;               &lt;td&gt;Full Speed&lt;/td&gt;               &lt;td&gt;High Speed&lt;/td&gt;                               &lt;/tr&gt;            &lt;tr&gt;&lt;td&gt;&lt;b&gt;Control Transfe&lt;/b&gt;&lt;b&gt;r&lt;/b&gt;&lt;/td&gt;                  &lt;td&gt;Supported @ 24 KB/sec&lt;/td&gt;               &lt;td&gt;Supported @ 832 KB/sec&lt;/td&gt;               &lt;td&gt;Supported @ 15,872 KB/sec&lt;/td&gt;                               &lt;/tr&gt;            &lt;tr&gt;&lt;td&gt;&lt;b&gt;Interrupr Transfer&lt;/b&gt;&lt;/td&gt;                  &lt;td&gt;Supported @ 800 bytes/sec&lt;/td&gt;               &lt;td&gt;Supported @ 64 KB/sec&lt;/td&gt;               &lt;td&gt;Supported @ 24,576 KB/sec&lt;/td&gt;                               &lt;/tr&gt;            &lt;tr&gt;&lt;td&gt;&lt;b&gt;Bulk Trans&lt;/b&gt;&lt;b&gt;fer&lt;/b&gt;&lt;/td&gt;                  &lt;td&gt;Not Supported &lt;/td&gt;               &lt;td&gt;Supported @ 1,216 KB/sec&lt;/td&gt;               &lt;td&gt;Supported @ 53,248 KB/sec&lt;/td&gt;                               &lt;/tr&gt;            &lt;tr&gt;&lt;td&gt;&lt;b&gt;Isochronous Transfer&lt;/b&gt;&lt;/td&gt;                  &lt;td&gt;Not Supported &lt;/td&gt;               &lt;td&gt;Supported @ 1,023 KB/sec&lt;/td&gt;               &lt;td&gt;Supported @ 24,576 KB/sec&lt;/td&gt;                               &lt;/tr&gt;           &lt;/tbody&gt;&lt;/table&gt;         &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The above table shows what are the real speeds a device can achieve with a specific speed configuration and with a specific transfer type. But the one thing to be noticed is the specification mentions a much higher speed value for for each speed of operation. And it may look like a discripency. But one important aspect of USB bus is &lt;b&gt;Port expansion&lt;/b&gt;. This means that the same bus is used by multiple devices. In USB terminology these devices are called as &lt;i&gt;Peripherals&lt;/i&gt;.  So, when the specification mentions a speed for a particular speed of operation, it is mentioning the maxmum amount of data that can be transmitted in a specified time by all the device on the bus which are using a specific speed of operation. Again, as we saw the atual speed depends on transfer type also.&lt;br /&gt;&lt;br /&gt;         The USB bus architecture diagram will look something like this.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_HhgNGHF8d1c/SRMS7ZRFV0I/AAAAAAAAAEk/zpjj6p9crPk/s1600-h/usbarchitecture.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 300px; height: 225px;" src="http://4.bp.blogspot.com/_HhgNGHF8d1c/SRMS7ZRFV0I/AAAAAAAAAEk/zpjj6p9crPk/s200/usbarchitecture.jpg" alt="" id="BLOGGER_PHOTO_ID_5265573200930363202" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;       &lt;br /&gt;&lt;br /&gt;        &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In the diagram you might have observed 4 important components.&lt;br /&gt;&lt;br /&gt;        &lt;b&gt;1. Host:&lt;/b&gt; The host is the PC or the device which has the maximum processing power with features to control peripheral buses like USB.&lt;br /&gt;&lt;br /&gt;        &lt;b&gt;2. Host Controller &amp;amp; Root Hub:&lt;/b&gt; The Host controller is the device responsible for controlling the USB bus. And the Root Hub is a HUB device which will/can extend the bus. If you see 2 USB ports on a computer the there is a possibility that only one Root Hub is there. If you see more than 4 USB ports on a computer then there is a possibility that it has 2 Root Hubs and Two Host controllers connected to the Host System.&lt;br /&gt;&lt;br /&gt;        &lt;b&gt;3. Hub&lt;/b&gt;: A device that will extend the bus and provide channels(USB Ports) to which more number of devices can be connected.&lt;br /&gt;&lt;br /&gt;        &lt;b&gt;4. Peripherals&lt;/b&gt;: The actual USB device which will use various transfer types and speed of operation.&lt;br /&gt;&lt;br /&gt;       &lt;br /&gt;&lt;b&gt;The USB protocol is a host controlled protocol. We will see what this means in the up coming articles.&lt;/b&gt;&lt;br /&gt;      &lt;br /&gt;&lt;br /&gt;         So, this article introduced you to USB, what types of speeds available and how the architecture looks like.&lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;  &lt;/td&gt;   &lt;td colspan="1" color="" align="left" valign="top" width="120"&gt;   &lt;br /&gt;     &lt;script type="text/javascript"&gt;&lt;!--                  google_ad_client = "pub-6599861972105872";                  google_ad_width = 120;                  google_ad_height = 60;                  google_ad_format = "120x60_as_rimg";                  google_cpa_choice = "CAAQ2eOZzgEaCD4zuVkdzt_CKI-293M";            //--&gt;&lt;/script&gt;            &lt;script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;            &lt;/script&gt;&lt;script&gt; window.google_render_ad(); &lt;/script&gt;&lt;iframe name="google_ads_frame" src="http://pagead2.googlesyndication.com/cpa/ads?&amp;amp;cpa_choice=CAAQ2eOZzgEaCD4zuVkdzt_CKI-293M&amp;amp;oe=ISO-8859-1client=ca-pub-6599861972105872&amp;amp;dt=1225986564137&amp;amp;lmt=1206720792&amp;amp;format=120x60_as_rimg&amp;amp;output=html&amp;amp;correlator=1225986562306&amp;amp;url=file%3A%2F%2F%2FF%3A%2Fcomvcon%2Fusb%2520basics.html&amp;amp;region=_google_cpa_region_&amp;amp;ea=0&amp;amp;frm=0&amp;amp;ga_vid=2018209496.1225986562&amp;amp;ga_sid=1225986562&amp;amp;ga_hid=1302863283&amp;amp;flash=9.0.124&amp;amp;u_h=800&amp;amp;u_w=1280&amp;amp;u_ah=770&amp;amp;u_aw=1280&amp;amp;u_cd=32&amp;amp;u_tz=330&amp;amp;u_his=1&amp;amp;u_java=true&amp;amp;u_nplug=27&amp;amp;u_nmime=109" marginwidth="0" marginheight="0" vspace="0" hspace="0" allowtransparency="true" frameborder="0" height="60" scrolling="no" width="120"&gt;&lt;/iframe&gt;    &lt;br /&gt;          &lt;script type="text/javascript"&gt;&lt;!--                google_ad_client = "pub-6599861972105872";                google_ad_width = 120;                google_ad_height = 60;                google_ad_format = "120x60_as_rimg";                google_cpa_choice = "CAAQxZqazgEaCMOiwb9yonQWKIHD93M";              //--&gt;&lt;/script&gt;            &lt;script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;            &lt;/script&gt;&lt;script src="http://googleads.g.doubleclick.net/pagead/test_domain.js"&gt;&lt;/script&gt;&lt;script&gt; window.google_render_ad(); &lt;/script&gt;&lt;iframe name="google_ads_frame" src="http://googleads.g.doubleclick.net/cpa/ads?&amp;amp;cpa_choice=CAAQxZqazgEaCMOiwb9yonQWKIHD93M&amp;amp;oe=ISO-8859-1client=ca-pub-6599861972105872&amp;amp;dt=1225986564597&amp;amp;lmt=1206720792&amp;amp;prev_fmts=120x60_as_rimg&amp;amp;format=120x60_as_rimg&amp;amp;output=html&amp;amp;correlator=1225986562306&amp;amp;url=file%3A%2F%2F%2FF%3A%2Fcomvcon%2Fusb%2520basics.html&amp;amp;region=_google_cpa_region_&amp;amp;ea=0&amp;amp;frm=0&amp;amp;ga_vid=2018209496.1225986562&amp;amp;ga_sid=1225986562&amp;amp;ga_hid=1302863283&amp;amp;flash=9.0.124&amp;amp;u_h=800&amp;amp;u_w=1280&amp;amp;u_ah=770&amp;amp;u_aw=1280&amp;amp;u_cd=32&amp;amp;u_tz=330&amp;amp;u_his=1&amp;amp;u_java=true&amp;amp;u_nplug=27&amp;amp;u_nmime=109" marginwidth="0" marginheight="0" vspace="0" hspace="0" allowtransparency="true" frameborder="0" height="60" scrolling="no" width="120"&gt;&lt;/iframe&gt;         &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6069588175912980102-8138505043173705414?l=comvcon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://comvcon.blogspot.com/feeds/8138505043173705414/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6069588175912980102&amp;postID=8138505043173705414' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6069588175912980102/posts/default/8138505043173705414'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6069588175912980102/posts/default/8138505043173705414'/><link rel='alternate' type='text/html' href='http://comvcon.blogspot.com/2008/11/usb-basics-part-i-what-actullay-is-usb.html' title='USB Basics - Part I (What actullay is USB?)'/><author><name>Vidya</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_HhgNGHF8d1c/SRMS7ZRFV0I/AAAAAAAAAEk/zpjj6p9crPk/s72-c/usbarchitecture.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6069588175912980102.post-2401505417164762787</id><published>2008-11-04T15:47:00.000+05:30</published><updated>2008-11-04T15:48:25.064+05:30</updated><title type='text'>Test Post</title><content type='html'>My comvcon domain ceased to exist and somebody else have already registered before I took notice. So I am posting those articles here.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6069588175912980102-2401505417164762787?l=comvcon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://comvcon.blogspot.com/feeds/2401505417164762787/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6069588175912980102&amp;postID=2401505417164762787' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6069588175912980102/posts/default/2401505417164762787'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6069588175912980102/posts/default/2401505417164762787'/><link rel='alternate' type='text/html' href='http://comvcon.blogspot.com/2008/11/test-post.html' title='Test Post'/><author><name>Vidya</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
