Question about Labview

Go To Last Post
42 posts / 0 new
Author
Message
#1
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Hi there,

We need to buy a tool in order to produce any control application for our HW products.

We found that Labview has a good price and provides many feature that meet our needs.

I would like to ask you same things based on your experiense:

1. Using Labview shall we have to buy interface cards from National Instruments or we can access direct to the COM/USB ports ?
2. Is there any other tool that we could see before purchasing our final sellection ?

Regards.

Michael.

User of:
IAR Embedded Workbench C/C++ Compiler
Altium Designer

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I can only answer to question 1: Yes you do get access to at least the COM-ports, I find it a bit fiddly to get working, but that might just be my lack of experience with the software.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Would you not just use a standard language like C++ or C# if it's PC apps that interface to COM ports? What else does LabView bring to the party?

(for those two you can get the MS Visual Express editions for free)

EDIT: Holy Mother of God! Apparently the version of Labview that can create .exe's is £3,799!!

Reminds me of:

(the chances are this will only mean something to UK viewers ;-))

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Personally i love the drag and drop programming, and making a reasonable user friendly GUI is just so quick and easy. I have still to succeed with making any GUI in c++, then again, i`m not very good with programming :P

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

The cost is astronomical, but if you are going to be using it on a very regular basis and can get teh cost/learning curve recouped in short order then go for it.

If you are only going to be needing it once in a while look int using a consultant who owns their own copy. Might be worth it in the long run

Jim

I would rather attempt something great and fail, than attempt nothing and succeed - Fortune Cookie

 

"The critical shortage here is not stuff, but time." - Johan Ekdahl

 

"Step N is required before you can do step N+1!" - ka7ehk

 

"If you want a career with a known path - become an undertaker. Dead people don't sue!" - Kartman

"Why is there a "Highway to Hell" and only a "Stairway to Heaven"? A prediction of the expected traffic load?"  - Lee "theusch"

 

Speak sweetly. It makes your words easier to digest when at a later date you have to eat them ;-)  - Source Unknown

Please Read: Code-of-Conduct

Atmel Studio6.2/AS7, DipTrace, Quartus, MPLAB, RSLogix user

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I found thw Qt from Nokia. This tool is free and you can create executable applications for free.

It is a GUI platform.

Michael.

User of:
IAR Embedded Workbench C/C++ Compiler
Altium Designer

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

QT is just one of many GUI libs for creating cross platform interfaces. Maybe also take a look at wxWidgets.

But I'd start by identifying your favourite development language (C, C++, C#, Java, Python, Perl, ...) then pick a GUI lib to match. Each has a plethora of choices (almost too many in fact making it difficult to sort the wood from the trees)

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Its going M2M and WWW.
Consider Java and NetBeans; use JSON between HW and user's display device (web browser on phone, PDA, nettop, etc.) if one can add that functionality to your HW.
Run small web servers on HW, or, a web server on the router/PC/bridge to concentrate JSON to/from HW.
Some protocols are REST, COAP, Ajax, etc.
NetBeans Platform
I've been a user of a NetBeans Platform, PowerAgent, on a nettop (Intel Atom 1.6GHz, 1GB RAM, 1024x600, 16GB SSD, Windows XP Home SP3).
PowerAgent is responsive; it interfaces with its portable embedded computer via an FTDI USB-to-serial interface (driver installed).

"Dare to be naïve." - Buckminster Fuller

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

First discriminator is: What OS platform are the applications to be run on?

(I.e. if it is Windows only then some recommendations are better, if it is GNU/Linux/Unix the other recommendation might be better. Cross-platform give another set of reasonable options.)

My take: Windoze only - Visual Studio Express ed., and use C# and .Net and Windows Forms. Linux only - perhaps Java, and I prefer the NetBeans IDE. Both these options give you drag'n'drop UI design. Using e.g. serial ports from Java was a bit of a PITA last time I checked - YMMV.

As of January 15, 2018, Site fix-up work has begun! Now do your part and report any bugs or deficiencies here

No guarantees, but if we don't report problems they won't get much of  a chance to be fixed! Details/discussions at link given just above.

 

"Some questions have no answers."[C Baird] "There comes a point where the spoon-feeding has to stop and the independent thinking has to start." [C Lawson] "There are always ways to disagree, without being disagreeable."[E Weddington] "Words represent concepts. Use the wrong words, communicate the wrong concept." [J Morin] "Persistence only goes so far if you set yourself up for failure." [Kartman]

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

USB communication is supported with NI-VISA 3.0 and later on Windows and with NI-VISA 3.2 and later on Macintosh and Linux. For the latest version of NI-VISA please see Drivers and Updates: VISA (linked below). NI-VISA supports instrument class 488.2 devices conformant to the USBTMC spec and non-class devices that do not have a default Windows driver. For more information on controlling a USB device with NI-VISA, please review the Developer Zone tutorial USB Instrument Control Tutorial (linked below).

No generic IEEE 1394 (FireWire) driver is available and no generic USB driver is available for non-Windows platforms, just as no generic PCI or ISA bus driver is available. As with PCI and ISA, you must supply a device-specific driver to LabVIEW or LabWIndows/CVI to communicate. The third-party device vendor should provide a software driver, such as a DLL, that you can call from LabWindows/CVI or LabVIEW using the Call Library Function Node.

Note: In LabVIEW 8.0 or later, refer to the Fundamentals»Calling Code Written in Text-Based Programming Languages book in the LabVIEW Help for more information about using external code in LabVIEW. In LabVIEW 7.1 or earlier, refer to the Using External Code in LabVIEW manual (linked below) for more information about using external code in LabVIEW.

National Instruments IEEE 1394 (FireWire) and USB hardware devices are supported through standard National Instruments driver interfaces such as NI-DAQ.

Note: Although USB contains the word serial, it is not the same serial protocol used in RS-232. Therefore, you cannot use the Non-VISA Serial VIs or functions to interact with a USB device. Any bus protocol, including USB and IEEE 1394 (FireWire), should have a well-defined interface for the user because device manufacturers do not want users to have unrestricted access to memory locations on the bus.

Related Links:
Drivers and Updates: VISA
Developer Zone Tutorial: USB Instrument Control Tutorial
LabVIEW Support: LabVIEW 8.5 Help
Product Manuals: Using External Code in LabVIEW

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Hi guys,

I really didn't know that there are many GUI platforms available. I am an embedded designer and really don't have the time to learn a new tool like .NET for example. This is not because I don't like it, but because I will never have the time to be a professional.

I am working on Windows XP an I am good in C programming. Is there any GUI that I can download for free or any evaluation version. I would just like to see it before using/purchase it.

???

Michael.

User of:
IAR Embedded Workbench C/C++ Compiler
Altium Designer

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Get Visual C++ 2010 express and use the .NET framework. The rewards are much higher that buying a very expensive set of programming macros.

The .NET framework might seem intimidating, but in reality it is so well integrated with the IDE that it basically writes itself. Intellisense will brighten your day many times.

Labview used to be great before .NET was available, because it provided very easy ways to implement complicated algorithms, that were hard to do purely with the old style Win32 API. The .NET Framework does it all nowadays. It's just a huge library of system level objects you can use.

What kind of GUI elements will you need?

PS I also have a decent HID USB wrapper COM DLL I wrote that I could post if you need it.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Here is my .NET USB library. I am not at home right now I do not have the binary, so this is the source in VB.NET. It will compile into a DLL with Visual Basic 2010 Express. It interfaces to an old DLL from Mecanique that is no longer available, but before it went MIA it was free to use and reproduce, so I have attached it here. Add both source files into a project, and add a reference to the project to mcHID.dll.

mcHIDInterface.vb:

Public NotInheritable Class HIDDevice
    Private Const WM_APP As Integer = 32768                  ' API constants.
    Private Const GWL_WNDPROC As Short = -4
    Private Const WM_HID_EVENT As Decimal = WM_APP + 200
    Private Const NOTIFY_PLUGGED As Short = 1
    Private Const NOTIFY_UNPLUGGED As Short = 2
    Private Const NOTIFY_CHANGED As Short = 3
    Private Const NOTIFY_READ As Short = 4

    Private FPrevWinProc As Integer                          ' Some class vars for pointers and handles.
    Private FWinHandle As Integer
    Private hidDevHandle As Integer

    Private BufferOut() As Byte                              ' Buffers.
    Private BufferIn() As Byte

    Public Property hidVendorID As Integer                   ' Device VendorID.
    Public Property hidProductID As Integer                  ' Device ProductID.

    Public ReadOnly Property hidVendorName As String         ' Vendor name.
        Get
            hidVendorName = "                                                                                                                                                                                                                                                                "
            NativeMethods.hidGetVendorName(hidDevHandle, hidVendorName, 255)
            hidVendorName = Trim(hidVendorName)
        End Get
    End Property
    Public ReadOnly Property hidProductName As String        ' Product name.
        Get
            hidProductName = "                                                                                                                                                                                                                                                                "
            NativeMethods.hidGetProductName(hidDevHandle, hidProductName, 255)
            hidProductName = Trim(hidProductName)
        End Get
    End Property
    Public ReadOnly Property hidSerialNumber As String       ' Serial number.
        Get
            hidSerialNumber = "                                                                                                                                                                                                                                                                "
            NativeMethods.hidGetSerialNumber(hidDevHandle, hidSerialNumber, 255)
            hidSerialNumber = Trim(hidSerialNumber)
        End Get
    End Property
    Public ReadOnly Property hidVersion As Integer           ' Device version.
        Get
            hidVersion = NativeMethods.hidGetVersion(hidDevHandle)
        End Get
    End Property
    Public ReadOnly Property hidInputReportLength As Integer ' Input report length.
        Get
            hidInputReportLength = NativeMethods.hidGetInputReportLength(hidDevHandle)
        End Get
    End Property
    Public ReadOnly Property hidOutputReportLength As Integer ' Output report length.
        Get
            hidOutputReportLength = NativeMethods.hidGetOutputReportLength(hidDevHandle)
        End Get
    End Property

    Public Event hidPlugged(ByVal sender As Object, ByVal e As System.EventArgs)           ' Public events to signal
    Public Event hidUnplugged(ByVal sender As Object, ByVal e As System.EventArgs)         ' client application.
    Public Event hidDataReady(ByVal sender As Object, ByVal e As System.EventArgs)
    Public Event hidDataRXError(ByVal sender As Object, ByVal e As System.EventArgs)
    Public Event hidDataSent(ByVal sender As Object, ByVal e As System.EventArgs)
    Public Event hidDataTXError(ByVal sender As Object, ByVal e As System.EventArgs)

    Private Ref_WinProc As New NativeMethods.SubClassProcDelegate(AddressOf WinProc)       ' Pointer to WinProc

    ' Run-time form to intercept window messages.
    Private ControlForm As New System.Windows.Forms.Form With {.Visible = False, .ShowInTaskbar = False}

    Public ReadOnly Property hidBufferIn(ByVal i As Integer) As Byte            ' Input buffer, byte array.
        Get
            Return BufferIn(i)
        End Get
    End Property
    Public Property hidBufferOut(ByVal i As Integer) As Byte                    ' Output buffer, byte array.
        Get
            Return BufferOut(i)
        End Get
        Set(ByVal value As Byte)
            BufferOut(i) = value
        End Set
    End Property

    Public Function SendBuffer() As Boolean                         ' Send the content of the output buffer.
        SendBuffer = NativeMethods.hidWrite(hidDevHandle, BufferOut(0))
        If SendBuffer = False Then
            RaiseEvent hidDataTXError(Me, System.EventArgs.Empty)
            Return False
        Else
            RaiseEvent hidDataSent(Me, System.EventArgs.Empty)
        End If
    End Function

    Private Function ConnectToHID() As Boolean                      ' Hook WinProc to our form for intercepts.
        FWinHandle = ControlForm.Handle.ToInt32
        ConnectToHID = NativeMethods.hidConnect(FWinHandle)
        FPrevWinProc = NativeMethods.DelegateSetWindowLong(FWinHandle, GWL_WNDPROC, Ref_WinProc)
    End Function
    Private Function DisconnectFromHID() As Boolean                 ' Unhook from WinProc.
        DisconnectFromHID = NativeMethods.hidDisconnect
        NativeMethods.SetWindowLong(FWinHandle, GWL_WNDPROC, FPrevWinProc)
    End Function

    ' This is our intercept routine, it filters window messages regarding our device of interest and raise
    ' interrupts for the client app to handle.
    Private Function WinProc(ByVal pHWnd As Integer, ByVal pMsg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer
        If pMsg = WM_HID_EVENT And (pHWnd = ControlForm.Handle.ToInt32) Then
            Select Case wParam
                Case Is = NOTIFY_PLUGGED                            ' A device was connected.
                    If NativeMethods.hidGetVendorID(lParam) = hidVendorID And _
                    NativeMethods.hidGetProductID(lParam) = hidProductID Then
                        hidDevHandle = NativeMethods.hidGetHandle(hidVendorID, hidProductID)
                        RaiseEvent hidPlugged(Me, System.EventArgs.Empty)
                        NativeMethods.hidSetReadNotify(hidDevHandle, True)
                    End If
                Case Is = NOTIFY_UNPLUGGED                          ' A device was disconnected.
                    If lParam = hidDevHandle Then
                        NativeMethods.hidSetReadNotify(lParam, False)
                        RaiseEvent hidUnplugged(Me, System.EventArgs.Empty)
                    End If
                Case Is = NOTIFY_CHANGED
                Case Is = NOTIFY_READ                               ' We received some data from the hooked device.
                    If NativeMethods.hidRead(lParam, BufferIn(0)) Then
                        RaiseEvent hidDataReady(Me, System.EventArgs.Empty)
                    Else
                        RaiseEvent hidDataRXError(Me, System.EventArgs.Empty)
                    End If
            End Select
        End If
        WinProc = NativeMethods.CallWindowProc(FPrevWinProc, pHWnd, pMsg, wParam, lParam)
    End Function

    Public Sub hidPingAllDevices()                                  ' Get info about all the HID devices connected.
        Dim Index As Integer
        Dim oldVID As Integer
        Dim oldPID As Integer
        Dim oldDevHandle As Integer

        For Index = 1 To NativeMethods.hidGetItemCount()
            oldDevHandle = hidDevHandle
            hidDevHandle = NativeMethods.hidGetItem(Index - 1)
            oldVID = hidVendorID
            oldPID = hidProductID
            hidVendorID = NativeMethods.hidGetVendorID(hidDevHandle)
            hidProductID = NativeMethods.hidGetProductID(hidDevHandle)
            RaiseEvent hidPlugged(Me, System.EventArgs.Empty)
            hidVendorID = oldVID
            hidProductID = oldPID
            hidDevHandle = oldDevHandle
        Next Index
    End Sub

    Public Sub hidChangeDevice()                                               ' Call this whenever you need to
        hidDevHandle = NativeMethods.hidGetHandle(hidVendorID, hidProductID)   ' change the VID and PID.
    End Sub

    Public Sub New()                                            ' Constructor, hooks into WinProc and obtain
        MyBase.New()                                            ' an initial device handle.
        ConnectToHID()
        hidChangeDevice()
    End Sub

    Protected Overrides Sub Finalize()                          ' Destructor, unhook from WinProc before terminating.
        DisconnectFromHID()
        MyBase.Finalize()
    End Sub

End Class

NativeMethods.vb:

Friend NotInheritable Class NativeMethods
    Friend Declare Function hidConnect Lib "mcHID.dll" Alias "Connect" (ByVal pHostWin As Integer) As Boolean
    Friend Declare Function hidDisconnect Lib "mcHID.dll" Alias "Disconnect" () As Boolean
    Friend Declare Function hidGetItem Lib "mcHID.dll" Alias "GetItem" (ByVal pIndex As Integer) As Integer
    Friend Declare Function hidGetItemCount Lib "mcHID.dll" Alias "GetItemCount" () As Integer
    Friend Declare Function hidRead Lib "mcHID.dll" Alias "Read" (ByVal pHandle As Integer, ByRef pData As Byte) As Boolean
    Friend Declare Function hidWrite Lib "mcHID.dll" Alias "Write" (ByVal pHandle As Integer, ByRef pData As Byte) As Boolean
    Friend Declare Function hidGetHandle Lib "mcHID.dll" Alias "GetHandle" (ByVal pVendorID As Integer, ByVal pProductID As Integer) As Integer
    Friend Declare Function hidGetVendorID Lib "mcHID.dll" Alias "GetVendorID" (ByVal pHandle As Integer) As Integer
    Friend Declare Function hidGetProductID Lib "mcHID.dll" Alias "GetProductID" (ByVal pHandle As Integer) As Integer
    Friend Declare Function hidGetVersion Lib "mcHID.dll" Alias "GetVersion" (ByVal pHandle As Integer) As Integer
    Friend Declare Function hidGetVendorName Lib "mcHID.dll" Alias "GetVendorName" (ByVal pHandle As Integer, ByVal pText As String, ByVal pLen As Integer) As Integer
    Friend Declare Function hidGetProductName Lib "mcHID.dll" Alias "GetProductName" (ByVal pHandle As Integer, ByVal pText As String, ByVal pLen As Integer) As Integer
    Friend Declare Function hidGetSerialNumber Lib "mcHID.dll" Alias "GetSerialNumber" (ByVal pHandle As Integer, ByVal pText As String, ByVal pLen As Integer) As Integer
    Friend Declare Function hidGetInputReportLength Lib "mcHID.dll" Alias "GetInputReportLength" (ByVal pHandle As Integer) As Integer
    Friend Declare Function hidGetOutputReportLength Lib "mcHID.dll" Alias "GetOutputReportLength" (ByVal pHandle As Integer) As Integer
    Friend Declare Sub hidSetReadNotify Lib "mcHID.dll" Alias "SetReadNotify" (ByVal pHandle As Integer, ByVal pValue As Boolean)
    Friend Declare Function hidIsReadNotifyEnabled Lib "mcHID.dll" Alias "IsReadNotifyEnabled" (ByVal pHandle As Integer) As Boolean
    Friend Declare Function CallWindowProc Lib "user32.dll" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Integer, ByVal hwnd As Integer, ByVal Msg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer
    Friend Declare Function SetWindowLong Lib "user32.dll" Alias "SetWindowLongA" (ByVal hwnd As Integer, ByVal nIndex As Integer, ByVal dwNewLong As Integer) As Integer
    Friend Delegate Function SubClassProcDelegate(ByVal hwnd As Integer, ByVal msg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer
    Friend Declare Function DelegateSetWindowLong Lib "user32.dll" Alias "SetWindowLongA" (ByVal hwnd As Integer, ByVal attr As Integer, ByVal lval As SubClassProcDelegate) As Integer
End Class

Attachment(s): 

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Hello hugoboss,

Thanks for the suggestion and the library also. To be honest I installed 3 times a cracked release of .NET 2008 the last 2 years in order to learn it. From my position is really a huge chaos.

As I said before I am good in C, so I started to work in C++.NET. Impossible for me!!! Then I completely left it.

After a long time I installed .NET again in order to learn C#.NET. The problem is not the language. The problem is that I can't find what I want to do. Tooooooooooo many things.

The 3rd (and final time for me) was just 2 months ago. I said that I would try a new start in VB.NET (I was using VB 2006). I had the same problem again. Too many things.

I finally said to myself that maybe this job is not for me. I am an embedded designer/programmer. Maybe .NET is for PC programmers which is another job.

We can't be professionals in everything.

Michael.

User of:
IAR Embedded Workbench C/C++ Compiler
Altium Designer

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Michael, as with you, I have also tried using the .NET platform many times without success. But on friday i installed the C# express edition and I got very basic communication running in 15minutes.

At this point, I think it would probably be just as quick to implement simple control in C# as in labview.(Yes, that is a change of opinion from earlier this thread.)

Basically, just drag and drop whatever you want in the UI(buttons, textboxes etc), double click on them and write the code for the handlers. Yes, it can most likely be made much more complicated, but for simple control, that should be enough.

I have tried the new versions of VB too, but i find them useless. And besides, the C# environment is just as easy and more familiar for us C programmers.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

How complicated is the project anyways? I can put together a basic skeleton for you with your controls in VB.net if you want, it`s to the point that it would only take a couple of minutes.

