A platform for component developers to build complex data streaming applications with zero lines of code!
 
  • Data Flow Solution
  • Data-Typed Pins
  • Powerful, Proven
  • Multi-Threaded
  • High Performance
  • Flexible License

 

About OpenWire

OpenWire is a free open source library. The library allows writing advanced VCL and FireMonkey components for rapid codeless application development. The components developed with the library allow creation of complex applications with zero lines of program code.
 
   OpenWire Editor in RAD Studio 10.3
 
 
The above image visualizes OpenWire properties. The application shown is a fully functional audio-video processing application with user interface and file selection dialog, written with zero lines of code.  The the AVIPlayer and the audio-to-real converter as well as the scope and image displays -- everything communicates over OpenWire connections that you chain together at design time. There is no code whatsoever involved in implementing the application!
 
 
Donate to the OpenWire project
 
OpenWire is free open source project. The product is result of many years of development. If you like the technology, and are willing to help us continue working on it, you can donate using the link bellow: 
 
 
 
OpenWire on SourceForge.net
 
OpenWire is now available on GitHibhttps://github.com/bmitov/OpenWire . An GIT repository is used. We are in process of adding all the source files.
 
You can access the GIT repository here: https://github.com/bmitov/OpenWire.git directly or by using GIT.
 
Please let us know if you are interested in contributing to the project development so we can consider adding you to the list of project members.

 


Our component libraries come in 3 versions a VCL - Firemonkey version (for Delphi / C++ Builder / RAD Studio 10.3 or higher), an MFC compatible Visual C++ version, and a .NET 4.0 supporting Visual Studio 2005 or higher.
 
The RAD Studio version is a set of native VCL and Firemonkey components of which all include now the powerful Mitov Runtime.
 
The Visual C++ version is a set of native Visual C++ classes (components).
 
The NET 4.0 (4.5 and higher compatible) version is a set of managed .NET components.  The .NET version has the same performance as the native versions, and supports all the Microsoft .NET languages including Visual Basic, C#, J#, F# and C++/CLI.
 
Due to the unique architecture of the OpenWire platform, the components are implemented the same way in Managed .NET and native Windows (32 and 64 bit) environments. The code to control a component from VB.NET, C++/CLI, C#, and J#, Visual C++ MFC, Delphi, and C++ Builder is almost identical. This allows the developers to migrate and share code between the different environments thus significantly improving the productivity.
 
OpenWire Libraries: for fast, complex data stream processing with almost zero lines of code!
Delphi Prism RAD Studio XE8 Delphi XE8 C++ Builder XE8 RAD Studio 10 Seattle Delphi 10 Seattle C++ Builder 10 Seattle

OpenWire itself is FREE Open Source project.  Below is a brief description of some of the features of the current OpenWire version. The full documentation is available as a Word document.

 
The purpose of the OpenWire project is to introduce a unified, easy way to transfer data among different VCL or FireMonkey components. This is very similar to the way that products like LabView and HP VEE work.  For example, you could quickly build an application with a sine wave generator, which streams out to a chart and in parallel to a filter, which streams out to another chart and in parallel to a file logger, as well as to a serial communication sending the data to another system.  And what makes this easy is that you do not write code: You build streams by connecting an OutputPin to one or more InputPins.  The underlying technology pumps your data from pin to pin, using multiple threads for high performance.
 
OutputPins and InputPins can be viewed as connectors on the edges of components -- and Mitov Software offers a vast array of custom components on multiple platforms; or, you can build your own.
 
Features of OpenWire Componets:
 
  • Each component can have one or more inputs and/or outputs.
  • Each Input or Output is called Pin. I.E. there are IputPins and OutputPins.
  • Each OutputPin can stream specific format data to compatible format InputPins.
  • Each type of data has its own data specification.
 
The data specification is a globally unique data type identifier.  For example, the integer data type has one type of data specification and the String data type has a different one. An OutputPin can be specified as being able to stream one or many types of data.  For example, you could have an OutputPin that sends file names and streams String data. Any InputPin accepting Strings will be able to connect and receive from this Pin, and any Pin accepting file names will be able to connect and receive, too.  Specifically:
 
  • Each Pin is a property cloned from TOWPin.
  • The InputPin is inherited from TOWPin and the are called TOWSinkPin.
  • The OutputPin is inherited from TOWPin and the are called TOWSourcePin.
  • The InputPin and OutputPin are responsible for implementing one or many stream specific inerface(s). The interface has a unique GUID specified for that type of stream.
  • The InputPin and OutputPin have data specification which describes what type of data types (interfaces) it can accept (connect to).
  • The data specification for a certain data type contains in the TPinType object.
  • The TPinType contains one or more entries of type TGUID.
  • The TGUID is used to determine the type of data - it’s in fact the GUID of the interface being able to connect to that type of data.
 
