Shop OBEX P1 Docs P2 Docs Learn Events
Propeller Applications (.net 2.0? etc.) - Cross-Platform Test Fest Time! - Page 3 — Parallax Forums

Propeller Applications (.net 2.0? etc.) - Cross-Platform Test Fest Time!

13

Comments

  • CounterRotatingPropsCounterRotatingProps Posts: 1,132
    edited 2009-09-23 16:35
    Hey Steve,

    RE: PyQt license... reviewing some of the docs, I came across this:
    http://qt.nokia.com/products/licensing/licensing

    License Comparison Chart

    attachment.php?attachmentid=73895

    [noparse][[/noparse]My underlining]

    So, if you only *use* the library·and don't change the QT *source* itself, then you can keep your IP... (unless, of course, the use is so complicated that you want to keep that as IP ?)

    Or am I misunderstanding this?

    RE wxWidgets --- you got me curious about them again... looks like they've come along way since I used them last. PERL support too [noparse]:)[/noparse])

    - H


    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    780 x 175 - 8K
  • simonlsimonl Posts: 866
    edited 2009-09-23 17:36
    @ariba: Finally got a copy of OSX 10.4.5 running, and loaded a copy of the latest PureBASIC, but when I try to compile I get "[noparse][[/noparse]COMPILER] Line 26: Warning: Deprecated function 'CreateGadgetList()' used." and "Assembler error!".

    Probably something I'm doing wrong, but thought you might like to know.

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    Cheers,
    Simon

    www.norfolkhelicopterclub.com

    Announcement: To cut costs in the current economic climate, we have switched-off the light at the end of the tunnel.
  • jazzedjazzed Posts: 11,803
    edited 2009-09-23 18:39
    @Simon, Does the Java program I provided run on your OS X ?

    @Howard, That's how I interpret it mostly.

    The fine line seems to be:
    If you use only the library form of Qt (.so .dll), you keep your IP sources if you choose.
    If you compile the libraries (.o .a) with your application, you must distribute your IP.

    The wxWidgets "Exception" (wxWindows for legal purposes) specifically allows you to compile
    the libraries with your application without requiring you go release your IP sources.

    Usually, you can charge a fee for any application that uses GPL or LGPL as long as you follow the rules.
    I guess PyQt has some exception.

    BTW: In the Microsoft C# or C++ EULA, there is a line that seems to restrict .net to Microsoft O/S,
    platforms, or technologies. It is part of the "I Agree" install terms. I wonder what it means exactly.
    Can't find an online copy. Does it mean, you can't distribute your program for use on Linux?

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    --Steve

    Propeller Tools
  • CounterRotatingPropsCounterRotatingProps Posts: 1,132
    edited 2009-09-23 18:51
    > In the Microsoft C# or C++ EULA, there is a line that seems to restrict .net to Microsoft O/S,
    > ... I wonder what it means exactly... Does it mean, you can't distribute your program for use on Linux?

    It really means "you can do what ever you want - until you make enough money to be interesting enough to us, or to compete enough against us; and we can simply sue you if we don't like your hairstyle."

    LOL --- well, I suppose as long as you don't try to rewrite .Net stuff directly, then you wouldn't be the target - the folks who've attempt .Net on other OS'es might end up having a bad hair day.

    BTW, are you still interested in the PyQt approach?

    - H

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
  • jazzedjazzed Posts: 11,803
    edited 2009-09-23 19:12
    Only if you have copious spare time.... I would like to see how some PyQt GUI would look and function and how easy it would be for users. I was going to use the built-in Tkinter stuff to do it since I wouldn't have to download some other "this that and the other thing" component. I've run simple Tkinter "frame" scripts, but seems to be a lot like building Java GUI without the Netbeans IDE GUI maker ... tedious, very tedious.

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    --Steve

    Propeller Tools
  • CounterRotatingPropsCounterRotatingProps Posts: 1,132
    edited 2009-09-23 21:23
    Yes Tk seems·like·a PITA when I've had to use it before.· From below, it seems like wxWidgets may be the smarter choice ...

    Just as I stumbled across a (Py)Qt·example that does exactly what you asked for, I came across this too:

    " PyQt, unlike Qt, is not available under the LGPL " - ouch.

    OK, for the sake of completeness...

    For the recent version of PyQt, you'll need Python 3.1 @:
    http://www.python.org/download/releases/3.1/
    Latest is:
    http://www.python.org/download/releases/3.1.1/
    It might also work on Python 3.0, but I didn't test it.

    (I've not yet come across an Win based machine that also included Python out of the box - too bad actually).
    So obviously, you'd have to require it.

    For Dev, get PyQt4 from the bottom of the page @:
    http://www.riverbankcomputing.com/software/pyqt/download

    Assuming you install using defaults, the example will end up here:
    C:\Program Files\Python31\Lib\site-packages\PyQt4\examples\designer\calculatorform
    I've not studied what minimum libs you'd need for distro since the licensing issue may trump.

    The sample code is attached.

    I'm assuming you've overcome the machine failure ... Have you made any progress with wxWidgets?· It would be nice to learn what you've found out.

    - H

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔


    Post Edited (CounterRotatingProps) : 9/23/2009 9:30:52 PM GMT
  • heaterheater Posts: 3,370
    edited 2009-09-23 21:33
    CounterRotatingProps: " PyQt, unlike Qt, is not available under the LGPL " - ouch.

    Fortunately Nokia is working on that little problem: www.pyside.org/

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    For me, the past is not over yet.
  • CounterRotatingPropsCounterRotatingProps Posts: 1,132
    edited 2009-09-23 21:57
    Thanks Heater - interesting - looks pretty new - cool.

    Here's another link that we all might want to look at:

    http://wiki.wxwidgets.org/WxWidgets_Compared_To_Other_Toolkits

    Even includes "why you shouldn't use Wx" --- fair and balanced GUIism? :-P

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
  • jazzedjazzed Posts: 11,803
    edited 2009-09-23 22:17
    Thanks Howard. I'll have to check it out later.

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    --Steve

    Propeller Tools
  • CounterRotatingPropsCounterRotatingProps Posts: 1,132
    edited 2009-09-23 23:29
    No problem ...

    Hey, since this is sort of cross language as well as cross platform [noparse]:)[/noparse] I was looking today too at WxWidgets for PERL ...

    I prefer "Strawberry Perl" over ActivePerl because it works better for me with CPAN...

    [noparse][[/noparse]EDIT - ahhh the old DLL version mismatch ... let's see if I can make this work...]

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔


    Post Edited (CounterRotatingProps) : 9/24/2009 12:05:27 AM GMT
  • BradCBradC Posts: 2,601
    edited 2009-09-24 00:19
    jazzed said...
    @Simon, Does the Java program I provided run on your OS X ?

    @Howard, That's how I interpret it mostly.

    The fine line seems to be:
    If you use only the library form of Qt (.so .dll), you keep your IP sources if you choose.
    If you compile the libraries (.o .a) with your application, you must distribute your IP.

    If you statically link your code with any LGPL library that does not have a static link exception you can comply by supplying your .o files and instructions on how to re-link them with a different version of the library at the users discretion. This complies with the letter of the license. You don't need to distribute your source.

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    lt's not particularly silly, is it?
  • jazzedjazzed Posts: 11,803
    edited 2009-09-24 04:43
    @BradC, that makes sense at a glance.

    @Howard, I was able to get the GUI running after installing Python31 and PyQt on my laptop (about 34MB total).
    My desktop is still down, but I was able to get my files. I'm running from my laptop now ....
    I have dropped hints now about a Quadcore PC smile.gif She fired back with hints about a new couch wink.gif

    I'll start pulling some things together with wxWidgets and C++ for Windows and Ubuntu/Gnome starting tomorrow.
    I don't have a Mac, so I won't be making that. I'll share my source with anyone who wants to do the Mac version.

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    --Steve

    Propeller Tools
  • Phil Pilgrim (PhiPi)Phil Pilgrim (PhiPi) Posts: 23,514
    edited 2009-09-28 00:13
    Here's my entry (Perl):

    use strict;
    use Tk;
    
    #perl2exe_include Tk::Spinbox;
    #perl2exe_include "utf8_heavy.pl";
    #perl2exe_include "unicore/lib/SpacePer.pl";
    #perl2exe_include "unicore/To/Lower.pl";
    #perl2exe_include "unicore/To/Upper.pl";
    #perl2exe_include "unicore/To/Fold.pl";
    #perl2exe_include "unicore/lib/Digit.pl";
    #perl2exe_include "unicore/lib/Word.pl";
    #perl2exe_include "Encode/Unicode.pm";
    
    my $mw = Tk::MainWindow->new(-title => 'TestFest Entry');
    my (@x, $sum);
    
    foreach (0, 1) {
      $mw->Spinbox(
        -from => 0,
        -to => 100,
        -width => 3,
        -textvariable => \$x[noparse][[/noparse]$_],
        -command => \&Add_em_up
      )->pack(-side => 'left', -padx => 4);
    
      $mw->Label(-text => ('+', '=')[noparse][[/noparse]$_])->pack(-side => 'left', -padx => 4, -pady => 20);
    }
    
    $mw->Label(
      -background => 'WHITE',
      -relief => 'sunken',
      -border => 2,
      -textvariable => \$sum,
      -width => 3,
    )->pack(-side => 'left', -padx => 4);
    
    Add_em_up();
    MainLoop();
    
    sub Add_em_up {
      $sum = sprintf('%3.1d', $x[noparse][[/noparse]0] + $x)
    }
      
    
    


    The "perl2exe" stuff is required only for bundling into an omnibus .exe that includes the entire Perl interpreter. For this program, that .exe was 1.9MB and too big to post, even after zipping. Here's what the output looks like in Windows:

    attachment.php?attachmentid=64046

    I use the free ActivePerl from www.activestate.com for development on Windows. Perl is almost always included with Linux and OS/X. I'll add screenshots from those later.
    __________________

    Later...

    Here's the same , unmodified program running under X11 on OS/X (ver. 10.3/PowerPC):

    attachment.php?attachmentid=64053

    (Perl runs natively under OS/X; but the Tk package does not, having only been ported to X-windows under X11.)

    As to Linux, my Ubuntu Feisty Fawn doesn't have Tk installed. To install it from CPAN requires some X-windows dev files that have also not been installed, and the apt-get repository for Feisty seems to be offline already. So that test won't get done until I can update my Linux box to a more recent version. (What are we up to now, Moronic Moose?)
    __________________

    Later still...

    I remembered I had an ancient version of Mandrake Linux (9.1) running on an equally ancient Thinkpad laptop. So I fired it up and tried the program. It choked because Tk::Spinbox wasn't included with the Tk version that was installed. So back to CPAN for a complete new Tk installation. Tried it — again with no modification. It worked:

    attachment.php?attachmentid=64073

    -Phil

    Post Edited (Phil Pilgrim (PhiPi)) : 9/29/2009 6:31:17 AM GMT
    166 x 86 - 2K
    173 x 82 - 3K
    181 x 87 - 3K
  • jazzedjazzed Posts: 11,803
    edited 2009-09-28 01:11
    Amazing that you don't like C [noparse]:)[/noparse] I recognize those Tk thingy's. Have you tried wxPerl by chance?

    Can you put the executable package on a server so that we can test the program?
    User experience comparison will be difficult using Perl and CPAN. Have you tried PAR?

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    --Steve

    Propeller Tools
  • Phil Pilgrim (PhiPi)Phil Pilgrim (PhiPi) Posts: 23,514
    edited 2009-09-28 01:16
    I couldn't get PAR to work. 'Never tried wxPerl, though. I'll upload the .exe to a server later. 'Gotta social obligation to get to right now.

    -Phil

    Update: The .exe (testfest.zip) is now available here: www.phipi.com/propeller

    Post Edited (Phil Pilgrim (PhiPi)) : 9/28/2009 5:47:15 AM GMT
  • Phil Pilgrim (PhiPi)Phil Pilgrim (PhiPi) Posts: 23,514
    edited 2009-09-28 07:56
    I've just now posted the OS/X output in my earlier post on page 3 of this thread.

    -P.
  • BradCBradC Posts: 2,601
    edited 2009-09-28 08:51
    Phil Pilgrim (PhiPi) said...
    Here's my entry (Perl):

    As to Linux, my Ubuntu Feisty Fawn doesn't have Tk installed. To install it from CPAN requires some X-windows dev files that have also not been installed, and the apt-get repository for Feisty seems to be offline already. So that test won't get done until I can update my Linux box to a more recent version. (What are we up to now, Moronic Moose?)

    I tend to stick to the LTS releases on my development systems so I only have to upgrade every 2 years or so. That way it's also supported long term and you don't get issues of repositories going off line quite so quickly. I stuck with 6.06 until 8.04 was a couple of months old and starting to mature. It solves some of the issues you get with early adopters [noparse]:)[/noparse]

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    lt's not particularly silly, is it?
  • Phil Pilgrim (PhiPi)Phil Pilgrim (PhiPi) Posts: 23,514
    edited 2009-09-29 06:32
    'Got the Linux version running on an old laptop I'd nearly forgotten about. Results are shown in my original post on page 3.

    -Phil
  • jazzedjazzed Posts: 11,803
    edited 2009-09-29 06:47
    Phil I can run your example on my PC after installing ActivePerl and getting TK using PPM. Did not try it on my linux box yet.

    I tried using perl2exe, but ran into an unresolvable dependency with "unicore" ... ???
    Also tried to get PP and PAR running, but I can't build PP or find a windoze binary.
    I'm just a little too disheartened to keep trying I guess as sharing here has recently become less rewarding.
  • Phil Pilgrim (PhiPi)Phil Pilgrim (PhiPi) Posts: 23,514
    edited 2009-09-29 07:48
    Steve,

    It may be that the newest version of perl2exe has resolved some issues with Unicode and that all but the first include in my program are no longer necessary. Try it without them and see. If you get weird characters like I do, the includes are still needed. I have no idea what they do exactly; they're just some boilerplate I found on the web to solve a problem.

    There are some issues installing Perl stuff that rquires compiling from C code (like PAR) on Windows when you're using ActivePerl. It has to do with make, nmake, or somesuch, being incompatible with the version used by Activestate. My memory on this is pretty haziy. I just remember throwing in the towel and sticking with ppm and perl2exe. Perl2exe is a commercial product, and it's always worked well for me. One could use Perl under Cygwin, I suppose, but that's no better than .NET, IMO — possibly worse.

    Even though Perl is a "mere scripting language", I've found it to be fast, scalable, and robust enough for large projects. The Scribbler robot GUI, for example, is written entirely in Perl/Tk and compiled with perl2exe.

    -Phil
  • BradCBradC Posts: 2,601
    edited 2009-09-29 14:05
    jazzed said...

    I'm just a little too disheartened to keep trying I guess as sharing here has recently become less rewarding.

    That's just sad.

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    lt's not particularly silly, is it?
  • jazzedjazzed Posts: 11,803
    edited 2009-09-29 17:59
    @Phil,

    I deleted the "unicore" includes and was able to build and run the app with perl2exe and perl-5.10.0 on Windows. Do you use the "pro" version of perl2exe?

    I was also able to get the script running on ubuntu hardy heron by installing perl-tk (not via cpan) via: sudo apt-get install perl-tk ... I had to remove "use strict" for it to work (the unicore stuff was not in the file).

    Considering the amount of work required for all this, I see no real advantage in using Perl over Java or other development methods given here. Still, I will attempt to do something useful with it. I have never considered using a serial port with perl. Do you have any tasty links that might help me on such a journey?
  • Phil Pilgrim (PhiPi)Phil Pilgrim (PhiPi) Posts: 23,514
    edited 2009-09-29 18:43
    Steve,

    I guess it's whatever you're used to. I chose Perl mainly for the language's expressiveness and depth of support via the modules in CPAN. I use the pro version of perl2exe, since it allows the -GUI option, which eliminates the annoying DOS box in Windows-only apps.

    Hmm, Perl must've gotten stricter in the latest version! What kind of error was solved by removing the use strict? It's always a good idea to include this pragma, since it forces adherence to good programming practices and eliminates a lot of bugs in the process.

    For serial I/O on Windows, I use the Win32::SerialPort module. Yeah, I know: that's where portability ends, unfortunately. Here's the typical startup code I use to initialize it for the Propeller. This gets copied from one program to another:

    my $result = `"$Init{compiler}" /ID`;
    if ($result =~ m/EVT:505[noparse][[/noparse]^\n\r]+(COM\d+)/i) {
      my $portname = "\\\\.\\" . $1;
      if ($Port = new Win32::SerialPort($portname)
        and $Port->baudrate(9600)
        and $Port->parity('none')
        and $Port->databits(8)
        and $Port->stopbits(2)
        and $Port->handshake('none')
        and $Port->buffers(4096,4096)
        and $Port->binary(1)
        and $Port->datatype('raw')
        and $Port->dtr_active('N')
        and $Port->write_settings)
      {
    
    
    


    The hash value $Init{compiler} is preloaded with the path and filename of propellent.exe. Invoking it (via the backstroke) with the /ID argument yields a usable com port name if a Prop is connected. (You have to prepend the \\.\ for ports above COM9 to be accessible.) Then it's off to the races.

    For Linux serial I/O, you can use Device::SerialPort, which emulates the Win32::SerialPort functions (but not the port names).

    -Phil

    Addendum: I nearly forgot. There's an issue with not closing the serial port gracefully before exiting your program. You can read about it here: www.perlmonks.org/?node_id=442706. (To add some context: "Dr. Mu" is me. "Anonymous" Bill is Bill Birthisel, the author of Win32::SerialPort.) PerlMonks is a great forum for Perl issues, BTW.

    Post Edited (Phil Pilgrim (PhiPi)) : 9/29/2009 7:08:54 PM GMT
  • jazzedjazzed Posts: 11,803
    edited 2009-09-29 19:04
    Phil Pilgrim (PhiPi) said...
    What kind of error was solved by removing the use strict?
    With "use strict", the compiler complained about the line $sum = ... in the add_em_up event method and the my (@x, $sum);
    Don't remember the details exactly and I'm away from the ubuntu box.

    What is the highest safe baud rate to use with the serial port? I noticed the eeprom program used 19.2K.

    Thanks
  • Phil Pilgrim (PhiPi)Phil Pilgrim (PhiPi) Posts: 23,514
    edited 2009-09-29 19:11
    Steve,

    Oh cripes! That must mean that each my declaration has to be on its own line now.

    I've used 115,200 baud with Perl in Windows. No problem.

    -Phil
  • jazzedjazzed Posts: 11,803
    edited 2009-10-08 18:44
    I've been searching for a one size fits all solution ... that is one source code base that
    works on all platforms rather than multiple code base variations for each platform.

    The following table summarizes the results so far:

    VM/Platform     .net    Java    Perl    Python  Wine
    
    GUI Operation:
    
    Windows         OK      OK      OK      OK      OK
    Linux           OK      OK      OK      OK      OK
    Mac OS/X        ?       ?       ?       ?       ?
    Mac OS/X-X11    ?       ?       OK*     ?       ?
    
    Serial Port:
    
    Windows         OK      OK      OK      OK      OK
    CygWin          ?       ?       ?       ?       Win32 OK
    Linux           Fails   Fails   OK*     ?       OK
    Mac OS          ?       ?       ?       ?       ?
    
    *According to Phil
    
    .net assumes linux running mono
    Java assumes JVM and RXTX installed
    Python on Windows tested as source interpreted
    Perl GUI on Linux tested as source interpreted
    Perl on Windows also packaged executable
    Wine on Linux running Win32 API programs
    
    Mac OS ? I don't have a Mac and need input.
    
    



    So far, the GUI VM technologies work fine, but serial ports results (high performance or
    otherwise) are very disappointing with .net and Java.

    The only serial port bright point so far for me at least is running a Win32 program on Wine.
    The Win32 version of spud worked perfectly on Wine. Of course Wine is a 60MB download,
    so that is unreasonable for non-broadband users.

    Frustration? Yea ... there is no magic solution [noparse]:)[/noparse]

    To create a viable widely deployable application product will require more work or capital
    than I'm willing to put forth at this time, so unless there is a great return on effort
    opportunity, I won't bother. Supporting 3 different source code bases/platforms in possibly
    as many languages is completely unreasonable, writing Win32 only programs is restrictive
    and Wine is probably no better for most users than java, etc... anyway, and I don't have a
    Mac or any plan to buy one.

    Conclusions?

    I'll distribute whatever program I develop that suits my needs, in the language I like, on the
    platform of my choice, on the schedule I can keep, and forget the rest. Less stress [noparse]:)[/noparse]

    Post Edited (jazzed) : 10/8/2009 8:58:45 PM GMT
  • Phil Pilgrim (PhiPi)Phil Pilgrim (PhiPi) Posts: 23,514
    edited 2009-10-08 19:32
    1. Under Serial Port:Linux:Perl, you can add an OK. 'Been there; done that.

    2. Mac OS/X requires two rows: native OS/X and OS/X+X11.

    3. Under GUI:OS/X+X11:Perl, you can add an OK (using Perl/Tk).

    4. Windows could also use two rows: native Windows and Windows+Cygwin. (Cygwin is a UNIX-like shell for Windows.)

    5. Also "interpreted operation" in Perl is actually quite fast, since it's precompiled into bytecodes.

    -Phil
  • HannoHanno Posts: 1,130
    edited 2009-10-08 19:52
    Thanks Jazzed for putting this together...
    Looking at the business side of cross-platform development is very sobering:
    For limited markets where the number of Windows customers is in the low thousands, Linux/Mac customers will be in the low hundreds. If you profit $20/item * 100 additional customers, that's $2k. Probably won't pay the bills. Thankfully, emulation and virtual machines are getting better all the time, so hopefully soon people's choice of platform won't limit them from using software built for other platforms.
    Hanno

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    Download a free trial of ViewPort- the premier visual debugger for the Propeller
    Includes full debugger, simulated instruments, fuzzy logic, and OpenCV for computer vision. Now a Parallax Product!
  • jazzedjazzed Posts: 11,803
    edited 2009-10-08 21:10
    @Phil,
    Thanks for Perl input. Interpreted was a bad term; what I meant was, I had source code that ran with the interpreter and not an executable.

    @Hanno,
    It's pretty clear that return on sweat equity could be higher if the audience was bigger (possible?). Until the extra effort is justified, .net is just fine.

    The problem I have with writing tools for people who use Unix/Linux is that the users are often resourceful enough to not really need the tools [noparse]:)[/noparse]
  • Phil Pilgrim (PhiPi)Phil Pilgrim (PhiPi) Posts: 23,514
    edited 2009-10-08 22:39
    jazzed said...
    ...what I meant was, I had source code that ran with the interpreter and not an executable.
    Well, truth be known, even the so-called .exe file is interpreted! The interpreter is just bundled in with the .exe, which is what makes perl2exe files so freaking big.

    -Phil
Sign In or Register to comment.