The trick with .NET is don`t try to learn it all at once. Just write normal C++ code and see where it needs modification. The only time you actually need to go in the framework is if you need a very specific functionality, like reading and writing XML, etc... F1 on any keyword or object will pull up MSDN online.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I like RealBasic for GUI + I/O. Plus, you get database access, tcp/ip framework, Mac, Win, and Linux compile targets, and a whole lot more. Price is not CHEEEP, but it is modest enough that hobby programmers can afford it. Much like VB , but cross-platform, and a very active (and helpful) user community world wide, including several active users in Greece.

Jim

 

Until Black Lives Matter, we do not have "All Lives Matter"!

 

 

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

TBH Jim, I was right there with you right up until 2005. I loved RealBasic then, but only because it was an actually object oriented language, as opposed to the then current VB6. Plus the cross platform was fun, but Michael said it was for WinXP anyways. Since the framework came out 7 years ago right now it is pretty complete and works generally very well. Buying RealBasic now for me at least would be a poor choice, considering VS Express is free, and you use the OS`s actual framework instead of a generally slower third party.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

If the problem is simply to find the objects you need, almost everything you need is sorted in a tree starting at the System namespace.

If you need an object database-related, for example you use System.Data and declare a Datatable object. If you need an enumeration object of any kind you go in System.Collections.Generic, for List(of T) or Queue(of T) objects, etc..

