Welcome to Laser Pointer Forums - discuss green laser pointers, blue laser pointers, and all types of lasers

Buy Site Supporter Role (remove some ads) | LPF Donations

Links below open in new window

FrozenGate by Avery

Laserbee raw output now visible in OSX environment






Actually I was trying to modify the applet that Trevor released using Oxygen for MacOSX, but no use. The program made a mess of it.
Anyone know a decent visual editor of Java based apps.

I edited the .plist, and got antialiasing working. That's as far as I could get.
 
My hope, in the beginning was that an app could be made to help people running
OSX, Linux ...
etc see and have the same abilities as those people running the original application (win32).

It actually assists "JBauer" laserbee products!

I agree..... As I've already stated previously...

I (J.BAUER Electronics) have no qualms about ANYONE working
and producing an Open Source data logging Software for the
LaserBee LPM products to work on MACs or Linux platforms...
I will even point our customers to any MAC or Linux solution...


But I (J.BAUER Electronics) do have an objection to anyone
blatantly competing with our Full featured LaserBee Windows
Eagle Eye™ Data Logging Software that is supplied FREE to our
LaserBee LPM customers.

In case it is not evident.... We take our product branding seriously...

@ Trevor... I'm sure you could work on a Kenometer or Radiant
Electronics software project since you've already worked hand in
hand with those sellers...

We would prefer that our products not be associated in any project
that associates our LaserBee products with any LPM competitor at this
time.


Jerry

You can contact us at any time on our Website: J.BAUER Electronics
 
Last edited:
I agree..... As I've already stated previously...

I (J.BAUER Electronics) have no qualms about ANYONE working
and producing an Open Source data logging Software for the
LaserBee LPM products to work on MACs or Linux platforms...
I will even point our customers to any MAC or Linux solution...


But I (J.BAUER Electronics) do have an objection to anyone
blatantly competing with our Full featured LaserBee Windows
Eagle Eye™ Data Logging Software that is supplied FREE to our
LaserBee LPM customers.

In case it is not evident.... We take our product branding seriously...

@ Trevor... I'm sure you could work on a Kenometer or Radiant
Electronics software project since you've already worked hand in
hand with those sellers...

We would prefer that our products not be associated in any project
that associates our LaserBee products with any LPM competitor at this
time.


Jerry


So that I am clear as well,
what do you suggest (Trevor) do with the current OSX program? Change it's name or delete the project entirely? Is Peregrine too close to Eagle-eye as it associates the branding with a an aggressive Raptor?
Birds aside, not to be peckish...
 
Is this not any different than say Microsoft Office for Windows vs Open Office?

I wonder if this new software will work on my Coherent LabMAX-TOP? True it too comes with free software, which by the way is a very expensive sceintific software package that you can buy on the open market. But still another choice in software to run is a Win, Win regardless of what brand of Meter one has purchased.

I couldn't see why Coherent for example would say it would hurt their branding, because they still would be charging the same price for their line of Meters regardless if you choice to use the included software package or not; just for grins I just emailed them this exact question since I am a registered customer of theirs.

If this works with my Coherent Meter, then I'd have a software solution for OSX too, using the same software/GUI accross both platforms :)

That would be like Bill Gates saying you are ruining his branding by running Open Office on Microsoft's trademarked Windows.

One common piece of software that runs in a couple of different enviroments is a good thing, and even if there was already one, having another choice is a good thing. In Windows we have numerous choices for example from email programs, word processing etc. The same thing goes on in the Unix and OSX world too.

Keep up the good work :beer:
 
Is this not any different than say Microsoft Office for Windows vs Open Office?

I wonder if this new software will work on my Coherent LabMAX-TOP? True it too comes with free software, which by the way is a very expensive sceintific software package that you can buy on the open market. But still another choice in software to run is a Win, Win regardless of what brand of Meter one has purchased.

I couldn't see why Coherent for example would say it would hurt their branding, because they still would be charging the same price for their line of Meters regardless if you choice to use the included software package or not; just for grins I just emailed them this exact question since I am a registered customer of theirs.

If this works with my Coherent Meter, then I'd have a software solution for OSX too, using the same software/GUI accross both platforms :)

That would be like Bill Gates saying you are ruining his branding by running Open Office on Microsoft's trademarked Windows.

One common piece of software that runs in a couple of different enviroments is a good thing, and even if there was already one, having another choice is a good thing. In Windows we have numerous choices for example from email programs, word processing etc. The same thing goes on in the Unix and OSX world too.

Keep up the good work :beer:

I see the logic in your thinking. I was kind of scratching my head over the whole competition thing , especially with OpenOffice and Microsoft thing. :beer:
 
Again it's not really competition as this allows customers to utilize the hardware across more platforms. If anything this will increase sales of the hardware because it can be used in more situations now.

"No, that is not correct. Does Linux compete with Windows? "Open source" does not imply anything about a lack of competition, only a different model for software information rights. Some open source software can even be used to poison other software licenses with their own licensing restrictions (such as the GPL)."

I don't think that situation makes for a good analogy. This is more like Apple releasing a new iPod, and only releasing drivers for MacOS.

