ACOP.NET API
ACOP.NET API Documentation
AcopNetLogo.jpg

Easily configure applications with minimal or no programming on the part of the developer. It's as easy as ...

Acop123.jpg

Current Release level: 3.8.9

General Information

The ACOP components you use to build your application can be used purely in a GUI designer environment, such as any variety of Visual Studio (the Community Edition is free!) or WinForms. In this capacity, the ACOP API consists of design-time properties which can be set in the GUI designer.

AcopComponents.jpg

Acop Components in the Designer

The ACOP components can also be used in a purely programming environment. In this case the choice of the .NET language you make establishes the kind of code you will be writing. Likewise, the choice of programming language is important if at any stage you (or someone else) intends to extend the design-time configured application. This can be as simple a thing as responding to an event (a mouse click, a data update) with instructions to accomplish a specific task. The differences between, say C# and Visual Basic, are often at the syntax level. However some developers might simply be more comforable with one language.

Some developers might like to have full control over each and every variable that the application utilizes and thus code every aspect of the application explicitly.

Others might simply wish to accomplish a straightforward display or control task quickly and avoid even looking at anything the designer may have generated ...

AcopCodingOptions.jpg

is also important to realize that even if you remain in a purely configured environment, your finished application is still a compiled executable! In other words, your configured property settings and runtime instructions are not kept in an XML file but are in fact maintained in a code module (even if you didn't write any of the code yourself).
Thus choosing the language you're not going to program in might become relevant if at a later stage you or someone else would like to add specific program logic into the application.

Component Categories

Acop.Transport

All ACOP GUI displayers offer a common set of control system transport properties. Thus in the GUI designer property grid, the category Acop.Transport properties will, with some exceptions, generally be available for each and every control.

AcopTransportPropertyGrid.jpg

Acop Transport Properties

AddressEditor is a modal editor which can assign values to most of the other Acop Transport properties
ApplyAcopLinkUpdateAfterUpdate: if set to true then a user supplied update delegate will be called after the auto display update (AutoLinkUpdate = true) has occured.
ApplyEventOrder (exclusive, before, after) determines the call order of a user supplied event delegate for those components which take input settings (Slider, WheelSwitch, InputBox, Button, Table).

  • exclusive : only the user supplied delegate will be used (default)
  • before : the user supplied event delegate will be called prior to sending the input value to given link address
  • after : the user supplied event delegate will be called following sending the input value to given link address

AutoLinkAttach: if set to true it instructs ACOP to automatically monitor the data provided by LinkAddress and LinkProperty
AutoLinkCapacity: if AutoLinkAttach = true and AutoLinkCapacity = 0 then ACOP will attempt to determine the proper data size to obtain for the LinkAddress and LinkProperty specified. If it is know beforehand that this will result in an array and only a sub-portion of the array is desired (for instance only a single value from a multi-channel array) then the AutoLinkCapacity can be set to the desired data size.
AutoLinkUpdate: if set to true it instructs ACOP to automatically update the GUI component when new data arrive.
AutoMouseMoveToolTip: (Chart only) if not off it instructs ACOP to use the displayed data at the current mouse hover position as a tool-tip text.

  • off : no auto mouse move tooltip (default)
  • drawn_data : mouse move tooltip shows the nearest plotted data values
  • cursor : mouse move tooltip shows the coordinates at the cursor position

AutoScaleUpdate: (Chart only) deterimines the autoscale functionality of the Chart when new data are displayed. The Chart's context menu allows the same set of choices.

  • off : no autoscale (default)
  • once : apply an autoscale only once when the next data set arrives.
  • always: always autoscale.
  • peak_hold: apply an autoscale when the maximum data value has increased.

AutoTrendUpdate: (Chart only) if true (and AutoLinkUpdate = false) then the Chart will display the value associated with the LinkAddress and LinkProperty specified as a trend, where each new data point will be appended to the leading edge of the current display. Makes use of the LinkTrendDepth and LinkTrendHours settings. The initial display will attempt to obtain a history of values in order to fill the desired trend depth.
DefaultMonitorInterval: is the value in milliseconds of the monitor display interval used when AutoLinkAttach = true. (default = 1000).
ErrorValue: if this is non empty, then the value given will be used in any data display when the underlying monitor link has a non-zero status.
LinkAddress: specifies the control system endpoint to which the data link is to be attached. This value is composed of the LinkContext, LinkServer, and LinkDevice properties with separator = "/". An ACOP transport plug which makes use of another separator (e.g. channel access) should be prepared to map such address to and from the ACOP address space.
LinkContext: The top most hierarchical element of the LinkAddress, identifying, e.g. the specific facility.
LinkDevice: The bottom most hierarchical element of the LinkAddress, indentifying e.g. a specific location or device instance.
LinkFlags: Any optional link flags which help to establish the underlying data link. These are often protocol dependent.
LinkGrouped: if set to true it instructs ACOP to make use of a single update event when all underlying data links (should there be more than one) have updated.
LinkInputValue: if this is non empty, then the value given will be used as additional input when establishing the underlying data link.
LinkList: provides a ";" separated list of LinkAddresses to be used when AutoLinkAttach = true. The list should include the LinkAddress + LinkProperty also separated with a "/" for each monitored element. Typically one makes use of the AddressEditor to browse and 'Add' selected link addresses to the ACOP component.
LinkProperty: specifies the target property of the LinkAddress which is to return data to the component.

LinkProtocol: specifies the transport protocol (and hence which transport plug) to make use of when acquiring the given LinkAddress.
LinkServer: The middle hierarchical element of the LinkAddress, indentifying e.g. a specific host process.
LinkSubSystem: An additional browsing element to help reduce the number of LinkServer elements shown in the browsing combo boxes.
LinkTrendDepth: (Chart only) if AutoTrendUpdate = true, the LinkTrendDepth provides the trend buffer size to make use of when displaying the trend (default = 1200 points).
LinkTrendHours: (Chart only) if AutoTrendUpdate = true, the LinkTrendHours provides the trend depth in time to make use of when displaying the trend (default = 24 hours). Note: fractions of an hour can also be given, for instance if it is desired to show a trend of only the last 10 minutes.
ThresholdHighTrip (Chart only) if .NE. 1E100 then threshold violations will be added to the application trip log.
ThresholdLowTrip (Chart only) if .NE. -1E100 then threshold violations will be added to the application trip log.

AcopTransportEventGrid.jpg

Acop Transport Events

Providing and using event delegates for the Acop Component events necessarily implies programming. If the default display actions of the ACOP components are insufficient for the designer's needs, then this would be the proper recourse to action.
acopApply : occurs when an 'Apply' event is triggered from one of the components which can issue commands to change settings (Slider, WheelSwitch, InputBox, Button, Table)
acopLinkError : occurs when the underlying monitored link enters an error state.
acopLinkUpdate : occurs when new data have arrived from the monitored data link(s).

Note that in this respect, the Acop Spider, Acop Chooser, and Acop Link components are not considered GUI displayers, even though they sometimes have a marked overlap with their transport properties.
At design time the most convenient method of browsing and choosing transport related properties is to make use of the Address Editor, which appears at the top of the Acop.Transport section in the ACOP property grid (select it in the grid and then click on the '...' button) :

AcopAddressEditor.jpg

Acop.Display

The component properties available in the Acop.Display category depend strongly on the component in question. This only makes sense, as the ACOP components are GUI displayers and necessarily are designed to display different things.

The most complex ACOP component in this regard is the Chart. Indeed, there are so many Acop.Display properties that these are in turn subdivided into several sub categories.

Other kinds of components might have a large overlap in the Display properties offered (for instance the shapes).

ACOP Documentation

ACOP Download

ACOP Demos and Examples

Check out this simple demo on a simple Acop.NET application.

Or browse through this tutorial.

Some examples : Gallery.

d2cockpit.jpg

DESY2 Cockpit and Overview (some programming)

p3cockpit.jpg

PETRA-3 Cockpit and Overview (some programming)

bunches0.jpg

A bunch current display (a modicum of programming)

motors0.jpg

A motor steering application (very little programming)

spectograms0.jpg

A ground-vibrations display (much programming)

blms0.jpg

A Beam Loss Monitor display (a bit of display programming)

InductiveCurrents0.jpg

Inductive Current Traces (almost no programming)

radmon0.jpg

A Radiation Monitor display (a bit of display programming)


Datenschutzerklaerung   -   Data Privacy Policy
Generated for ACOP.NET API by  doxygen 1.5.8