About OpenWire

What can I build with 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.
 
 
 
 
 
 
 
 
 
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 SourceForge: https://sourceforge.net/projects/openwireproject/ . An SVN repository is used. We are in process of adding all the source files.
 
You can access the SVN repository here: https://openwireproject.svn.sourceforge.net/svnroot/openwireproject directly or by using SVN :
 
svn co https://openwireproject.svn.sourceforge.net/svnroot/openwireproject openwireproject
 
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 XE4 to 10.1 Berlin), an MFC compatible Visual C++ version, and a .NET 2.0 and 4.0 (4.5 and 4.6 compatible) supporting Visual Studio 2005 to 2015.
 
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 2.0 and 4.0 (4.5 and 4.6 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!

Features

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 7.8.2.271 (released on 2018-11-12)

  1. Added Linux support
  2. Added iOS support
  3. Added RAD Studio 10.2 Tokyo support
  4. Improved MAC, and Android compatibility
  5. Pins converted to use the new Mitov.Runtime serialization
  6. Added OWRequiredPinAttribute support
  7. Added TOWIntToCardinalFormatConverter and TOWCardinalToIntegerFormatConverter
  8. Added TOWRealToRealComplexFormatConverter
  9. Added TOWRealListStatePin and TOWIntegerListStatePin
  10. Added Execute Process
  11. Added Command Line parsing and Process Execute
  12. Added option to disable the design time extentions
  13. Added Socket Binding
  14. Redesigned JSON Serialization
  15. Added TPeriodicThread
  16. Added initial Dynamic Type Info implementation
  17. Added GetIndexedSubProperty in the RTTI
  18. Added GetType for TObject in the RTTI
  19. Added support for both object and class in TMethodInfo.Invoke in the RTTI
  20. Enchanced Query functionality
  21. Added IPairCollection
  22. IArrayWriter renamed to ISequentialWriter
  23. IArrayReader renamed to ISequentialReader
  24. Improved Serialization Readers
  25. Added Reserialize
  26. Improved design time property editors support
  27. Added option to replace property collection items while keeping all compatible settings
  28. Added filtering for property collections
  29. Added support for categorized list property selection
  30. Added TreeView filtering support
  31. Updated to use the latest Delphi language features

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

  1. Added RAD Studio 10.1 Berlin support
  2. Added Reset to Default property editors
  3. Added Enum property editors
  4. Added Class events property editors
  5. Added Multi-Event property editors
  6. Added Make/Split Structure components
 

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

  1. Added 10 Seattle support
  2. Added support for VS2015
  3. Added TOWBoolToIntFormatConverter
  4. Improved threading support
  5. Improved OpenWire Editor
  6. Clock pins changed to MiltiSink
  7. Improved Design Time Editors
  8. Improved JSON support
  9. Improved collections
  10. Added more Live Binding types
  11. Added support for hosting OpenWire Studio projects
  12. Added serialization support in the buffers

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

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

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

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

 

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

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

 

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

  1. Added support for Delphi / C++ Builder / RAD Studio XE3
  2. Improved Visual Live Binding support
  3. Improved FireMonkey support
  4. Added support for Visual Studio 2012

 

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

  1. Added 64 bit support for VCL, FireMonkey

 

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

  1. Added FireMonkey support.
  2. Updated documentation.

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

  1. Added Delphi and C++ Builder XE and XE2 support.
  2. Improved Lazarus support.
  3. 64 bit compatible.
  4. Improved threading support.
  5. Added expandable editors support.

New in Version 4.5

  1. TOWMultiSinkPins added.
  2. Improved pin editors.
  3. Fully Lazarus compatible under Windows.

New in Version 4.3.1

  1. Updated install.
  2. Fixed pin list editors for RAD 2010.

New in Version 4.3

  1. Added RAD Studio 2010 support.

New in Version 4.0.1

  1. Improved installs.

New in Version 4.0

  1. Added C++ Builder 2009 support.
  2. Added Format Converters.
  3. Added Lazarus support for Windows, and Linux.
  4. New threading lock mechanism.
  5. Added debug subscription support.

New in Version 3.1

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

New in Version 3.0

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

New in Version 2.6.1

  1. Fixed a conflict with TChart.

New in Version 2.6

  1. Added Delphi and C++ Builder 2006 support.

New in Version 2.5

  1. Improved multithreading support.

New in Version 2.4

  1. OpenWire has a new full multithreading support implemented.
  2. New Delphi 2005 support.

 

Click to view Larger images. )

OpenWire EXAMPLES

These demos are executable after downloading.

[table id=22 /]

 

OPENWIRE FREQUENTLY ASKED QUESTIONS

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

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

Can I write multithreading applications using OpenWire? Is it multithreading safe?

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

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

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 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 109 times.

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 1717 times.

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 866 times.

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 3589 times.

Firemonkey and VCL Installer: OpenWire 7.5.0.0 VCL and FireMonkey 32 & 64 bit support for XE4 to XE7

Updated on 2014-11-18, downloaded 3354 times.

Firemonkey and VCL Installer: OpenWire 7.0.0.0 VCL and FireMonkey 32 & 64 bit support for XE3 to XE6

Updated on 2014-04-21, downloaded 1325 times.

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-12, downloaded 8062 times.

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-13, downloaded 2422 times.

Firemonkey and VCL Installer: OpenWire 5.0.1 for Delphi/C++ Builder 5 to 2009

Updated on 2011-10-18, downloaded 69373 times.

 

DEMOS

 

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

 

 

Mitov License

 

If you do not have a custom licensing agreement with Mitov Software then the following license applies:
 
     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.
See the Features Tab for more detail.

Also, we offer custom licensing and vertical development of the OpenWire.  Please direct any questions about custom licensing to Boian Mitov ( mitov@mitov.com ).

PurchaseAll Products Page

 

[otw_is sidebar=otw-sidebar-1]