A customer decides to write custom driver to allow the iPod to work on Windows and Linux. Apple may not be happy that a customer is "messing" with their stuff but the situation is likely to result in increased sales rather than hurting them.
 
Last edited:
Isn't it wonderful we live in a place where we are free to create alternatives and compete in the free market?
 
I contacted our business lawyer yesterday to set up
a meeting for Monday morning to discuss a few legal
issues including this one..

I'll post back here after the meeting...


Jerry

You can contact us at any time on our Website: J.BAUER Electronics
 
Last edited:
I tried playing with the core of the Peregrine systems resolution.
I upped the core work screen size to 1280x1000.
What would be nice is to add an auto sizing as I noticed the window resize option is blanked out in peregrine.
Copy the following. Code attached.

I am also trying to figure out .pdf and .txt file exporting as well.

Is there no way of visually editing this kind of document?

@Jerry "I contacted our business lawyer yesterday to set up
a meeting for Monday morning to discuss a few legal
issues including this one..

I'll post back here after the meeting...


Jerry"

Jerry, what do you hope to accomplish by trying to go to a lawyer?
I think tomorrow I'll ring up an expert on intellectual property rights and see what they
recommend. Jerry your software, EagleView belongs to your company but this OSX and Win32
software development will be also for other meters not just yours. Universal LPM.
WE fully expect this will be so.
 
Last edited:
Was this programmed on a 32 bit machine?

I can't seem to compile the code....

If I could compile I can edit it for you Seoul_lasers.
 
nope. It's coded on a mac in Processing.

This was part of the core, window size.

The .pdf export eludes me a bit.
-----------------------------------

Code:
import processing.serial.*;

Serial port;        // The serial port

static final int PORT           = 0; // Which port in the list
static final int WIDTH          = 1280;
static final int HEIGHT         = 1000;
static final int HEIGHT2        = 10;
static final int MAX_VALUE      = 2000; // Max value 
static final int DIGITS         = 4; // Digits for each field

int x = 0;
boolean on = false; // Variable for alternating colors as graph draws

int field0 = 0;
int field1 = 0;
int phase = 0;



void setup() 
{
    size(WIDTH, HEIGHT + HEIGHT2);
    println(Serial.list());
    port = new Serial(this, Serial.list()[PORT], 9600);
    background(0);
    println("begin");
}

void draw()
{
    while (port.available() > 0)
    {
        int value = port.readChar();

        // State machine to synchronize the data frames:
        switch (phase)
        {
        case 0:
            // First field.  Collect and parse numbers until a comma is found:
            if (value == ',') // A comma, ASCII = 0x2C
            {
                phase = 1;
            }
            else if ((value >= 48) && (value < 58)) // 0-9
            {
                field0 *= 10;
                field0 += (value - 48); // Remove ASCII offset
            } else {
                // Something else.  Restart the synchronization.
                field0 = 0;
                field1 = 0;
                phase = 0;
            }
            break;
        case 1:
            // Second field. Collect and parse numbers until a CR or LF is
            // found:
            if ((value == 0xD) || (value == 0xA)) // CR or LF
            {
                phase = 2;
            }
            else if ((value >= 48) && (value < 58)) // 0-9
            {
                field1 *= 10;
                field1 += (value - 48); // Remove ASCII offset
            } else {
                // Something else.  Restart the synchronization.
                field1 = 0;
                field1 = 0;
                phase = 0;
            }
        case 2:
            // Draw our graph:
            float fValue = field0; // Floating point version of value
            float h = map(fValue, 0, MAX_VALUE-1, 0, HEIGHT-1);
            stroke(0,0,0);
            line(x, 0, x, HEIGHT-1);
            if (on)
            {
                stroke(127,34,255);
            } else {
                stroke(255,128,0);
            }
            line(x, HEIGHT, x, HEIGHT - h);
            DrawBottom();

            phase = 0;
            field0 = 0;
            field1 = 0;
            break;
        }
    }
}

void DrawBottom()
{
    if (on)
    {
        stroke(128,128,128);
    } else {
        stroke(64,64,64);
    }
   
    line(x, HEIGHT, x, HEIGHT + HEIGHT2);

    if (++x > WIDTH)
    {
        x = 0;
        on = !on;
    }
}
 
Last edited:
Here is the basic .pdf capture

Code:
import processing.pdf.*;

size(1280, 1000);

beginRecord(PDF, "line.pdf"); 

background(255);
stroke(0, 20);
strokeWeight(20.0);
line(200, 0, 400, height);

endRecord();
 
I figured out the problem... my ports were screwed up. I had to reinstall the RXTX.dll files so it knows how to handle serial data.

Is this what you're looking for Seoul_lasers

Code:
import processing.serial.*;

Serial port;        // The serial port

static final int PORT           = 0; // Which port in the list
static final int HEIGHT2        = 10;
static final int MAX_VALUE      = 2000; // Max value 
static final int DIGITS         = 4; // Digits for each field

int x = 0;
boolean on = false; // Variable for alternating colors as graph draws