It's all pretty intuitive really...

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Actually, I agree, pretty much,j with hugoboss. IF the target is WinXP, only, forever, then VS Express is hard to beat.

However, RealBasic now DOES use the OS's actual framework, in each case. Speeds are comparable to other tools.

Jim

 

Until Black Lives Matter, we do not have "All Lives Matter"!

 

 

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

ka7ehk wrote:
However, RealBasic now DOES use the OS's actual framework, in each case. Speeds are comparable to other tools.

Oh ok, back then RealBasic had it's own set of objects, and the OS framework was not accessible directly. The compiler "translated" its own objects to GTK on Linux for example.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Thank you guys.

Also regards to you hugoboss for your very kind help.

Guys I just started learning the Qt (from Nokia) enviroment. Let's see if I will have any success there.

The platform is free.

http://qt.nokia.com/

Regards

Michael.

User of:
IAR Embedded Workbench C/C++ Compiler
Altium Designer

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Just for some alternatives this page looks very useful:

http://www.atai.org/guitool/

It highlights which ones are "good" and interesting to see that it has QT as "best" :-)

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Nice.

This is a good feedback.

Thank you.

Michael.

User of:
IAR Embedded Workbench C/C++ Compiler
Altium Designer

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Good luck with QT, please update us on your toughts about it when you start getting used to it :)

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

