U6 Support Homepage
Starting June 2010, we have eliminated CDs and most (if not all) paperwork from our packaging. Now, the U6 simply has a sticker on the box that directs you to this page (/support/u6).
The following quickstart is for Windows, so here are some useful links for Mac & Linux users: Exodriver, LabJackPython, LJSocket, and LJFuse.
U6 Quickstart (Windows)
1. Download and install the drivers/software for Windows.
2. Connect the U6 to the computer or hub. The status LED should blink at power up, and then stay solid on. If Windows asks about installing new hardware, just accept the defaults.
3. Run LJControlPanel which was installed during step #1 above. Click "Find Devices" and you should get an entry for the U6. Click on the connection (probably "USB - 1"), and the right side of the screen will display basic information about the device. Click "Test" to bring up the test panel where you can read all inputs and write all outputs. This test panel is a great tool to use often, and lets you check out basic hardware operation before trying more complex software. Make sure you close LJControlPanel before trying other software.
Some basic tests to do in the test panel with 1 jumper wire:
- Connect a jumper wire from DAC0 (digital to analog converter 0) to AIN0 (analog input 0). Use the control in the test panel to change DAC0, and you should read back the voltage on AIN0. If you want to connect some other voltage to measure, you likely connect positive to AIN0 and negative to GND, but see Section 2.6.3 for more info.
- The FIO0 Direction should be set to input (direction checkbox clear) by default. The State box will be checked, indicating that it is reading high due to the internal pull-up. Connect one end of the jumper wire to GND, hold the other end inside the FIO0 terminal, and the State box should clear.
- In the Timers and Counters area, click Config and enable Counter 0. Pin Offset is 0, and no timers are enabled, so Counter0 will appear on FIO0. Tap the other end of the GND wire inside the FIO0 terminal, and each tap will cause lots (~100) of counts on the Counter0 indicator.
- Click Config again, enable Timer0, and set its mode to PWM16. This will result in a 732 Hz square wave out of FIO0, while Counter0 is pushed up to FIO1. Connect the jumper wire from FIO0 to FIO1 to see Counter0 increment by about 732 counts per second.
- Move the jumper wire to connect FIO2 to FIO3. Set FIO2 Direction to output. Toggle the state of FIO2 using the State box and FIO3 should read back the same state.
- Connect the jumper wire from FIO2 to AIN0. Toggle the state of FIO2 and AIN0 should read about 0 and 3.3 volts.
4. Refer to the U6 User's Guide.
Moving forward from here ...
UD Series Software Options:
- Sample Applications: All free. LJControlPanel (part of the normal Windows installation) has a test panel where you can view all inputs and manually control all outputs. LJLogUD collects analog input data in command/response mode (generally 100 Hz or slower), displays it on screen, and writes it to file. LJStreamUD collects analog input data in stream mode (generally 10 Hz or faster), displays it on screen, and writes it to file. Both applications are free.
- Programming: All free. If you know any language we probably support it. This includes C, C++, C#, Delphi, Java, LabVIEW, LabWindows/CVI, MATLAB, Python, and Visual Basic (VB6/VB.NET). Start on our UD Series Programming page.
- DAQFactory: Free and paid versions. DAQFactory is measurement and automation software from Azeotech, that allows non-programmers to make custom applications. Start on our DAQFactory page.
Getting The Latest Driver/Software/Firmware:
If you are having problems or doing something cutting edge, you should make sure you have the very latest of everything:
- Note your current version numbers. The main splash screen of LJControlPanel tells you your UD driver version number, and if you find and click on a particular device you can see its firmware version number. LJControlPanel and LJSelfUpgrade version numbers are in the title bar at the top of each program.
- First check for a newer UD driver DLL.
- Then check for a newer LJControlPanel and LJSelfUpgrade.
- Then run LJSelfUpgrade and check for newer firmware (check the "beta" sub-folder).
Getting Support:
- If you have a question that you think should be covered in the documentation, try going to where you think it should be and post a comment. Go to the U6 User's Guide, and at the top or bottom of any page click "Add new comment".
- Other great options are our forum or email.
Search
Shopping Cart
Testimonials
-
Thanks for your detailed attention to this [...] I'll probably wind up with six or eight LabJacks and various accessories [...] The high level of service confirms that I made a good choice a year ago.
—Jim, USA


Comments
#1
I'm unclear as to the definition of LJ_chALL_CHANNELS...
Does this
refer to ALL 16 hardware channels??
Or to ALL Channels designated earlier
with
AddRequest (lngHandle, LJ_ioADD_STREAM_CHANNEL, 2, 0, 0, 0);
??
Thanks again for your support.
RobHill
#2
LJ_chALL_CHANNELS is used with LJ_ioGET_STREAM_DATA. It refers to all channels that you specify when using LJ_ioADD_STREAM_CHANNEL. Thus, if you add 2 channels, say AIN0 and AIN3, then LJ_chALL_CHANNELS would return data for both of them. You can request just data from individual channels, but by far the most common option is to get all data back using this method.
#3
In following examples from the Guide, in STream Mode with the eGet(... embedded in a
loop:
eGet(lngHandle, LJ_ioGET_STREAM_DATA, LJ_chALL_CHANNELS, &numScans, array[0]);
returns lngErrorcode = 1001 which is undefined in the
Guide... and
returns numScans = -999
at other times, I've received
error 25 "FLASH LOCKED".......... This
confuses me.
I'm unclear as to
the last argument in the eGet(...... array).... I've
sent the first
element of a large array and assumed the driver kept track
and assigned data
accordingly . Should I update this element with each
successive call to
eGet(... ??. I've also tried defining the array a size
larger than that
calculated in the example.
#4
1001 is an unknown error, which typically means some exception was thrown inside the driver. The most common cause of this is a memory error of some sort, for instance the array being passed is not passed properly, or not allocated to be large enough to hold all the data being placed into it. -999 is a value that is returned when there is an error of some sort so you know there is an error, it's just a check to ensure that the user is aware that something went wrong.
I'm not sure what would cause the error 25, but if it is some memory error causing the 1001, then that could just be a result of that error. It's best to figure out that one first, as the other will likely go away once it's fixed.
For the rest of your question, it depends on your code/language/etc. I believe we have an email from you. I will respond to that with some more information to gather that can help us track it down for you.
#5
In following examples from the User's Guide with C++ code
on executing:
GetFirstResult
(lngHandle, NULL, 0, &dblValue, 0, 0); //( I substituted the NULL for
the zero used in the Guide)
I encounter an error:
"Unhandled error
exception in LJTest.exe(LABJACKUD.DLL):0x c0000005: Access Violation
elsewhere:
GetResult ( lngHandle, LJ_ioGET_AIN, Channel,
&dblValue ); // this works OK, returns correct value
Can you explain what causes the "Access Violation" error? Is it due to an uninitialized pointer?
#6
Access Violation typically refers to either a pointer that is uninitialized, or a variable that is passed improperly. In this case we would need to see the rest of the code and how things are being defined, what request, etc. For GetFirstResult the best option is usually to pass in variables that can hold the data for each of the parameters so you can check what request IOType/Channel/etc was being used, as well as get all the possible data out of it. This is useful in case you use the code somewhere else or the request you think you are getting isn't the one you get first.
The function is defined as: GetFirstResult(LJ_HANDLE Handle, long *pIOType, long *pChannel, double *pValue, long *px1, double *px2)