There is a handshaking mechanism involved during the connection of 2 Pins. Only compatible data type Pins can be connected. Otherwise the connection is rejected. There are property editors which are allowing you to connect the Pins. You can connect 2 Pins at run time as well.
 
OpenWire 2.x adds StatePins. StatePins can be connected together by creating hidden objects named StateDispatchers(States). The StatePins share one and the same state. If a the state of one of the StatePins changes all the connected StatePins are changing to the same state. StatePins can be connected to one SourcePin, and/or to multiple SinkPins.
 
 
The following products are developed with OpenWire and are free for non commercial purposes:
 
AudioLab
VideoLab
VisionLab
BasicVideo
BasicAudio
InstrumentLab
IntelligenceLab
SignalLab
PlotLab
 
 

 

OpenWire: What's New

New in Version 8.0.0.126 (released on 2024-08-19)

  • Added support for modules in Mitov.TypeInfo
  • Partially changed the Create class methods to Make to match the newly introduced by Embarcadero naming convention in Skia
  • Improved Design time property and component editors
  • Improved component icon extraction when the component does not have dedicated icon, and parent class icon needs to be used
  • Added OpenWire pins support for OldName attribute

New in Version 8.0.0.120 (released on 2024-06-14)

  • Improved Delphi 12.0 support
  • Improved Persistent Collections Editor
  • Added Terminate for IShellProcess
  • Added TFileHelper with ContentEquals method
  • Improved compatibility with the Delphi 12.0 Modern Compiler
 

New in Version 8.0.0.108 (released on 2024-02-21)

  • Improved C++ Builder support
  • Improved Design time Performance

New in Version 8.0.0.101 (released on 2023-12-06)

  • Added Delphi 12 support
  • Redesigned installation not requiring Admin privileges when compiling the libraries
  • Improved Performance
  • Added Sets support
  • Improved Mitov TypeInfo
  • Improved Dynamic Type Info
  • Improved Mitov Design Time API
  • Redesigned Persistent Collection Editor
  • Modernized Dialogs
  • Improved Win64 support
  • Improved Container Classes
  • Added TDirecory helper
  • Large number of bug fixes
  • Improved Property and Component Editors

New in Version 8.0.0. 77 (released on 2022-04-30)

  • Updated maintenance release for RAD Studio/Delphi 11.0/11.1 Alexandria with minor improvements

New in Version 8.0.0. 74 (released on 2022-04-25)

  • Updated maintenance release for RAD Studio/Delphi 10.4 Sydney with minor improvements

New in Version 8.0.0. 73 (released on 2022-04-20)

  • Updated maintenance release for RAD Studio/Delphi 10.3 Rio with minor improvements

New in Version 8.0.0. 69 (released on 2022-03-28)

  • Added support of indexed list collection enumebarbles
  • Improved MAC64 support
  • Improved OpenWire Graphical Editor
  • Improved performance

New in Version 8.0.0. 63 (released on 2022-03-09)

  • Updated maintenance release for RAD Studio/Delphi 10.4 Sydney

New in Version 8.0.0. 62 (released on 2022-03-07)

  • Updated maintenance release for RAD Studio/Delphi 10.3 Rio

New in Version 8.0.0. 59 (released on 2022-03-02)

  • Improved RAD Studio 11 compatibility
  • Improved RGBW and RGBWAlpha color support
  • Improved Execute Process implementation
  • Improved support for OpenWire State pins

New in Version 8.0.0. 48 (released on 2022-01-28)

  • Added basic RGBW and RGBWAlpha support
  • Number os small design time bug fixes

New in Version 8.0.0. 43 (released on 2021-12-21)

  • Improved RAD Studio 11 compatibility
  • Improved Mitov.Runtime collections
  • Improved performance
  • Improved Dynamic Type Info support
  • Improved elements editor
 

New in Version 8.0.0. 36 (released on 2021-10-11)

  • Added RAD Studio 11 support
  • Improved Performance
  • Improved Property Editors
  • Added more Format Converters
  • Improved JSON support

