- Joined
- Oct 23, 2007
- Messages
- 1,904
- Points
- 0
Competition drives innovation.
Gotta love the free market.
Gotta love the free market.
Last edited:
Follow along with the video below to see how to install our site as a web app on your home screen.
Note: This feature may not be available in some browsers.
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
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:
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;
}
}
import processing.pdf.*;
size(1280, 1000);
beginRecord(PDF, "line.pdf");
background(255);
stroke(0, 20);
strokeWeight(20.0);
line(200, 0, 400, height);
endRecord();
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;
}
}
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();
}