What is FlowStone?

What is FlowStone?
FlowStone is a Graphical real time computer programming language.

What can FlowStone do?
FlowStone is designed to give a rapid programming environment for real time Digital Signal Processing (DSP) and Robotic applications.

dsprobotics.com

I have been contacted by the fine people at DSP Robotics, the makers of a LabView type programming language called FlowStone. The product started life as a graphical programming environment for Digital Signal Processing or DSP. It’s been updated with the most popular boards for robotics including the SSC-32. There is a free download available that can be used to create small projects. Take a look…

Ya i’ll give it a try.
I’m hoping i can use it as a terminal program rather than programming software.
My current terminal software is limited to 24 commands, i need about 36.

So maybe this will work out, will test it later.

cool. looks like they have already thought about you.
http://i531.photobucket.com/albums/dd355/innerbreed/DSPlynxmotion.jpg
downloading my copy now. :wink:

this is pretty neat! I haven’t read up on all of this but from what I’ve read so far tells me all I need to start experimenting with this is an SSC-32, a couple extra servos, and the free version of the software. Am I right? Have you done anything with this yet?

Wow this is really complicated.
it’s like 100% visual setup.
I cant just select the comport output and easily type in the baud rate and all that stuff, i have to create a float that has the baud rate listed.

Or i think you use floats.
I haven’t found a multi value thing yet.

Edit:
Well it works, but it’s really complicated. (or not complicated enough, i’m not sure yet.)

I managed to send a command to my robot, which was pretty neat.
It’ll take me a few hours, but i should be able to make it into the perfect terminal program…
AS LONG, as i can get it to read inputs from a game pad.
Or at least bind keyboard keys, i use joy to key, to bind my gamepad to F1-F12 keys, or Ctrl+F1 keys, but i’d much rather bind it to letters or something.

Edit2:haven’t been able to find any controller input or anything, besides clicking buttons manually with the mouse, i haven’t seen any useful inputs yet.
Only controller input it has, is for a wiimote.

Powerful exe’s may require some complexity on the dev side, eh? I like the way you can make a black box module, which is simple to use, hiding the complex parts.

There are literally hundreds of ways you can control your FlowStone application!

Here are a few common examples:

Keyboard (Key Pressed)
Wii Remote & Nunchuck + IR motion detection camera!
The Mouse
Touch Screens
Midi (a keyboard)
Any COM port device
Over the Network (only in FlowStone Pro)
Any of the Phidgets DAQ boards (like Gyros and accelerometers, or Sliders, and knobs etc.)
Sound (yes you can make noises to control your robot, even do voice recognition!)

There are also a few good download examples on our forum, even a simple LynxMotion controller that you can use as a starting point:

dsprobotics.com/support/viewforum.php?f=11

The keyboard when pressed is the one i need, haven’t found it yet.
You should really include a link into a PC’s gamepad/joysticks.
IE Axis1, axis2, d-pad, buttons.

My first visual programming like this, started with something called Wiremod, an addon for Garry’s Mod, a sandbox game for Half life 2.
Where you would place gates, which work exactly like the components in Flowstone.
The people at flowstone should spend $50 or so, and give it a try, they can then incorporate some of Wire Mods designs into Flow Stone.
Wiremod is easy to learn, and is very clean. The biggest advantage is it’s only about 50% visual,l and 50% coding.
Flowstone is a little too visual, and thats why i’m having problems.

It’s taking me 5+ minutes to make the components for a simple true/false situation.

if (input = 1) then
output1 = 5
output2 = 15
else
output1 = 20
output2 = 0
endif

What takes me 15 seconds to type, requires 4-5 floats, a few true/false components, and a dozen links.
And i tried the code box, i couldn’t get it to work. the outputs wouldn’t link with anything, and i don’t know if the inputs worked either.

Really, we just need components which we can customize with code.

A bug i found though, the free version allows for 1 serial port, but it doesn’t check to see if the serial port module still exist, so if you make one and delete it, you cant add another one to your contraption.
I also couldn’t put the serial port into a module for that very reason, because it deletes and replaces in another module, which registered it as a second port.

Found another bug.
The component Midi in Select. if you select the blank option (keyboard) and delete the component, the midi stays enabled.

We’re just getting started with this. It will take some time to iron out all the details. We will be dedicating someone to this, and we will document the progress as we go. Still some back-end work to do. Keep posted.

Ya until i can find the keyboard (not midi) input, or they impliment a game controller input, i’m kind of stuck.
Without one of those, i can’t successfully use this as a terminal program.
I’ll continue to post bugs as i find them.

Basically this is a new language to you, which is very fast to learn. Imagine if you just picked up Visual basic or C++ it would take you months of learning to make any sort of useful application. With flowstone you can make your first application in a matter of days, which is awesome, but you have to first read the manual and then download some of the examples to get an idea of how powerful it is.

As an example I re-wrote a DSP program which took me two years to code in DSP C++ but in FlowStone it took me about two months starting from scratch! This is now a finished embedded product in full production!

See: embeddeddetection.com/html/products.html