New in Version 8.0.0. 27 (released on 2021-06-20)

  • Improved RAD Studio 10.4 Sydney support
  • Improved Dynamic Type Info implementation

New in Version 8.0.0. 21 (released on 2021-05-12)

  • Added RAD Studio 10.4 Sydney support
  • Improved Dynamic Type Info implementation

New in Version 8.0.0. 0 (released on 2020-11-26)

  • Significantly improved loading execution, and editing speed
  • Significantly improved JSON support
  • Improved IGDIPlus rendering performance
  • Modified to use interface class function methods instead of constructors
  • Redesigned pin path collection to significantly improve the speed
  • Redesigned to set pin and properties owner fields on creation
  • Improved pin information caching
  • CreateLock replaced by Create with Lock parameter
  • Improved FMX Design Time support

New in Version 7.8.3.72 (released on 2020-09-24)

  • Updated to RAD Studio 10.3 Rio Update 3
  • Significantly redesigned OpenWire Editor
  • Added initial Quaternion and 3D Point support
  • Added OSX64 support
  • Improved overall performance and stability
  • Added option to use Const anonymous methods for improved performance
  • Improved FMX compatibility and support
  • Simplified JSON API
  • Improved JSON implementation
  • Improved sockets implementation
  • Added Sockets Multicast support
  • Significantly improved Execute Process implementation
  • Added support TStrings reverse enumerators and Query interface trough class helper
  • Improved Dynamic Type Info implementation
  • Improved Property Collection and Component Collection editors
  • Improved Property editors

New in Version 7.8.2.288 (released on 2018-12-21)

  • Added RAD Studio 10.3 Rio support
  • Improved Dynamic Type Info implementation
  • Improved property editors

New in Version 7.8.2.271 (released on 2018-11-12)

  • Added Linux support
  • Added iOS support
  • Added RAD Studio 10.2 Tokyo support
  • Improved MAC, and Android compatibility
  • Pins converted to use the new Mitov.Runtime serialization
  • Added OWRequiredPinAttribute support
  • Added TOWIntToCardinalFormatConverter and TOWCardinalToIntegerFormatConverter
  • Added TOWRealToRealComplexFormatConverter
  • Added TOWRealListStatePin and TOWIntegerListStatePin
  • Added Execute Process
  • Added Command Line parsing and Process Execute
  • Added option to disable the design time extentions
  • Added Socket Binding
  • Redesigned JSON Serialization
  • Added TPeriodicThread
  • Added initial Dynamic Type Info implementation
  • Added GetIndexedSubProperty in the RTTI
  • Added GetType for TObject in the RTTI
  • Added support for both object and class in TMethodInfo.Invoke in the RTTI
  • Enchanced Query functionality
  • Added IPairCollection
  • IArrayWriter renamed to ISequentialWriter
  • IArrayReader renamed to ISequentialReader
  • Improved Serialization Readers
  • Added Reserialize
  • Improved design time property editors support
  • Added option to replace property collection items while keeping all compatible settings
  • Added filtering for property collections
  • Added support for categorized list property selection
  • Added TreeView filtering support
  • Updated to use the latest Delphi language features

New in Version 7.8.0.0 (released on 2016-05-03)

  • Added RAD Studio 10.1 Berlin support
  • Added Reset to Default property editors
  • Added Enum property editors
  • Added Class events property editors
  • Added Multi-Event property editors
  • Added Make/Split Structure components

New in Version 7.7.0.0 (released on 2015-10-28)

  • Added 10 Seattle support
  • Added support for VS2015
  • Added TOWBoolToIntFormatConverter
  • Improved threading support
  • Improved OpenWire Editor
  • Clock pins changed to MiltiSink
  • Improved Design Time Editors
  • Improved JSON support
  • Improved collections
  • Added more Live Binding types
  • Added support for hosting OpenWire Studio projects
  • Added serialization support in the buffers

New in Version 7.6.0.0 (released on 2015-04-17)

  • Added XE8 support
  • Added a number of standrd pin tipes, and colors for data types.
  • Added a number of type converters.
  • Added support for pin grouping across sub properties.
  • Added support for supression during on connect notifications.
  • Added Add/Remove pin notification for owner component.
  • Added support for Debug pins.
  • Added support for RAD Studio preview windows.
  • Significantly improved property Delphi editors

New in Version 7.0.0.0 (released on 2014-04-15)

  • Added Delphi and C++ Builder XE5, and XE6 support.
  • Added MAC and Android support.
  • Added more standard pin types.
  • Added support for auto component suggestion in OpenWire Studio.
  • Simplified locking interface.
  • Improved integration with the OpenWire Editor.