After some days of learning Qt I could say the best for it.

For example watch some videos here

http://www.youtube.com/watch?v=6...

Michael.

User of:
IAR Embedded Workbench C/C++ Compiler
Altium Designer

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Holy cow, I've used QT quite a lot but never knew it was supposed to be pronounced "cute"!! I always refer to "queue-tea".

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Thanks for the 2 hour diversion guys. Qt looks very interesting ...

Cheers,

Ross

Ross McKenzie ValuSoft Melbourne Australia

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I use VB6, it is a very loose programming language, not very fast, no very efficient but is easy to work with for simple stuff.

I have never used labview but I have built an app with matlab, if labview is anything like matlab, it is super slow and bloated but easy to work with.

There is also scilab which is free, I am not sure if it can do standalone apps, but if it can't just get the customer to install scilab and run a native scilab executable.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Scilab, Matlab, and labview all have specialized applications in the mathematics and science fields. They are very good at their specialties, but I don't see their use for a regular front-end. For example you might want to use Matlab to design a front end that needs to do extensive data analysis. The question is why would you use such a tool if you do not need its specific niche features?

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I can recommand a realy nice book for learning C#

Quote:
Andrew Stellman, Jennifer Greene - Head First C#, 2nd Edition 2010

It's amazing and easy to learn and yet one of the most powerful languages!