Take a little time and you will be blown away!

I would suggest that you also read the component reference from the help section, this explains all of the modules available and how to use them.

Re- the keyboard –Key Pressed: If you type ‘Key’ into the module search field (Top left of the screen) FlowStone will display all of the modules with the word Key in the name.

There is a module called ‘Is Key Pressed’ where you just need to tell it which key code you want to monitor and it gives you a Bool out indicating the status (You also have to add a Tick module to poll the key).
I have uploaded an example for you on our forum: dsprobotics.com/support/viewtopic.php?f=11&t=56

As far as your:

if (input = 1) then
output1 = 5
output2 = 15
else
output1 = 20
output2 = 0
endif

This is so fast to code in FlowStone, for this we use Selectors (Basically an integer IN selects one of many OUTs). This is where you start to see the power of FlowStone as a selector can handle any of the data types. Numbers, real-time audio, video, graphics etc.

I have uploaded a simple example of how selector works to our forum for you to download:
dsprobotics.com/support/viewtopic.php?f=11&t=57

Have fun! :wink:

Ok, with the arrow key example, i think i can figure this out. I do really well with specific examples like that.

1 more problem, how do i clear the “used components” thing?
It says i used about 2000, but i only have maybe 50 currently being used?
I figured the 10,000 module limit was 10,000 active modules, not 10,000 altogether including ones you no longer use.
This has the same issue with the com port thing, how you’re limited to 1 comport whether it’s in your contraption or has been deleted.
Cause with all the trial and error, i’ll no doubt surpass the 10,000 component limit mark.

Even your arrow key thing has like 22 components, but 682/10,000 used.

Edit: i relinked the arrow keys to asdw, as practice, but windows pop open, the LED’s light up though.
How do i disable the windows from popping up?

PS this is gonna take a bit to make 36 commands, i love copy/paste.

Edit2:
Been spending a few hours with this, and this software is indeed pretty incredible, but i’m still having trouble with coding.

This is driving me nuts.

All i really know about coding is the “if/then/else” thing, and i’m terrible at math.

Essentially i need.
if (input1 = 1) then
output = 777
elseif (input2 = 1)
output = 1000

and so on for 36 whopping inputs and commands. I used to have a basic terminal program a buddy wrote in C#, which edit the source all i wanted, i could add or remove all the if/then/else i wanted, problem is, it didn’t work with bluetooth com ports.

I like FlowStone, but it’s weird programming language is frustrating. Flowstone is nice, but it might be a little too powerful for my needs.
Since my needs are really a simple terminal program that allows me to bind keyboard/controller inputs to serial commands.

Really there should be a string module like the Midi In, that just detects which keys are pressed.
So when active, if i press A, it’ll output A, and when i let go of A it outputs nothing.
And a traditional coding component.

So i’d only need about 10 components.
So i can simple code some of it.
if (input = a) then
output = 777
elseif (input = b)
output = 1000

Creating all these components just to detect key presses, like the arrow thing, is REALLY time consuming, for something i could type up in 5 minutes.

Fallentine - Glad to hear you are getting on a bit better now.

Firstly the DSP coding section of FlowStone is exactly for that: coding advanced mathematics for signal processing. This only works on signals ie. real time audio so is no use for what you are trying to do!

The whole point of FlowStone is that it is graphical and no hard coding is necessary, unless you are doing advanced DSP code on audio!

As far as the 10000 components is concerned I can’t see what you mean? If I copy and paste a load of components and slowly delete them the component count is decrements as expected. However you might not realize that some of the high level components are made up from thousands of smaller ones so that you can go in and totally edit and customize them! For example the LED module is a high level module made up of 166 low level components. Double click on the LED and you will see inside.

On the Com Port being disabled issue, I see what you mean, if you add more comports than allowed in the FREE version they are all disabled forever. We will fix this in the next release (next week). A work around for now is to copy and paste your whole design (with only one COM port left) into a new blank schematic. (Ctrl A – select all, File New etc. CTRL V – Paste).

For the Key Pressed module, it was done like this for a reason! If you had a single module that just outputs the current key being pressed it would only output the last key pressed. What if you want multiple keys to be read simultaneously? This is why we have made it separate for each key you want to test, it’s the most versatile solution.

I’ve uploaded a 36 key pressed example to our examples on the forum :smiley: :
dsprobotics.com/support/viewtopic.php?f=11&t=58

As far as things popping up when you press certain keys, this is because of the program shortcuts in developer mode. For example f = add a Float component, b = add a Bool component, d = add an Integer component etc. Once compiled into an EXE using FlowStone Pro obviously you are no longer in FlowStone so none of the shortcuts exist. A work around for the FREE version is just add the ‘midi in device’ and select ‘keyboard’ (don’t connect it to anything) this will disable the FlowStone short cut keys.

This is so fast to code in FlowStone, for this we use Selectors (Basically an integer IN selects one of many OUTs). This is where you start to see the power of FlowStone as a selector can handle any of the data types. Numbers, real-time audio, video, graphics etc.