New in Version 6.0 (released on 2013-06-12)

  • Added support for Delphi / C++ Builder / RAD Studio XE4
  • Now uses the latest language features in Delphi such as generics, and anonymous methods
  • Support for Lazarus and Delphi versions older than XE2 is discontinued due to the new language features
  • Significantly improved threading model
  • Improved integration with the OpenWire Editor

New in Version 5.0.3 (released on 2012-10-10)

 

  • Added support for Delphi / C++ Builder / RAD Studio XE3
  • Improved Visual Live Binding support
  • Improved FireMonkey support
  • Added support for Visual Studio 2012

New in Version 5.0.2 (released on 2012-04-16)

 

  • Added 64 bit support for VCL, FireMonkey

New in Version 5.0.1 (released on 2011-10-18)

  • Added FireMonkey support.
  • Updated documentation.

New in Version 5.0 (released on 2011-09-07)

  • Added Delphi and C++ Builder XE and XE2 support.
  • Improved Lazarus support.
  • 64 bit compatible.
  • Improved threading support.
  • Added expandable editors support.

New in Version 4.5

  • TOWMultiSinkPins added.
  • Improved pin editors.
  • Fully Lazarus compatible under Windows.

New in Version 4.3.1

  • Updated install.
  • Fixed pin list editors for RAD 2010.

New in Version 4.3

  • Added RAD Studio 2010 support.

New in Version 4.0.1

  • Improved installs.

New in Version 4.0

  • Added C++ Builder 2009 support.
  • Added Format Converters.
  • Added Lazarus support for Windows, and Linux.
  • New threading lock mechanism.
  • Added debug subscription support.

New in Version 3.1

  • Added C++ Builder 2007 support.
  • Fixed Frames support.
  • Fixed bug in PinLists when used with wide strings.

New in Version 3.0

  • Improved .NET proxy support.
  • Major upgrade of the way the pins are stored and loaded.
  • Added ConnectAfter pin function - allows specifying the order of the notifications.
  • Improved support for the OpenWire Graphical Editor.
  • Fixed bug when connecting state pins to members of PinList.

New in Version 2.6.1

  • Fixed a conflict with TChart.

New in Version 2.6

  • Added Delphi and C++ Builder 2006 support.

New in Version 2.5

  • Improved multithreading support.

New in Version 2.4

  • OpenWire has a new full multithreading support implemented.
  • New Delphi 2005 support.
( Click to view Larger images. )
These demos are executable after downloading.
Also see:   Demo source code downloads

OpenWire Examples

OpenWire Graphical Editor OpenWire Graphical Editor
OpenWire Graphical Editor in Delphi XE OpenWire Graphical Editor in Delphi XE
OpenWire Graphical Editor in Delphi 2005 OpenWire Graphical Editor in Delphi 2005
OpenWire Graphical Editor in Delphi 7 OpenWire Graphical Editor in Delphi 7

OpenWire: Frequently Asked Questions

Q: Can I use OpenWire in a non open source commercial application or component library?
A:

Yes you can use OpenWire in non open source applications and component libraries.

Q: Can I write multithreading applications using OpenWire? Is it multithreading safe?
A:

Yes. The latest version of OpenWire is fully multithread safe, and is used in heavily multithreaded solutions.

Q: Why do I see only few simple components when I install OpenWire? Where are the OpenWire components?
A:

OpenWire is a library of properties called Pins. It does not provide components, just properties for writing such components. The components you see are demo components provided to you to learn how to use OpenWire in your components.

OpenWire Installers

Firemonkey and VCL Installer: OpenWire 8.0.0.126 VCL and FireMonkey for 12.0 Athens
Updated on 2024-08-20, downloaded 162 times.
Firemonkey and VCL Installer: OpenWire 8.0.0.77 VCL and FireMonkey 32 & 64 bit support for 11.X Alexandria
Updated on 2022-05-01, downloaded 466 times.
Firemonkey and VCL Installer: OpenWire 8.0.0.74 VCL and FireMonkey 32 & 64 bit support for 10.4 Sydney Update 2
Updated on 2022-04-25, downloaded 225 times.
Firemonkey and VCL Installer: OpenWire 8.0.0.73 VCL and FireMonkey 32 & 64 bit support for 10.3 Rio Update 3
Updated on 2022-04-20, downloaded 266 times.