int field0 = 0;
int field1 = 0;
int phase = 0;



void setup() 
{
    size(1280, 1000 + HEIGHT2);
    frame.setResizable(true);
    println(Serial.list());
    port = new Serial(this, Serial.list()[PORT], 9600);
    background(0);
    println("begin");
}

void draw()
{
    while (port.available() > 0)
    {
        int value = port.readChar();

        // State machine to synchronize the data frames:
        switch (phase)
        {
        case 0:
            // First field.  Collect and parse numbers until a comma is found:
            if (value == ',') // A comma, ASCII = 0x2C
            {
                phase = 1;
            }
            else if ((value >= 48) && (value < 58)) // 0-9
            {
                field0 *= 10;
                field0 += (value - 48); // Remove ASCII offset
            } else {
                // Something else.  Restart the synchronization.
                field0 = 0;
                field1 = 0;
                phase = 0;
            }
            break;
        case 1:
            // Second field. Collect and parse numbers until a CR or LF is
            // found:
            if ((value == 0xD) || (value == 0xA)) // CR or LF
            {
                phase = 2;
            }
            else if ((value >= 48) && (value < 58)) // 0-9
            {
                field1 *= 10;
                field1 += (value - 48); // Remove ASCII offset
            } else {
                // Something else.  Restart the synchronization.
                field1 = 0;
                field1 = 0;
                phase = 0;
            }
        case 2:
            // Draw our graph:
            float fValue = field0; // Floating point version of value
            float h = map(fValue, 0, MAX_VALUE-1, 0, height-1);
            stroke(0,0,0);
            line(x, 0, x, height-1);
            if (on)
            {
                stroke(127,34,255);
            } else {
                stroke(255,128,0);
            }
            line(x, height, x, height - h);
            DrawBottom();

            phase = 0;
            field0 = 0;
            field1 = 0;
            break;
        }
    }
}

void DrawBottom()
{
    if (on)
    {
        stroke(128,128,128);
    } else {
        stroke(64,64,64);
    }
   
    line(x, height, x, height + HEIGHT2);

    if (++x > width)
    {
        x = 0;
        on = !on;
    }
}

Working on the export file now... gimme a sec..

EDIT: added the feature to output to .csv file. That can be opened up via an excel file and graphed.

Code:
import processing.serial.*;
PrintWriter output;

Serial port;        // The serial port

static final int PORT           = 0; // Which port in the list
static final int HEIGHT2        = 10;
static final int MAX_VALUE      = 2000; // Max value 
static final int DIGITS         = 4; // Digits for each field

int x = 0;
boolean on = false; // Variable for alternating colors as graph draws

int field0 = 0;
int field1 = 0;
int phase = 0;


void setup() 
{
    size(1280, 1000 + HEIGHT2);
    frame.setResizable(true);
    println(Serial.list());
    port = new Serial(this, Serial.list()[PORT], 9600);
    background(0);
    output = createWriter("test.csv"); 
    println("begin");
}

void draw()
{
    while (port.available() > 0)
    {
        int value = port.readChar();

        // State machine to synchronize the data frames:
        switch (phase)
        {
        case 0:
            // First field.  Collect and parse numbers until a comma is found:
            if (value == ',') // A comma, ASCII = 0x2C
            {
                phase = 1;
            }
            else if ((value >= 48) && (value < 58)) // 0-9
            {
                field0 *= 10;
                field0 += (value - 48); // Remove ASCII offset
            } else {
                // Something else.  Restart the synchronization.
                field0 = 0;
                field1 = 0;
                phase = 0;
            }
            break;
        case 1:
            // Second field. Collect and parse numbers until a CR or LF is
            // found:
            if ((value == 0xD) || (value == 0xA)) // CR or LF
            {
                phase = 2;
            }
            else if ((value >= 48) && (value < 58)) // 0-9
            {
                field1 *= 10;
                field1 += (value - 48); // Remove ASCII offset
            } else {
                // Something else.  Restart the synchronization.
                field1 = 0;
                field1 = 0;
                phase = 0;
            }
        case 2:
            // Draw our graph:
            float fValue = field0; // Floating point version of value
            float h = map(fValue, 0, MAX_VALUE-1, 0, height-1);
            stroke(0,0,0);
            line(x, 0, x, height-1);
            if (on)
            {
                stroke(127,34,255);
            } else {
                stroke(255,128,0);
            }
            line(x, height, x, height - h);
            DrawBottom();
            

            output.print(field0);
            output.print(", ");
            output.println(millis());
            output.flush();

            
            phase = 0;
            field0 = 0;
            field1 = 0;
            break;
        }
    }
}

void DrawBottom()
{
    if (on)
    {
        stroke(128,128,128);
    } else {
        stroke(64,64,64);
    }
   
    line(x, height, x, height + HEIGHT2);

    if (++x > width)
    {
        x = 0;
        on = !on;
    }
}

void stop(){
  output.close();
}
 
Last edited:
Actually I was trying to merge the window into Peregine so that the main screen is this size. 1280x1000.

Can't seem to find the value in the resource files to change the resolution.
 


Back
Top