USB communications
Hi this is Michele,
I've got a problem with a temperature sensor, called ULAB Datalogger. It comunicates with the PC through the USB port. I do not have any driver-CD to install, so the computer does not see it when I plug it to the USB port. I was trying to use Labview to get the ULAB into communication with the PC but it seems I can't do it. I am doing so, simply by connecting the ULAB datalogger to the USB port of the PC.
Does anyone have any idea how I can make it?
Thanks Michele.
Hi,
I agree with Jim about searching and downloading the device driver from the CMA website. The Coach family software should be the solution you are looking for.
Let me know if you need additional support.
Have a nice day!
Matteo C. - Test Engineer
Similar Messages
-
Communication with unit under test works fine in hypterminal after I downloaded virtual driver from FTDI site.
Never done any USB communication before in LabWindows CVI. What functions can I use in labwindows CVI?Since the device presents itself as a COM port (pretty standard with the FTDI chips) you should be able to use the RS-232 library in CVI. OpenComConfig() will open a connection to the device, ComWrt() will write data to it, and the various ComRd() functions can be used to read the responses back.
-
Why do I get a blue screen using USB communication?
Hello,
My problem is that sometimes I get a blue screen using USB communication. I guess that most of the time the problem is an overflow in memory, so I read all the data that is on the port with which I communicate. I read two ports so there are two similar VIs that are used. There is how I do it:
I also communicate with a logger to acquire 16 channels. I read the information from the logger in two different parts of the program at the same time. Maybe this can cause an issue, but could it cause a blue screen? This is how I do it:
I once had a blue screen after the VI was closed, so there is how I manage to close the communication when I quit:
Do you think there can be any problem coming from one of these parts of my LV project? If not, what else can cause a blue screen in LabVIEW?Langelier wrote:
Hello,
My problem is that sometimes I get a blue screen using USB communication. I guess that most of the time the problem is an overflow in memory, so I read all the data that is on the port with which I communicate. I read two ports so there are two similar VIs that are used. There is how I do it:
Are you using USB to GPIB (doubtful because you are using bytes at port)? But, just inc ase, I had this problem also with USB to GPIB, and it ended up being a driver issue I believe. If you are using USB to GPIB driver that was released with LV2012, search for the latest 2012 driver on NIs site, download it, and use that. See if it fixes your problem
CLA, LabVIEW Versions 2010-2013 -
USB communication AIR desktop and AIR mobile app
Hi! Does somebody know the possibilites of USB communication between and AIR desktop app and an AIR mobile app. I need to send files from an desktop application to the external memory on an mobile device. Is it possible for the desktop app to recognise when the mobile is connected. And is it possible for the mobile app to send commands the desktop app? So I need a two way communication. Anybody who has any ideas?
Really old thread, checking in.
-
LABVIEW programming USB communication with TDS2004B scope
Is there anyone who has already programmed USB communication with Tektronix TDS2004B digital scope in LABVIEW?
If that is the case, could it be possible to send me a basic vi that works?
Thanks.
João.National Instruments has a great library of drivers for various instruments. Most of these include programming examples.
The drivers are searchable at www.ni.com/devzone/idnet
The driver for your instrument is available here.
Now is the right time to use %^<%Y-%m-%dT%H:%M:%S%3uZ>T
If you don't hate time zones, you're not a real programmer.
"You are what you don't automate"
Inplaceness is synonymous with insidiousness -
USB Communication with Cygnal Kit C8051F320-TB
Hi i am using Cygnal development kit C8051F320 - TB.
I want to communicate it with LabVIEW.
Some members in discussion forum earlier have posted queries regarding communication with LabVIEW to USBExpress development kit from Cygnal.
My question is, " is it possible to use same DLL (sif32xusb.dll) supplied with USBExpress with this kit ? " .
If anybody has tried then please send me vi along with firmware.
Thanking you
IshantHello Ishant,
Based in the excerpt from the USBXpress programming guide, you should be able to:
"The Silicon Laboratories USBXpress Development Kit provides a complete host and device software solution for
interfacing Silicon Laboratories C8051F32x microcontrollers to the Universal Serial Bus (USB). No USB protocol or
host device driver expertise is required. Instead, a simple, high-level Application Program Interface (API) for both
the host software and device firmware is used to provide complete USB connectivity."
It looks like aa1982 got it working on this post:
usb communication with silicon lab c8051f320
And both are using the C8051F32x series controllers, you may want to get in contact with the owner of that thread to see if he encountered any problems.
Xaq -
USB Communication in VC++
i need some info related to usb communication. any links or aritcles, plz send email to [email protected]
Hi,
Here is a link to our USB Data Acquisition page on our
website. Browse through this and if you
have any questions, it would be best to contact our Sales department. You can contact them at: (800) 531-5066.
http://www.ni.com/dataacquisition/usb/
Thanks,
Terry S.
Staff Software Engineer
National Instruments -
Hello,
I'm facing some problems with USB communication between a software application build with visual studio and a microcontoller.
Basically the USB communication is working, I send data from the µController to PC by splitting the data up into packets of 64bytes.
1st problem:
Everything works fine with data packets up to a number of 5. If my data is bigger, so that I have to split it up into 6 packages or more, the communication freezes when sending the 6th packet. It seems that the endpoint/streamhandle keeps being busy (regarding
to the debugging of the µC), but I don't know why.
Here is the part where I read the data:
HANDLE OverlappedReadPingEvent;
HANDLE OverlappedWriteEvent;
OVERLAPPED OverlappedReadPing;
OVERLAPPED OverlappedWrite;
OverlappedReadPingEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
OverlappedWriteEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
OverlappedReadPing.Internal = 0;
OverlappedReadPing.InternalHigh = 0;
OverlappedReadPing.Offset = 0;
OverlappedReadPing.OffsetHigh = 0;
OverlappedReadPing.hEvent = OverlappedReadPingEvent;
ReadWriteHandleError = GetReadWriteHandle(pThread->SerialNumber, 2, &(pThread->ReadWriteHandlePing)); // Handle öffnen zum Lesen und Schreiben EP 2
if (!ISUCCEEDED(ReadWriteHandleError))
SetEvent(pThread->Events.IsGenReadError);
ResetEvent(pThread->Events.Resume);
SetEvent(pThread->Events.Break);
SetEvent(pThread->Events.IsAutoStopDevice);
OutLenPing = 0;
if (!ReadFile(pThread->ReadWriteHandlePing, pThread->ReadBufferPing, pThread->PacketLength+1, &OutLenPing, &OverlappedReadPing))
if (GetLastError() == ERROR_IO_PENDING)
if (WaitForSingleObject(OverlappedReadPing.hEvent, pThread->TimeOut) == WAIT_OBJECT_0)
if (!GetOverlappedResult(pThread->ReadWriteHandlePing, &OverlappedReadPing, &OutLenPing, FALSE))
OutLenPing = 0;
else
OutLenPing = 0;
2nd problem:
when using the application with 5 or less data packets, I get an error after a while (about 1:30min) telling me about unkown serial number.
that's the corresponding code:
Error = GererateSerialString(SerialNumber, (PWSTR)SerialString, 17);
if (ISUCCEEDED(Error))
HardwareDeviceInfo = SetupDiGetClassDevs( (LPGUID)&GUID_DEVINTERFACE_MCHPUSB,
NULL,
NULL,
(DIGCF_PRESENT | DIGCF_DEVICEINTERFACE));
if (HardwareDeviceInfo != INVALID_HANDLE_VALUE)
Error = TestInterfaceNumber( (LPGUID)&GUID_DEVINTERFACE_MCHPUSB,
HardwareDeviceInfo,
(PWSTR)SerialString);
if (IFAILED(Error))
// interface not found error
Error = FormatErrorCode(MODUL_NUMBER, 1, 0, L"Interface unbekannt.");
SetupDiDestroyDeviceInfoList(HardwareDeviceInfo);
else
// SetupDiGetClassDevs error
Error = FormatErrorCode(MODUL_NUMBER, 1, 1, L"Hardware-Info nicht ermittelt.");
and
DWORD TestInterfaceNumber( __in LPGUID InterfaceGuid,
__in HDEVINFO HardwareDeviceInfo,
__in PWSTR SerialString)
SP_DEVICE_INTERFACE_DATA DeviceInterfaceData;
SP_DEVINFO_DATA DeviceInfoData;
BOOL Success = true;
DWORD LocalInterfaceNumber = 0;
while(Success != FALSE)
DeviceInterfaceData.cbSize = sizeof(SP_DEVICE_INTERFACE_DATA);
if(!SetupDiEnumDeviceInterfaces( HardwareDeviceInfo,
0,
InterfaceGuid,
LocalInterfaceNumber,
&DeviceInterfaceData))
return FormatErrorCode(MODUL_NUMBER, 2, 0, L"Interfaces nicht ermittelt.");
DeviceInfoData.cbSize = sizeof(SP_DEVINFO_DATA);
if(!SetupDiEnumDeviceInfo( HardwareDeviceInfo,
LocalInterfaceNumber,
&DeviceInfoData))
return FormatErrorCode(MODUL_NUMBER, 2, 1, L"Geräte-Info nicht ermittelt.");
PWSTR DeviceInstanceId = NULL;
DeviceInstanceId = (PWSTR) calloc (MAX_PATH, sizeof(PWSTR));
if(DeviceInstanceId == NULL)
return FormatErrorCode(MODUL_NUMBER, 2, 2, L"Speicherfehler.");
DWORD outSize;
if(!SetupDiGetDeviceInstanceId( HardwareDeviceInfo,
&DeviceInfoData,
(PWSTR)DeviceInstanceId,
MAX_PATH,
&outSize))
free(DeviceInstanceId);
return FormatErrorCode(MODUL_NUMBER, 2, 3, L"Geräteinstanz ID nicht ermittelt.");
PWSTR CompareResult = wcsstr(DeviceInstanceId, SerialString);
if(CompareResult != NULL)
Success = FALSE;
else
LocalInterfaceNumber++;
free(DeviceInstanceId);
return 0;
I marked the lines bold, which are the resulting error information.
Does anybody has any idea what could be the reason of these problems? Or any hint, how I could dig for the problem?
Thanks for your help!
regards, lhHello Ih,
Thank you for your post.
Your issue is out of support range of VS General Question forum which mainly discusses the usage issue of Visual Studio IDE such as
WPF & SL designer, Visual Studio Guidance Automation Toolkit, Developer Documentation and Help System
and Visual Studio Editor.
I am moving your question to the moderator forum ("Where is the forum for..?"). The owner of the forum will direct you to a right forum.
Best regards,
We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
Click
HERE to participate the survey. -
Nugget: 1 of n : GEtting started with USB communication via VISA
<!--
@page { size: 21cm 29.7cm; margin: 2cm }
P { margin-bottom: 0.21cm }
-->
USB
is a serial bus protocol which has very little to do with classic
“serial” communication such as RS-232 or RS-422. Getting to
terms with USB for the first time can be daunting if you don't happen
to have a background in similar protocols.
I
have therefore decided to write a nugget (it's almost more of a blog
to be honest) about my first steps in USB interfacing which were at
times painful and frustrating. I have no background in USB or PCI
(which is apparently somewhat more similar to USB than “classic”
serial)
In
order to get a feel for what exactly USB is, and how it works, the
official USB 2.0 Specification is an essential read. I personally
didn't understand everything in it, but even becoming familiar with
the range of different options helps in understanding USB
communication at a later point. Sometimes it is already of benefit
to know exactly how lost you are..... The (650 page) specification
can be downloaded HERE.
There
are basically four defined modes of communication defined in the USB
2.0 specification:
Control
Transfers
Interrupt
transfers
Bulk
transfer
Isochronous
There
are specific classes of devices defined in order to try to bring some
structure to the huge number of possible devices possible. These
classes include:
Audio
Communications
and CDC Control
HID
(Human Interface Device)
Physical
Image
Printer
Mass
Storage
Hub
CDC-Data
Smart
Card
Content
Security
Video
Personal
Healthcare
Diagnostic
Device
Wireless
Controller
Miscellaneous
Application
Specific
Vendor
Specific
Each
class has requirements on which types of communication must be
supported and also regarding the format of the data exchanged with
the host. Even touching on the surface of these class definitions
would be way beyond this nugget.
We will be taking a relatively
simple example of a HID device: a mouse.
--To be continued--
Message Edited by Intaris on 07-14-2008 11:24 AM
Say hello to my little friend.
RFC 2323 FHE-CompliantNow
that we have the data, we need to find out what it means and what we
can do with it.
By
playing around with the software we have previously created we can
pretty quickly find out what the different data is. The first Byte
is a bit array of the buttons pressed. 0 means no buttons pressed, 1
means button 1 pressed, 2 button two, 3 button 1&2 together and
so on. I don't think an explanation of this is really necessary.....
The
second two bytes are each a value for the relative movement of the
mouse in X and Y directions. Since we have an 8-bit Integer for
this, our range of movement is -127 to 127 with 0 being no movement.
If
we have a mouse with a scroll wheel, chances are that the scroll
wheel movement is reflected in the fourth Byte.
In
order to better understand the data being sent by the mouse we should
look at the specification of the HID class of USB devices. A
document detailing what the HID class comprises is to be found here.
Each device class has pre-defined functions which are used to allow
for a certain level of generalisation between similar devices from
different manufacturers. A mouse will, on most operating systems,
work without a vendor-specific driver albeit without some
functionality. This is because it adheres to the base HID mouse
class.
The
HID mouse class defines the Interrupt packet as follows (All HID mice
must adhere to this format of the first 4 Bytes – further Bytes are
possible, but their correct interpretation is not guaranteed):
Byte
Bits
Description
0
0
Button 1
0
1
Button 2
0
2
Button 3
0
4-7
Device Specific
1
0-7
X-Displacement
2
0-7
Y-Displacement
3+
0-7
Vendor specific
So
we see that without any other information about the device, we can
only assume that we have three buttons (even though they may not be
physically present, or more buttons may actually be present) and an X
and Y displacement value. As to the meaning of any other values in
the data packet, we need further information about the device. The
lack of a standard data entry for a scroll wheel is certainly
something which contributes to the fact that not all scroll wheels
work with the default (non vendor-specific) drivers delivered with
Windows. Or as to why the fourth and fifth buttons of my Logitech
MX518 don't always work with default Linux drivers......
Joysticks,
keyboards, gamepads and a whole host of other devices can be
interfaced with using basically the same code as shown here. The
data being returned by the device is of course different in each
case. Some devices also return multiple reports with an index number
to let the software know which data is currently being reported.
I
hope to return to this topic at a later date to delve deeper into the
depths of the HID specification, but for now it's enough to say that
without more coding (quite a lot more I fear) we must be content in
adapting our code to each specific device on order to be able to
interpret the data.
I
am already working on a second part covering a different transfer
type (Control Transfer). The topic of control transfers is a big one
with a lot of corrollary information which is required to make sense
of it all, so it might take a while......
In the mean time, here's a little program I whipped up using the information shown here......
An example of a little mouse component is here.
Shane.
PS:
A generic mouse driver would be possible using LVOOP, allowing for the
support of multiple models. How would go about this? What would the
base-class look like? How would you interface to the host program?
How would you handle other HID classes (Joysticks, touchscreen panels
and so on)?
PPS:
The code shown here may be useful as an introduction to USB, but can
anyone think of any actual application which can benefit from a
non-system pointing device or keyboard?
Message Edited by Intaris on 07-14-2008 11:34 AM
Say hello to my little friend.
RFC 2323 FHE-Compliant
Attachments:
User Event-driven Mouse Component.zip 89 KB
Little program.zip 44 KB -
2253iX California Power Supply USB Communication Issue FIXED
I figure I would post this in the event someone else runs into the same issue.
When trying to communicate to an 2253iX California three phase power supply through USB using labVIEW, it would always fail in the initalization block, when asking the unit for the model ( *IDN? ). The display on the instrument would display Error -113 "Undefined Header" Turns out the USB Com port driver doesn't work when registered as COM9 or greater. It has to be COM0 through COM8. Uninstalling a device in that range and reassigning the power supply's COM fixed the issue.not surprising...
I have been using California Instruments 5001iX AC source and 3091LD AC load for years and communications (RS-322, GPIB, USB) have always been hit and miss when answering an *IDN? query.
Even the newer series 2 models have these issues, but seemingly only with *IDN? query.
I just put a loop in to query it several times before giving up.
Also I have found Ci's set of IVI vi's are usless crap and have made my own using SCPI that work a lot better.
What really makes me sad is Ci is still far superior than Elgar when it comes to AC power sources. -
USB communication threw VISA stuck
I wrote a simple application with LV 8.5 to a CNT-90 pendulum counter
the communication with the counter is by USB and I use VISA to asstablish communication
my application just send :READ? command in while loop
the problem is that after a few hours the communication stuck the REMOTE label in the counter disappir and can reasstablish commincation
only when I turn off and on the counter
when I'm using another application that written with c++ and the same H.W there is no problem .Guy,
Instead of repairing, you might try downloading the latest VISA driver version and installing it on both computers to see if the problem can be replicated on the development machine too. Also, what version of LabVIEW are you using, and is this the same as the runtime version you have on your deployment machine? Additionally, are you exporting your Measurement & Automation Explorer (MAX) configuration by hand, or are you creating an installer? If you are creating an installer, make sure that the settings are actually transferring properly between machines. A last step might be to try installing LabVIEW on the deployment machine and running the VI to see if the problem follows the program configuration or the specific hardware configuration of the deployment machine.
Sincerely,
Chris G in AE -
I have an equipment that has USB output for several signals including temperature, pressure, etc. When I use the software that comes with the equipment I am able to read all the signals with no problem. However, as a Labview user I would like to make my own vi that reads these signals. How can I define a USB input in LabVIEW? I am not sure how to do this since I have worked quite a bit with serial communications but never with USB.
You can do some USB work with the VISA vi's. From the block diagram , look in All Functions, Instrument I/O, VISA, Visa Advanced, Interface Specific, Visa USB.
Try this document.
http://zone.ni.com/devzone/conceptd.nsf/webmain/6792bab18242082786256dd7006b6416?OpenDocument -
I'm in trouble trying to communicate a raw USB device trough VISA and CVI. I can easily connect and disconnect the device by using viOpen/viClose, but I don't know how to read/write data. Some functions like viWrite return this error: "Unable to start operation because setup is invalid (usually due to attributes being set to an inconsistent state)". Which are this attributes? Neither can use specific USB functions because USB constants seem to be undefined. So I suppose I'm skipping some steps... Any help??
Thank you.Hi Dan,
Thank you for your reply. Finally I've been able to communicate with my USB device, but I still have some troubles with it.
The device at issue has the following structure:
- 1 Bulk-out pipe (no problem with viWrite)
- 1 Interrupt-in pipe that sends data every 0.3 sec aprox
- 1 Interrupt-in pipe that only sends data when the device gets a signal from an infrared receiver
I need to read the two interrupts simultaneously, and at the same time I need the first to be as fast and accurate as possible. I think the best option would be to use callbacks for both interrupts, so that it would only read when data existed. but I have a pair of impediments on the matter:
- When I try to use viInstallHandler it returns me a general protection run-time
error: Unknown source position, thread id 0x00....
- I cannot set default interrupt-in pipe when USB Interrupt Event is already enabled, so it's impossible to read the two pipes at the same time althought I open a different visa session for each one. In this case if I change it before enabling events the setting is applied to both sessions.
Seen the sight I suppose there isn't another way that to convert one of interrupt pipes into bulk.
According to the properties of each one, which do you think that it would be the most optimal change?
On the other hand I'd like to solve the problem with event handlers. Do you know how?
Thanks a lot for your interest. -
I have an application which needs to monitor some button presses of USB devices. People suggested me to use this UsbLibrary.dll to do it. The .NET Constructor Node did recognize this library, but I don't know how I can move forward. My goal is that after I input the manufacturer ID and device ID, then the program will show me the command sent through this specific USB port.
I will also attach this library and hope someone can give some clue.
Thank you in advanc.
Attachments:
usb_hid.zip 263 KBThank you for the response.
I know this subject is beyond LabVIEW scope. I'm trying to figure out how to make it work, but I'm lacking the related knowledge. I just hope some people with the knowledge of the specific library can provide some help. I think this is a good application and many people can use it. -
Usb communication with silicon lab c8051f320
hi
I want to communication with the silicon lab c8051f320 use the usbxpress development kit he provide
there is many example using vc vb,but it did not have any example use labview
for the host (pc), it provide a dll (see the appendix),
I have tried many method, but the labview always crashed when the dll is called
does anybody who have used c8051f320 can give me a advice.
the dll and usbxpress development kit are in the appendix.(the sif320xusb.c is a dll, please change its Postfix from c to dll)
i really need your help
Attachments:
SiF32xUSB.c 64 KB
USBXpress_ProgGuide.pdf 84 KBI investigated this a bit further. SiLabs latest version is version 3.0.3 and if you are using this, LabVIEW may not work properly. After many failed attempts to get this working, I reverted back to version 2.4.2 which I am able to get working in LabVIEW just fine. You cannot download older versions directly from their website however. The primary difference between version 2.4.2 and 3.0.3 is the function prototype. SI_Write and SI_Read v3.0.3 have an additional OVERLAPPED pointer parameter that you may have to add to the library call. However, I found this out after I reverted back to 2.4.2 and haven't attempted again to make 3.0.3 work.
Maybe you are looking for
-
How to open a jsp page inside a portlet directly ,Cannot find FacesContext
Hi Thank you for reading my post. I have a portlet (a jsf portlet build by JSC) , now i need to open a window that will show some information , i managed to open the pop-up and pass some parameters to popup but right now , i do not know what is my js
-
10Bit monitor colors - how can I be sure it really works?
My monitor and my graphics card supposedly support 10Bit per color channel. I also set the option in the preferences dialogue (I think it's called 30Bit there). That should give me 1024 instead of 256 color intensities per channel. So I made 2 dark g
-
Mail Won't Quit, and Keeps Reloading Old Mail from the Server
I recently had an apparent laptop battery failure while in Mail (while on battery). The machine abruptly shut down with no warning with about 55% power still available. It did this subsequently at random power levels. But, it always worked on the lin
-
Two Line entry in RG23 C part 1
Dear Experts , I am making an asset po , with acct assignment A & asset code using a material code. After MIGO, I made J2I5 & J2I6 , after checking the RG23C part 1 , I see two entry in the RG23C part 1 register , one in quantity received & other in
-
My podcast was removed from iTunes.
I rewrote my podcast description and without thinking I put in a swear word. I'm assuming that's why my podcast was removed. Now when I try to resubmit my feed it says that it's already been submitted. I just changed my podcast's name around 16:00