Legacy Firemonkey and VCL Installer: OpenWire 7.8.2.288 VCL and FireMonkey 32 & 64 bit support for 10.2 Tokyo and 10.3 Rio
Updated on 2018-12-21, downloaded 837 times.
Legacy Firemonkey and VCL Installer: OpenWire 7.8.2.0 VCL and FireMonkey 32 & 64 bit support for XE8 to 10.1 Berlin
Updated on 2016-06-06, downloaded 1983 times.
Legacy Firemonkey and VCL Installer: OpenWire 7.7.0.0 VCL and FireMonkey 32 & 64 bit support for XE7 to 10 Seattle
Updated on 2015-10-28, downloaded 843 times.
Legacy Firemonkey and VCL Installer: OpenWire 7.6.1.0 VCL and FireMonkey 32 & 64 bit support for XE6 to XE8
Updated on 2015-06-11, downloaded 748 times.
Legacy Firemonkey and VCL Installer: OpenWire 7.5.0.0 VCL and FireMonkey 32 & 64 bit support for XE4 to XE7
Updated on 2014-11-19, downloaded 913 times.
Legacy Firemonkey and VCL Installer: OpenWire 7.0.0.0 VCL and FireMonkey 32 & 64 bit support for XE3 to XE6
Updated on 2014-04-22, downloaded 911 times.
Legacy Firemonkey and VCL Installer: OpenWire 6.0.0 VCL and FireMonkey (Windows only) 32 and 64 bit support for XE2 to XE4
Updated on 2013-06-15, downloaded 1305 times.
Legacy Firemonkey and VCL Installer: Legacy OpenWire 5.0.3 VCL and FireMonkey (Windows only) 32 and 64 bit support for 2010 to XE
Updated on 2012-10-10, downloaded 2301 times.
Legacy Firemonkey and VCL Installer: OpenWire 5.0.1 for Delphi/C++ Builder 5 to 2009
Updated on 2011-10-18, downloaded 23129 times.

Demos

These demos are executable after downloading.   Also see: Demo source code downloads

 

             This software is provided 'as-is', without any express or
             implied warranty.  In no event will the author be held liable
             for any  damages arising from the use of this software.
 
             Permission is granted to anyone to use this software for any
             purpose, including commercial applications, and to alter it
             and redistribute it freely, subject to the following
             restrictions:
 
             1. The origin of this software must not be misrepresented,
                you must not claim that you wrote the original software.
                If you use this software in a product, an acknowledgment
                in the product documentation would be appreciated but is
                not required.
 
             2. Altered source versions must be plainly marked as such, and
                must not be misrepresented as being the original software.
 
             3. This notice may not be removed or altered from any source
                distribution.

News

August 19, 2024more...

NEW RELEASE: Updated RAD Studio/Delphi 12.0.0 Athens version of all the libraries has been released!

June 14, 2024more...

NEW RELEASE: Updated RAD Studio/Delphi 12.0.0 Athens version of all the libraries has been released!

February 21, 2024more...

NEW RELEASE: Updated RAD Studio/Delphi 12.0.0 Athens version of all the libraries has been released!

December 21, 2023more...

UPDATED: BMDThread Delphi components

December 6, 2023more...

NEW RELEASE: RAD Studio/Delphi 12.0.0 Athens version of all the libraries has been released!

March 9, 2022more...

NEW RELEASE: Updated RAD Studio/Delphi 10.4 Sydney version of all the libraries has been released!

March 7, 2022more...

NEW RELEASE: Updated RAD Studio/Delphi 10.3 Rio version of all the libraries has been released!

March 2, 2022more...

NEW RELEASE: Updated RAD Studio/Delphi 11.0 Alexandria version of all the libraries has been released!

January 28, 2022more...

NEW RELEASE: Updated RAD Studio/Delphi 10.4.2 Sydney version of all the libraries has been released!

January 28, 2022more...

NEW! OpenWire Studio version Beta 8.0.0.48 is released.

December 21, 2021more...

NEW RELEASE: Updated RAD Studio/Delphi 11.0.0 Alexandria version of all the libraries has been released!

October 11, 2021more...

NEW RELEASE: RAD Studio/Delphi 11.0 Alexandria version of all the libraries has been released!

May 12, 2021more...

NEW RELEASE: RAD Studio/Delphi 10.4.2 Sydney version of all the libraries has been released!


More News

Partners

Em
Alliancelogo2

Published

Torry_logo