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 Video processing application with user interface and file selection dialog, written with zero lines of code. Really! The buttons, CheckBoxes, LEDs, the VideoPlayer, the filters and displays handle -- 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
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.
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 unerlying 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 componets -- and Mitov Software offers a vast array of custom componets 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:
OpenWire: Frequently Asked Questions
Q: 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.
Q: 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.
Q: 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.
Firemonkey and VCL Installer:
OpenWire 5.0.3 VCL and FireMonkey (Windows only) 32 and 64 bit support for 2010 to XE3
Updated on 2012-10-10, downloaded 1104 times.
Legacy VCL Installer:
OpenWire 5.0.1 for Delphi/C++ Builder 5 to 2009
Updated on 2011-10-18, downloaded 21173 times.
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
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
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