In Flowcode, simulation allows you to test and debug your embedded system designs without needing physical hardware. It provides a visual environment where you can run your program, interact with components, and observe their behavior in real-time. The simulation includes features like breakpoints, variable tracking, and real-time data display, helping you identify issues and optimize your design before uploading it to the actual hardware.
Flowcode's simulation feature offers a powerful environment for testing and debugging embedded system designs. Here’s more detail on its capabilities:
Real-Time Simulation: You can run your design as if it were on actual hardware, with real-time updates on how components like LEDs, sensors, or motors behave in response to the programmed logic.
Interactive Testing: Many components allow user interaction during the simulation. For example, you can press virtual buttons, adjust sensor values, or modify inputs to see how the system responds.
Debugging Tools: The simulation includes essential debugging features like breakpoints, step-by-step execution, and variable tracking. This lets you pause and inspect your program at specific points to identify issues or optimize performance.
Graphical Feedback: Data like sensor readings or communication signals can be visualized using built-in graphs and data monitors, making it easier to observe trends and behaviors over time.
Component Visualization: Physical components, such as displays or motors, are visually represented, so you can see how they would react in a real-world scenario, enhancing understanding and design verification.
Error Checking: Flowcode provides error messages and warnings during simulation, helping catch issues like incorrect component configurations or logical errors in the code.
Simulation in Flowcode helps streamline the development process by allowing thorough testing before deployment to hardware, reducing errors and saving time in the prototyping phase.
Built in functions
Component Panel Mouse Keyboard FCD Sound DataRecorder Calculations Console Connection Expand Tree File UI Time Language System Debug
Property
GetValue
Gets the value of a property as a string
SetColor
Sets a components 'color' property as a R,G,B value
SetValue
Sets a components property as a string
CopyValue
Copies a property value from one target to another
SetChildValues
Sets all child components property as a string
CopyChildValues
Copies the values of a properties children from the source to dest
SetVisible
Sets whether the property is visible or not
SetWritable
Sets whether the property can be edited in the UI or not
GetVisible
Gets whether the property is visible or not
GetWritable
Gets whether the property can be edited in the UI or not
GetFilter
Gets a components property filter string for lists, files, etc
SetFilter
Sets a components property filter string for lists, files, etc
CopyFilter
Copies a property filter from one target to another
GetListIndex
Gets a single lists index value from a property by line number
GetListItem
Gets a single list entry from a property by named index
SetListItem
Sets an existing list entries text for the property by named index
AddListItem
Alters or appends a list entries text for the property by named index
GetPanel
Returns the id of the panel hosting the component
SetInteractive
Sets whether a component can interact with the mouse
GetInteractive
Gets whether a component can interact with the mouse
SetVisible
Sets whether a component can be seen on the panel
GetVisible
Gets whether a component can be seen on the panel
SetSolid
Sets whether a component is checked in collision detections
GetSolid
Gets whether a component is checked in collision detections
SetCompile
Sets whether a component is considered for compilation or not
GetCompile
Gets whether a component will be compiled or not
GetInstance
Gets the type-instance of the component, >= 1 is valid
FindChild
Finds a named object that is part of the component
GetRoot
Gets the root component handle
GetTopParent
Gets the top-level owner of the component
GetParent
Gets the owner of the component
GetNext
Gets the next (younger) sibling of the components handle
GetLast
Gets the previous (elder) sibling of the components handle
GetChildHead
Gets the first (eldest) child of the component
GetChildTail
Gets the last (youngest) child of the component
GetOriginal
Gets the original definition of the component, returns Current if no original copy
Clone
Clones an existing object to another position on the panel
Delete
Deletes an existing object, removing it from the panel
Position
GetWorldPosition
Returns the positions coordinates in (X,Y,Z) array
GetWorldSize
Returns the component size in (X,Y,Z) array
SetWorldPosition
Moves the object to the given coordinates in World coordinates
SetWorldSize
Sets the objects size to a value
Get
Gets a handle to an object representing the components current position
GetOrigin
Gets a handle to an empty position
Set
Sets an objects position based on a component or pre-defined position
SetCoords
Sets an objects coordinates based on a position
SetScale
Sets an objects scale based on a position
SetRotation
Sets an objects orientation based on a position
GetBox
Gets a handle to an object representing the components bounding box position
GetLineNodes
Returns the position of a line's nodes as a comma-separated list
SetLineNodes
Sets the nodes of a line
Morph
Blends positions from two sources to a destination
Animate
Blends positions from two sources to a destination over time
StopAnimate
Stops all animations started by this component
MoveAlong
Moves the object by the given offset relative to its parent along an axis
MoveBy
Moves the object by the given offset relative to its parent
MoveTo
Moves the object to the given coordinates relative to its parent
ScaleTo
Sets the objects scale to a value
ScaleUp
Multiplies the objects scale by a value
ScaleDown
Divides the objects scale by a value
RotateTo
Rotates the object to the given rotation
RotateAlong
Rotates the object by the given rotation along an axis
RotateX
Rotates the object around the X axis
RotateY
Rotates the object around the Y axis
RotateZ
Rotates the object around the Z axis
GetCoords
Returns the positions coordinates in (X,Y,Z) array
GetScale
Returns the positions scale in (X,Y,Z) array
GetQuat
Returns the positions quaternion in (X,Y,Z,W) array
GetEuler
Returns the positions euler angles in (P,Y,R) array
Math
Coordinate maths functions
Panel2D
2D Panel functions
Camera
Camera positioning for 3D panel
PCloud
Create
Creates a new point cloud tied to a position handle
SetVisible
Sets whether the point cloud is displayed or not
SetPos
Sets the position for the point cloud to be located at
GetPos
Gets the position the point cloud is located at
SetPoints
Sets the X,Y,Z point lists
SetPointsEx
Sets the X,Y,Z point lists
SetGrid
Sets the X,Y,Z point lists in a height-map grid
SetGridEx
Sets the X,Y,Z point lists in a height-map grid
SetGridFlat
Sets the X,Y,Z point lists in a flat height-map grid
SetGridPoint
Given an XY on the grid, sets the vertex value at that point
UnitScale
Creates a unit scaled axis (X, Y or Z) with a center of zero and a range of two
SetColor
Sets the RGB colour of the entire cloud
SetColors
Sets the RGB colour of the individual points in the cloud
SetGridColor
Given an XY on the grid, sets the vertex colour at that point
SetMode
Sets the rendering mode of the point cloud
SetPointLight
Enables or disables simple lighting for point mode, providing a normal passing through the point and (0,0,0)
Update
Manually refresh the screen the point cloud exists on
LinkBar
Create
Creates a new bar linking a pair of position handles
SetVisible
Sets whether the link is displayed or not
SetStartPos
Sets the position for the start point of the bar
SetEndPos
Sets the position for the end point of the bar
SetStartAdjustment
Sets the clipping adjustments for the beginning of the link
SetEndAdjustment
Sets the clipping adjustments for the end of the link
SetStartGfx
Sets the graphic for the start point of the bar
SetBarGfx
Sets the graphic for the main line of the bar
SetEndGfx
Sets the graphic for the end point of the bar
GetStartPos
Gets the position the bars start point is located at
GetBarPos
Gets the position the bar is located at
GetEndPos
Gets the position the bars end point is located at
Update
Manually refresh the screen the bar exists on
EnableAuto
Sets whether Flowcode should automatically draw links for component object property types
TextLabel
Create
Creates a new text label that always faces the camera
SetVisible
Sets whether the label is displayed or not
SetPos
Sets the position for the point to draw the text at
SetOffset
Sets the offset from the SetPos() position for the label
SetText
Sets the text for the label
SetScale
Sets the multipliers for the width and height of the label
SetColors
Sets the foreground and background colours for the label
SetViewMode
Sets whether to draw at a fixed size or to scale based on distance from the camera
GetPos
Gets the position the label is located at
Update
Manually refresh the screen the label exists on
Collision
TestTable
Tests whether an object collides with the table top, returns Z distance to move to rest on the table
TestSingle
Tests whether an object collides with a position
GetSingleAxis
Tests whether an object collides with a position
GetSinglePos
Returns the position to move Pos to so it does not collide with Test - null if no collide
GetMultiAxis
Tests whether an object collides with a position
GetMultiPos
Returns the position to move Pos to so it does not collide with any other object - null if no collide
Graphics
Redraw
Sends a redraw request to the given component
SetColor
Sets the draw colour for and subsequent graphics objects
SetColorRGB
Sets the draw colour for and subsequent graphics objects
SetTextFont
Sets the text font for subsequent text objects
SetTextScale
Sets the text scale for subsequent text objects
SetLineThickness
Sets the thinkness when drawing lines and points
DrawCreate
Creates a drawing area on a shape
DrawBegin
Begins drawing on a given shape
DrawEnd
Ends drawing started with DrawBegin()
DrawDelete
Deletes a drawing area for a shape
DrawText
Draws a line of text texture
DrawPoint
Draws a point on a texture
DrawLine
Draws a line on a texture
DrawLineA
Draws a smooth line on a texture
DrawRect
Draws a rectangle on a texture
DrawCircle
Draws a circle on a texture
Clear
Clear texture to the given component
Shape
Routines to change the last drawn shape
GetButtons
Gets the button state from the mouse: 4 for left, 1 for right
GetFocus
Gets the handle of the component under the mouse
GetPosition
Gets the position of the mouse, intersecting with a component or the viewing plane
GetPosition2D
Gets the X/Y position of the mouse in screen coords
GetClickSide
Gets the side of the component clicked on, 0 to 5
SimClick
Simulates a click on an object
SimDrag
Simulates a click-drag on an object
SimRelease
Simulates a click-release on an object
KeyDown
Simulates a key-press on an object
KeyUp
Simulates a key-release on an object
GetItemValue
Gets a paths item value from the FCD document
GetItemHandle
Gets a FCD items handle, suitable for traversal with the Tree API
GetPathHandle
Gets a FCD paths handle, suitable for traversal with the Tree API
SetItemValue
Override item value from the FCD document from path
ResetItemValue
Reset paths item value from the FCD document
Play
Plays a formatted file sound, returns true if the sound played OK
LoadWav
Loads a wave file into memory, providing the values needed to play it
Create
Creates a sound object that data can be played through
SetVolume
Sets the volume of playbacks for this sound
GetVolume
Gets the volume of playbacks for this sound in the range 0 to 1
GetBits
Gets the number of bits per sample for the sound
GetRate
Gets the current sample rate for the sound
SetRate
Sets the current sample rate for the sound - this will stop the playing sound
Queue
Queues a sound for playing
QueueEx
Queues a sound for playing, with the format provided
Flush
Stops all playing and queued sounds
GetPending
Gets the number of sample blocks queued or playing for the sound
AddGroup
Adds a group to the scope to which streams may be added
ShowGroup
Sets the visibility of the given group
AddStream
Adds a stream to the given group suitable for inputs and operations
AddBuffer
Adds a fixed-view stream to the given group suitable for inputs and operations
Rename
Renames the given scope group, stream or buffer
SetYAxisLabels
Sets the labels for the Y-axis of the given stream
SetLineColor
Sets the group, stream or buffers line colour
GetLineColor
Gets the streams line colour
SetBackColor
Sets the groups background colour
GetBackColor
Gets the stream groups background colour
SetDecodable
Sets whether a stream can be decoded via the components event - defaults to 'true'
GetDecodable
Gets whether a stream can be decoded via the components event - defaults to 'true'
AddPort
Adds an input to the stream from a port
AddAnalog
Adds an input to the stream from an analog channel
AddCustom
Adds an input to the stream from a custom injection
AddOp
Adds an operation to act on the inputs of the stream
ClearOps
Clears all inputs and operations from the given stream
SetBuffer
Sets the contents of a snapshot stream
SetCustom
Sets one of 32 custom analog values for the group
GetSnapshot
Gets a block of the output stream with each input sample operated on, returns number of samples read
FindOutput
Searches back through the output history for a value, returns offset of found sample from TimeUS, 0 if not found
FindPeriod
Attempts to calculate the wave period given a series of transitions for the stream, returns calculated period
SetPacketFmt
Sets the graphical format of the packets added with AddPacket and Add...Packets
GetPacketFmt
Returns the graphical format of the packets added with AddPacket and Add...Packets
AddPacket
Adds an overlay packet to the stream at a given offset from the current time
AddStepPackets
Adds overlay packets to the stream by decoding the stream contents with a fixed period rate
AddSyncPackets
Adds overlay packets to the stream by decoding the stream contents with a variable period rate
ClearPackets
Clears existing overlay packets from the stream
ClearAllPackets
Clears all existing overlay packets from the stream
TicksToSecs
Converts a duration in ticks into a time in seconds
SecsToTicks
Converts a time in seconds into a duration in ticks
AddText
Adds a window to the list of consoles available
AddMemory
Adds a window to the list of consoles available
GetDefault
Gets the default (read-only) console window
GetConsole
Gets a console window
GetName
Returns the name of a console
Rename
Renames the given console
SetMemMode
Sets whether to show address and bytes for the console
SetInputRGB
Sets the colour of text inserted by the user from now on
SetOutputRGB
Sets the colour of text inserted by the component from now on
WriteText
Adds a block of text to the console window
GetLineText
Reads a line of text from the given console, pass -1 for final line
SetLineText
Writes a line of text from the given console, pass -1 for final line
GetLineBytes
Reads a line of bytes from the given console extending the array if needed
SetLineBytes
Writes a line of bytes from the given console, pass -1 for final line
CountLines
Counts the number of lines in the console
ClearText
Clears all the text in the console
GetPort
Gets a ports value from its index
SetPort
Sets a ports value from its index
GetAn
Gets an analog value from its channel index
SetAn
Sets an analog value from its index, range 0->1
DecodePort
Gets a ports details from its name or index
PathName
Expands a string using the built-in pathname expansion variables
MacroName
Expands a string to the name of a macro used in the generated code
VarName
Expands a string to the name of a global variable used in the generated code
Property
Expands a string to the name of a property used in the generated code
MacroHead
Expands a macro name to the code generated for the header of that macro
MacroBody
Expands a macro name to the code generated for the body of that macro
MacroTail
Expands a macro name to the code generated for the tail of that macro
GetValue
Gets the value of the given object, if available
GetName
Gets the name of the given object
GetPath
Gets the full '.' separated name of the given object
GetSubValue
Gets the value of a named sub-item of the given object, if available
Traverse
Updates the object to step depth-first through the tree
StepNext
Updates the object to point to the next (younger) sibling
StepNamedNext
Updates the object to point to the next (younger) sibling matching the name
StepNamedIndex
Updates the object to point to the Nth next (younger) sibling matching the name
StepLast
Updates the object to point to the last (elder) sibling
StepParent
Updates the object to point to its parent object
StepRoot
Updates the object to point to the root of the tree
StepChildHead
Updates the object to point to the head (eldest) child
StepChildTail
Updates the object to point to the tail (youngest) child
StepChildPath
Updates the object to point to the '.' separated named child path
CountChildren
Returns the number of immediate children present for the object
CheckChildren
Returns true if the object has children, else false
CountNamedChildren
Returns the number of immediate children present for the object
CheckParent
Returns true if the object has a parent, else false if it is the root
StepSubHead
Updates the object to point to the head (eldest) attribute, if any
StepSubTail
Updates the object to point to the tail (youngest) attribute, if any
StepSubName
Updates the object to point to the named attribute, if any
GetCopy
Creates a copy of the handle and returns the copy
AbsPath
Gets an absolute path from a relative filename
RelPath
Gets an relative path from an absolute filename
CreateDir
Creates a directory structure
GetType
Finds the type of a file: 0=Unknown, 1=File, 2=Dir, 4=Disk
GetSize
Gets the number of bytes in the file, by handle or name
Delete
Deletes the file or directory structure
Create
Creates the new file as a standard stream
Open
Opens the existing file as a standard stream
ReadArray
Reads an array from the file, returns elements read
WriteArray
Writes an array to the file
SetPos
Sets the position of the next read or write in the file
GetPos
Gets the position of the next read or write in the file
Flush
Writes all unwritten data to the file in one block
Buffer
Open
Opens the existing file as a circular buffer
Create
Creates the new file as a circular buffer
ReadByte
Reads a single byte from the input stream, -1 if empty
WriteByte
Writes a single byte to the input stream
ReadArray
Reads an array from the input stream, returns elements read
WriteArray
Writes an array to the input stream
NVM
Open
Opens the existing file as a block of non-volatile memory
Create
Creates the new file as a block of non-volatile memory
ReadByte
Reads a single byte from the NVM, -1 if empty
WriteByte
Writes a single byte to the NVM multiple times
ReadArray
Reads an array from the NVM, returns elements read
WriteArray
Writes an array to the NVM
SimpleMsgBox
Displays a simple 'Ok' message box
Win32MsgBox
Invokes the Win32 API MessageBox function
YesNoMsgBox
Displays a simple 'Yes/No' message box
YesNoCancelMsgBox
Displays a simple 'Yes/No/Cancel' message box (0 == Cancel, 1 == No, 2 == Yes)
InputMsgBox
Displays a message box that allows the user to input text. Returns true if 'Ok' clicked, false otherwise
GetMillisecs
Returns the value of a monotonic non-decrementing millisecond counter
GetUTC
Returns the current UTC Modified Julian Date value
GetLocal
Returns the current local time as a Modified Julian Date value
AddMJD
Increments or decrements a Modified Julian Date and millisecond value
MJDToDate
Converts a Modified Julian Date into a Gregorian calendar date
DateToMJD
Converts a Gregorian calendar date into a Modified Julian Date
MJDToSeconds
Converts a Modified Julian Date into a number of seconds since a specified epoch
SecondsToMJD
Returns the Modified Julian Date given by the number of seconds since a specified epoch
MJDToWeekday
Gets the day of the week that the MJD represents
GetLeapYear
Returns true if the given year is a leap year, else false
GetMonthDays
Returns the number of days in the given month
Translate
Takes English text and optional hint and converts to the current language
Notify
Sends a System.User message to the targeted component
Forward
Sends the currently processing message to the target
MacroExists
Returns true if the macro exists
CallMacro
Calls a macro
ShowHandle
Given a handle to an object with viewable presence, shows that object on screen
CreateHandle
Creates a general-purpose garbage collected handle for resource management
SetHandleWord
Sets a general purpose word in the handle for use by its owner
GetHandleWord
Gets a general-purpose word set by the owner of a custom handle
DeleteHandle
Deletes any handle created by the component
GetSender
Gets the handle of the component that posted this event - 0 for system
TimerStart
Calls the Component.Timer event with Ident as an argument after Millisecs time
TimerStop
Kills any timers with the given ident for this component
WDTEnable
Enables or disables the software watchdog during long operations
ClaimEvent
Claims an event message by name, returns true if claimed
ReleaseEvent
Releases a previously claimed an event message by name, returns true if released
EnableEvent
Allows an event to be fired or removes the ability for an event to fire - this may be nested
ClaimMouse
Claims mouse clicks for the target object
ReleaseMouse
Releases mouse clicks for the target object
RedirectMacros
Allows calls to one of your children to be redirected to another component
StartSim
Start the simulation engine
StopSim
Stop the simulation engine
SetSimSpeed
Sets the speed the simulation engine
SetClipboardData
Sets the clipboard with text data
ReadClipboardData
Reads text data from the clipboard
GetHasFocus
Checks to see if a Flowcode window has the focus
ShellExecute
Launches an external file or program on this computer
WriteRegistryInt
Writes an integer value to the registry
WriteRegistryString
Writes a string value to the registry
ReadRegistryInt
Reads an integer value from the registry
ReadRegistryString
Reads a string value from the registry
Print
Prints out the string or value on a line in the debug window
PrintLn
Prints out the string or value with a new-line in the debug window
TestFunction
Temporary debug function
Events