I love Digital
and you who involved in it!

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Quote:

yet one of the most powerful languages!

Define "powerful language"?

How is it any more "powerful" than C++ or Java or any other HLL you care to pick?

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

There is often confusion re C#, counting in the .NET framework. It is really a separate entity, but adds the power to both C# and VB.NET. I'll leave it to someone else to determine if it's somewhat uni-platform (i.e. Windows) (Yes, I know about Mono...), is a strength or a weakness.

With the advent of LINQ some interesting language elements where introduced in C#, e.g. lambda-expressions.

As of January 15, 2018, Site fix-up work has begun! Now do your part and report any bugs or deficiencies here

No guarantees, but if we don't report problems they won't get much of  a chance to be fixed! Details/discussions at link given just above.

 

"Some questions have no answers."[C Baird] "There comes a point where the spoon-feeding has to stop and the independent thinking has to start." [C Lawson] "There are always ways to disagree, without being disagreeable."[E Weddington] "Words represent concepts. Use the wrong words, communicate the wrong concept." [J Morin] "Persistence only goes so far if you set yourself up for failure." [Kartman]

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I like C#.

Lambda expressions are great to make one-liners that modify GUI elements from another thread, instead of defining and implementing a namespace polluting delegate for each little thing that you queue to a worker thread.

