Components

cancel
Showing results for 
Search instead for 
Did you mean: 

Touch Panel Reference Design Libraries

Please provide feedback, comments, and questions on the following reference designs in this thread.

 

This content has been deprecated and is no longer available.

 

 

 
authored by
Christian L, CLA
Systems Engineering Manager - Automotive and Transportation
NI - Austin, TX


  
0 Kudos
Message 1 of 20
(12,775 Views)

Wow, this is really great work. Thank you so much for that library. It came just in time for our projects.

 

I immeditately tried it on LV 8.5.1 on a x86 third party Touch Panel (Syslogic) running win ce5.0 and it works phantastic. 

 

Now that we have this great features available some questions come to my mind:

Is this library also running on ARM and did you try it on LV 8.6?

If I got it right your library does not require something like a function RegSave.exe like it was published in http://digital.ni.com/public.nsf/allkb/03EBFA9BE4718CEE8625722F0009C396

to safe the settings. But it requires a reboot. Although the helper executables of above link provide a reboot it does not work on my x86 target. It would help very much to be able to reboot even third party Touch Panels with such a reboot call. How can that be done?

 

Thank you again for this really great library.

Franz

0 Kudos
Message 2 of 20
(12,695 Views)

Hi Franz,

 

Glad you found it useful.  I have tested it on LabVIEW 8.6, but have only tested on NI's touch panels.  Since it uses standard Windows CE API calls that are pretty constant across CE versions, it should work on most hardware as long as it has a full implementation of CE.

 

As for programatically rebooting, I believe you can do it with the KernelIOControl function, but I haven't actually written a LabVIEW routine to do so.  It's good feedback to know that you need it though, I'll put it on my list of things to do in the future, although I cannot give an estimate on how long it will take me to get to it.

 

Thanks for the feedback!

Ryan King

NI Systems Engineer

Message Edited by ryank on 11-04-2008 05:52 PM
Message Edited by ryank on 11-04-2008 05:53 PM
Message Edited by ryank on 11-04-2008 05:54 PM
0 Kudos
Message 3 of 20
(12,681 Views)

Thank you for providing this functionality!

 

Currently (as happens all-too-often), I am designing code without the hardware.  In this case, the code is a UI and the  target will be a TPC-2012, once we get one in house.  I have been developing a LV project with UI pages inside the a NI TPC-2012 Device target, but I need to keep at least one vi in My Computer target  (otherwise I am asked to compile the code to the TPC target, which we don't have!).  This has worked fine up till now.

 

However the Windows Manipulation vi's throw up an error dialog at runtime "Supported only on PDAs".  Is this due to the inline C code? More impotantly, is there anyway to emulate their functionality on my development PC while we wait for the hardware?

 

Thank you.

0 Kudos
Message 4 of 20
(12,643 Views)

Unfortunately, there is not a way to emulate the inline C node on Windows targets.  I'm hoping at some point they will implement it for Windows targets, since it is much easier for doing this sort of thing than the CLF nodes are, but it's currently a new feature and is supported only on PDAs, touch panels, and embedded targets.

 

I can think of a couple of possible solutions:

1.  Make the same calls using Call Library Function nodes.  This should work on both Windows and the Touch Panel, but it's going to be a lot of work.

2.  Use a conditional disable around the inline C nodes and perform similar operations.  In Windows, most of the functions are available through VI server.  This has the drawback that you won't really be testing the code, but will at least allow you to test the rest of your code.

3.  Look into setting up an emulator for the hardware.  I've never done this with a touch panel, but I've done it with PDAs before.  It's usually a pain to get it all set up, but if you find a good emulator it's the most accurate way to test code.

Regards,

Ryan King

NI Systems Engineer

Message 5 of 20
(12,638 Views)

I found the Window Manipulation library useful for my TPC-2106 application - thank you very much. However, the Hide/ Show Taskbar VIs didn't work until I debugged and modified the line:

 

if(!(hwnd = FindWindow(_T("HHTaskBar"), _T(""))))               -          the original was:            if(!(hwnd = FindWindow(_T("HHTaskBar"), "")))

 

It's also a shame that after hiding the Taskbar I have to mess with all my HMI "pages" (20 off, add Maximize VI window). The same inconvenience applies to Hide Mouse Cursor.

 

 

Regards

Boyko Bejaniyski

Message 6 of 20
(12,540 Views)

Thanks for the feedback Boyco,

 

The _T, is interesting.  I haven't tested on a 2106, my 2012 worked without specifying a wide character for empty strings, but you are correct that they really should be wide.  I'll make an update to the library.

 

I was a little confused about the second part of your post.  The Hide Taskbar VI should automatically Maximize the window if you pass it the name of your VI, and the Hide Mouse Cursor shouldn't require maximizing the window.

 

Regards,

Ryan King

Systems Engineer

National Instruments

0 Kudos
Message 7 of 20
(12,531 Views)

Dear Ryan

 

To clarify the second part of my message: Once you hide the task bar in the first window, which of course maximizes this first window of the application (in my case an HMI with "pages" and HNE), you have to maximize every other "page" window, otherwise they don't fill the space of the missing task bar. I probably had to explain also: Prior to discovering your new libraries, I was hiding the taskbar by setting its properties accordingly.

I didn't mean that hiding the mouse cursor needs maximizing the windows - it's labour-intensive to put it in every window, same as with the maximizing for the taskbar.

 

Regards

Boyko

0 Kudos
Message 8 of 20
(12,511 Views)

Ahh, now I understand.  As far as maximizing the windows, you should be able to maximize all open windows by calling the VI in a for loop with the Window names.  Of course, if you are opening and closing windows, you'll still need to have a way to handle that.  As you mention, an alternate way to hide the taskbar is just to modify its settings in the registry.  You can do that programmatically using the registry access library that is also covered in this thread, I think I even included an example with the correct key names.  The disadvantage of that aproach is that you generally have to reboot for the registry settings to take effect.  As for the mouse, it's a window specific setting, so I haven't found a way to get around running the hide mouse cursor VI on each window.

 

Regards,

Ryan King

Systems Engineer

National Instruments

0 Kudos
Message 9 of 20
(12,505 Views)

Thanks, Ryan

 

Indeed in my HMI applications I close each old page before opening the next. I may be better off with the registry settings for the task bar, it's a good option to do it programmatically and not rely on production engineers to do the settings for each unit.

 

Regards

Boyko Bejaniyski

0 Kudos
Message 10 of 20
(12,498 Views)