Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17


usb c++

Posted on 2008-06-12
Medium Priority
Last Modified: 2013-12-14
can anyone have some ideas about writing and reading on usb ports using visual c++ or C#
Question by:klay8
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
LVL 86

Expert Comment

ID: 21770811
What kind of USB devices are you thinking of? Storage devices can be accessed transparently liek regular hard drives through their drive letter, and other USB devices usually are available via a virtual COM port, see ("Serial library for C++") for more on the latter.
LVL 55

Expert Comment

by:Jaime Olivares
ID: 21771803
It is not common to read usb ports directly, this will require to read the raw packets, not a trivial task.
Usually it is done by reading the underlying driver: serial port, mass storage, video codecs (for cameras), printer driver, human input drivers (for keyboard and mice).
Please specify
LVL 12

Expert Comment

ID: 21772204
In any USB solution there has to be a

- target
- host

Today most PCs support the EHCI on the host side...On the target side you need to identify what type of a device it is.
Is the target device a HID device(USB mouse, keyboard...) or a Mass stporage device(USB Hard Disk) ....

You will anyway need to have some firmware application running on the target USB device depending on the type of device and a correspondng host application running on the Windows host side. The host usually initiates connections...

Usually the class driver/application has to be written by you. Check and let me knwo..
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!


Author Comment

ID: 21774290
i have a usb to serial port device, and i would like to write a code to detect when remove or plug that one..
i can program in visual studio(any language),..
do this make  a diffrence
LVL 55

Expert Comment

by:Jaime Olivares
ID: 21774396
if you want to detect just insertion/extraction, you don't need specific usb programming, just use the Windows Management Instrumentation library (WMI).
Are you working with managed or unmanaged C++?
LVL 55

Accepted Solution

Jaime Olivares earned 2000 total points
ID: 21774436
in C# is quiet easy:

using System.Management;

class SomeClass
        private static ManagementEventWatcher MySerialMonitor;

        public void SomeInitializerMethod()
            MySerialMonitor= new ManagementEventWatcher(@"root\CIMV2", "SELECT * FROM __InstanceOperationEvent WITHIN 1 WHERE TargetInstance ISA 'Win32_USBControllerDevice'");
            MySerialMonitor.EventArrived += new EventArrivedEventHandler(MySerialMonitor_EventArrived);
             // etcetera

        private static void MySerialMonitor_EventArrived(object sender, EventArrivedEventArgs e)
            if (e.NewEvent.ClassPath.ClassName == "__InstanceDeletionEvent")
            {   // this event name can be different
                 // try to discriminate your specific hardware here, there can be other usb devices
                 // Check the 'e' object members carefully

LVL 12

Expert Comment

ID: 21789245
you can write a simple C program to do this. Use the datasheet of your USB to Serial converter to figure out the pins.

There will be vendor provided header files which will tell you which line to set to high or low.

I suggest you use the Keil C compiler to do the same.

Using Visual Studio is an overkill for embedded system programming.
LVL 12

Expert Comment

ID: 21799606
what happened?

Featured Post

Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Article by: SunnyDark
This article's goal is to present you with an easy to use XML wrapper for C++ and also present some interesting techniques that you might use with MS C++. The reason I built this class is to ease the pain of using XML files with C++, since there is…
This article will show you some of the more useful Standard Template Library (STL) algorithms through the use of working examples.  You will learn about how these algorithms fit into the STL architecture, how they work with STL containers, and why t…
THe viewer will learn how to use NetBeans IDE 8.0 for Windows to perform CRUD operations on a MySql database.
The viewer will learn how to clear a vector as well as how to detect empty vectors in C++.

688 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question