After all, doing real work inside the GUI thread is a big no no.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

What people often don't realize is that EVERYTHING in the .Net framework applies to ALL .Net languages. There are some specifics, like multi-line lambdas being only for C#, but in general, not one or the other language is better. All the code is translated to MSIL the same way, and it's all interpreted by the CLR the same way. (Yes, interpreted... That's another thing people don't realize, .Net code is not compiled, it's interpreted... Even C#.)

Everything you can do in C# you can do almost the same in VB.Net...

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Quote:

Lambda expressions are great to make one-liners that modify GUI elements from another thread

If you care to share I'd sure read a post by you on this in a separate thread in the OT forum!

As of January 15, 2018, Site fix-up work has begun! Now do your part and report any bugs or deficiencies here

No guarantees, but if we don't report problems they won't get much of  a chance to be fixed! Details/discussions at link given just above.

 

"Some questions have no answers."[C Baird] "There comes a point where the spoon-feeding has to stop and the independent thinking has to start." [C Lawson] "There are always ways to disagree, without being disagreeable."[E Weddington] "Words represent concepts. Use the wrong words, communicate the wrong concept." [J Morin] "Persistence only goes so far if you set yourself up for failure." [Kartman]

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Quote:

.Net code is not compiled, it's interpreted...

Can we moderate this just a wee bit? E.g. http://msdn.microsoft.com/en-us/... .

As of January 15, 2018, Site fix-up work has begun! Now do your part and report any bugs or deficiencies here

No guarantees, but if we don't report problems they won't get much of  a chance to be fixed! Details/discussions at link given just above.

 

"Some questions have no answers."[C Baird] "There comes a point where the spoon-feeding has to stop and the independent thinking has to start." [C Lawson] "There are always ways to disagree, without being disagreeable."[E Weddington] "Words represent concepts. Use the wrong words, communicate the wrong concept." [J Morin] "Persistence only goes so far if you set yourself up for failure." [Kartman]

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

JohanEkdahl wrote:
Quote:

.Net code is not compiled, it's interpreted...

Can we moderate this just a wee bit? E.g. http://msdn.microsoft.com/en-us/... .

Well ok, it's not interpreted in the classic meaning of the term. It's translated into MSIL, which is a virtual machine instruction set, which then gets compiled to machine code at run-time. It has all the disadvantages of classic interpreted code though...

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

As to how Lambda expressions work, they are essentially unnamed functions you can define directly in an expression. For example:

Dim Multiplier As Integer = 2
Dim Factor As Integer = 4
Dim Product = Function(Multiplier, Factor) Multiplier * Factor

Personally I generally avoid using them as it makes code harder to read and keep track of. They are great for single-use functions though...

EDIT: Re-reading the docs, it seems they added multi-line lambdas to VB.net now as well...

Last Edited: Sun. Feb 12, 2012 - 05:49 PM
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Quote:
It has all the disadvantages of classic interpreted code though...

This is not fan-mail, but we should be fair and technically correct.

Subsequent calls to something needs no JIT but executes as native code - reusing the result from the initial JIT.

And you also have the option to compile to native once and for all at installation. If so it executes as native code every time. The price is "JIT at install-time".

As of January 15, 2018, Site fix-up work has begun! Now do your part and report any bugs or deficiencies here

No guarantees, but if we don't report problems they won't get much of  a chance to be fixed! Details/discussions at link given just above.

 

"Some questions have no answers."[C Baird] "There comes a point where the spoon-feeding has to stop and the independent thinking has to start." [C Lawson] "There are always ways to disagree, without being disagreeable."[E Weddington] "Words represent concepts. Use the wrong words, communicate the wrong concept." [J Morin] "Persistence only goes so far if you set yourself up for failure." [Kartman]

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Quote:

As to how Lambda expressions work

I'm superficially aware of how they work in C# (and in C++ :wink:). I was particularly curious about JayJays use of'em to write "one-liners that modify GUI elements from another thread". Is he just wrapping calls to Control.Invoke?

As I said, it probably should be broken out to a thread of it's own.

As of January 15, 2018, Site fix-up work has begun! Now do your part and report any bugs or deficiencies here

No guarantees, but if we don't report problems they won't get much of  a chance to be fixed! Details/discussions at link given just above.

 

"Some questions have no answers."[C Baird] "There comes a point where the spoon-feeding has to stop and the independent thinking has to start." [C Lawson] "There are always ways to disagree, without being disagreeable."[E Weddington] "Words represent concepts. Use the wrong words, communicate the wrong concept." [J Morin] "Persistence only goes so far if you set yourself up for failure." [Kartman]