mega-io: ./branches/IoDrvMEGAIOv2/IoDrvFBMEGAIOv3-user-DESKTOP-RONS391.opt
Bash
bash
(Bash)
Binary file ./branches/IoDrvMEGAIOv2/IoDrvFBMEGAIOv3-user-DESKTOP-RONS391.opt matches
Last updated: 2019-01-04
mega-io: ./branches/IoDrvMEGAIOv2/IoDrvFBMEGAIOv3-AllUsers.opt
Bash
bash
(Bash)
Binary file ./branches/IoDrvMEGAIOv2/IoDrvFBMEGAIOv3-AllUsers.opt matches
Last updated: 2019-01-04
mega-io: ./branches/IoDrvMEGAIOv2/IoDrvMEGAIOv3.devdesc.xml
Bash
bash
(Bash)
<?xml version="1.0" encoding="utf-8"?>
<DeviceDescription xmlns="http://www.3s-software.com/schemas/DeviceDescription-1.0.xsd" xmlns:ts="http://www.3s-software.com/schemas/TargetSettings-0.1.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Types namespace="local">
<StructType name="Channel8BOOL">
<Component identifier="BOOL0" type="std:BOOL">
<Default />
<VisibleName name="Local:Bool0">Bit0</VisibleName>
</Component>
<Component identifier="Bool1" type="std:BOOL">
<Default />
<VisibleName name="Local:Bool1">Bit1</VisibleName>
</Component>
<Component identifier="BOOL2" type="std:BOOL">
<Default />
<VisibleName name="Local:Bool2">Bit2</VisibleName>
</Component>
<Component identifier="BOOL3" type="std:BOOL">
<Default />
<VisibleName name="Local:Bool3">Bit3</VisibleName>
</Component>
<Component identifier="BOOL4" type="std:BOOL">
<Default />
<VisibleName name="Local:Bool4">Bit4</VisibleName>
</Component>
<Component identifier="BOOL5" type="std:BOOL">
<Default />
<VisibleName name="Local:Bool5">Bit5</VisibleName>
</Component>
<Component identifier="BOOL6" type="std:BOOL">
<Default />
<VisibleName name="Local:Bool6">Bit6</VisibleName>
</Component>
<Component identifier="BOOL7" type="std:BOOL">
<Default />
<VisibleName name="Local:Bool7">Bit7</VisibleName>
</Component>
</StructType>
<StructType name="Ch5BOOL">
<Component identifier="Bit0" type="std:BOOL">
<Default />
<VisibleName name="Bit0">Bit0</VisibleName>
</Component>
<Component identifier="Bit1" type="std:BOOL">
<Default />
<VisibleName name="Bit1">Bit1</VisibleName>
</Component>
<Component identifier="Bit2" type="std:BOOL">
<Default />
<VisibleName name="Bit2">Bit2</VisibleName>
</Component>
<Component identifier="Bit3" type="std:BOOL">
<Default />
<VisibleName name="Bit3">Bit3</VisibleName>
</Component>
<Component identifier="Bit4" type="std:BOOL">
<Default />
<VisibleName name="Bit4">Bit4</VisibleName>
</Component>
<Component identifier="Bit5" type="std:BOOL">
<Default />
<VisibleName name="Bit5">Bit5</VisibleName>
</Component>
</StructType>
<StructType name="Ch3BOOL">
<Component identifier="Bit0" type="std:BOOL">
<Default />
<VisibleName name="Bit0">Bit0</VisibleName>
</Component>
<Component identifier="Bit1" type="std:BOOL">
<Default />
<VisibleName name="Bit1">Bit1</VisibleName>
</Component>
<Component identifier="Bit2" type="std:BOOL">
<Default />
<VisibleName name="Bit2">Bit2</VisibleName>
</Component>
<Component identifier="Bit3" type="std:BOOL">
<Default />
<VisibleName name="Bit3">Bit3</VisibleName>
</Component>
</StructType>
<StructType name="Ch8REAL">
<Component identifier="REAL0" type="std:REAL">
<Default />
<VisibleName name="REAL0">REAL0</VisibleName>
</Component>
<Component identifier="REAL1" type="std:REAL">
<Default />
<VisibleName name="REAL1">REAL1</VisibleName>
</Component>
<Component identifier="REAL2" type="std:REAL">
<Default />
<VisibleName name="REAL2">REAL2</VisibleName>
</Component>
<Component identifier="REAL3" type="std:REAL">
<Default />
<VisibleName name="REAL3">REAL3</VisibleName>
</Component>
<Component identifier="REAL4" type="std:REAL">
<Default />
<VisibleName name="REAL4">REAL4</VisibleName>
</Component>
<Component identifier="REAL5" type="std:REAL">
<Default />
<VisibleName name="REAL5">REAL5</VisibleName>
</Component>
<Component identifier="REAL6" type="std:REAL">
<Default />
<VisibleName name="REAL6">REAL6</VisibleName>
</Component>
<Component identifier="REAL7" type="std:REAL">
<Default />
<VisibleName name="REAL7">REAL7</VisibleName>
</Component>
</StructType>
<StructType name="Ch8UINT">
<Component identifier="UINT0" type="std:UINT">
<Default />
<VisibleName name="UINT0">UINT0</VisibleName>
</Component>
<Component identifier="UINT1" type="std:UINT">
<Default />
<VisibleName name="UINT1">UINT1</VisibleName>
</Component>
<Component identifier="UINT2" type="std:UINT">
<Default />
<VisibleName name="UINT2">UINT2</VisibleName>
</Component>
<Component identifier="UINT3" type="std:UINT">
<Default />
<VisibleName name="UINT3">UINT3</VisibleName>
</Component>
<Component identifier="UINT4" type="std:UINT">
<Default />
<VisibleName name="UINT4">UINT4</VisibleName>
</Component>
<Component identifier="UINT5" type="std:UINT">
<Default />
<VisibleName name="UINT5">UINT5</VisibleName>
</Component>
<Component identifier="UINT6" type="std:UINT">
<Default />
<VisibleName name="UINT6">UINT6</VisibleName>
</Component>
<Component identifier="UINT7" type="std:UINT">
<Default />
<VisibleName name="UINT7">UINT7</VisibleName>
</Component>
</StructType>
<StructType name="IoDrvInput">
<Component identifier="dacVoltage" type="std:REAL">
<Default />
<VisibleName name="local:dacVoltageInput">dacVoltage Input</VisibleName>
</Component>
<!--
<Component identifier="relayState" type="local:Channel8BOOL">
<Default />
<VisibleName name="local:relayState">relayState</VisibleName>
</Component>
<Component identifier="openDrainState" type="local:Ch3BOOL">
<Default />
<VisibleName name="openDrain State">openDrain State</VisibleName>
</Component>
<Component identifier="gpioOut" type="local:Ch5BOOL">
<Default />
<VisibleName name="gpioOut">gpioOut</VisibleName>
</Component>
<Component identifier="gpioDir" type="local:Ch5BOOL">
<Default />
<VisibleName name="gpioDir">gpioDir</VisibleName>
</Component>
-->
</StructType>
<StructType name="IoDrvOutput">
<Component identifier="adcVoltages" type="local:Ch8REAL">
<Default />
<VisibleName name="adcVoltages">adcVoltages</VisibleName>
</Component>
<!--
<Component identifier="adcRaw" type="local:Ch8UINT">
<Default />
<VisibleName name="adcRaw">adcRaw</VisibleName>
</Component>
<Component identifier="optoIn" type="local:Channel8BOOL">
<Default />
<VisibleName name="local:optoIn">optoIn</VisibleName>
</Component>
<Component identifier="gpioIn" type="local:Channel8BOOL">
<Default />
<VisibleName name="local:gpioIn">gpioIn</VisibleName>
</Component>
-->
</StructType>
<StructType name="IoDrvConfig">
<Component identifier="I2cAdress" type="std:USINT">
<Default>16#31</Default>
<VisibleName name="local:I2cAdress">I²C address</VisibleName>
<Description name="local:I2cAdress.Desc">Address of the device</Description>
</Component>
<!--
<Component identifier="StackLevel" type="std:USINT">
<Default>16#1</Default>
<VisibleName name="local:StackLevel">StackLevel</VisibleName>
<Description name="local:StackLevel.Desc">Stack level of MegaIO boards (NOT a hat)</Description>
</Component>
-->
</StructType>
</Types>
<Strings namespace="local">
<Language lang="en">
</Language>
</Strings>
<Files namespace="local">
<Language lang="en">
<File fileref="local" identifier="ImageFile">
<LocalFile>device.png</LocalFile>
</File>
<File fileref="local" identifier="Icon">
<LocalFile>device.ico</LocalFile>
</File>
</Language>
</Files>
<Device hideInCatalogue="false">
<DeviceIdentification>
<Type>500</Type>
<Id>0000 0006</Id>
<Version>3.0.0.0</Version>
</DeviceIdentification>
<DeviceInfo>
<Name name="local:ModelName">Raspberry I2C IoDrvMEGAIOv3</Name>
<Description name="local:DeviceDescription">An I/O driver for MEGAIO</Description>
<Vendor name="local:VendorName">Open Source</Vendor>
<OrderNumber>-</OrderNumber>
<Image name="local:ImageFile">device.png</Image>
<Icon name="local:Icon">device.ico</Icon>
</DeviceInfo>
<Connector moduleType="500" interface="Raspberry.I2C" role="child" explicit="false" connectorId="1" hostpath="-1">
<InterfaceName name="local:PCI">I²C-Bus</InterfaceName>
<Slot count="1" allowEmpty="false">
</Slot>
<DriverInfo needsBusCycle="true">
<RequiredLib libname="Raspberry I2C IoDrvMEGAIOv3" vendor="Open Source" version="3.0.0.0" identifier="IoDrvMEGAIOv3">
<FBInstance basename="$(DeviceName)" fbname="IoDrvMEGAIOv3">
<Initialize methodname="Initialize" />
</FBInstance>
</RequiredLib>
</DriverInfo>
<HostParameterSet>
<Parameter ParameterId="1000" type="local:IoDrvInput">
<Attributes channel="input" />
<Name name="local:Input">Input</Name>
</Parameter>
<Parameter ParameterId="2000" type="local:IoDrvOutput">
<Attributes channel="Output" />
<Name name="local:Output">Output</Name>
</Parameter>
<Parameter ParameterId="3000" type="local:IoDrvConfig">
<Attributes channel="none" />
<Name name="local:Config">Config</Name>
</Parameter>
</HostParameterSet>
</Connector>
</Device>
</DeviceDescription>
Last updated: 2019-01-04
mega-io: ./branches/IoDrvMEGAIOv2/IoDrvMEGAIOv2.devdesc.xml
Bash
bash
(Bash)
<?xml version="1.0" encoding="utf-8"?>
<DeviceDescription xmlns="http://www.3s-software.com/schemas/DeviceDescription-1.0.xsd" xmlns:ts="http://www.3s-software.com/schemas/TargetSettings-0.1.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Types namespace="local">
<StructType name="Channel8BOOL">
<Component identifier="BOOL0" type="std:BOOL">
<Default />
<VisibleName name="Local:Bool0">Bit0</VisibleName>
</Component>
<Component identifier="Bool1" type="std:BOOL">
<Default />
<VisibleName name="Local:Bool1">Bit1</VisibleName>
</Component>
<Component identifier="BOOL2" type="std:BOOL">
<Default />
<VisibleName name="Local:Bool2">Bit2</VisibleName>
</Component>
<Component identifier="BOOL3" type="std:BOOL">
<Default />
<VisibleName name="Local:Bool3">Bit3</VisibleName>
</Component>
<Component identifier="BOOL4" type="std:BOOL">
<Default />
<VisibleName name="Local:Bool4">Bit4</VisibleName>
</Component>
<Component identifier="BOOL5" type="std:BOOL">
<Default />
<VisibleName name="Local:Bool5">Bit5</VisibleName>
</Component>
<Component identifier="BOOL6" type="std:BOOL">
<Default />
<VisibleName name="Local:Bool6">Bit6</VisibleName>
</Component>
<Component identifier="BOOL7" type="std:BOOL">
<Default />
<VisibleName name="Local:Bool7">Bit7</VisibleName>
</Component>
</StructType>
<StructType name="Ch5BOOL">
<Component identifier="Bit0" type="std:BOOL">
<Default />
<VisibleName name="Bit0">Bit0</VisibleName>
</Component>
<Component identifier="Bit1" type="std:BOOL">
<Default />
<VisibleName name="Bit1">Bit1</VisibleName>
</Component>
<Component identifier="Bit2" type="std:BOOL">
<Default />
<VisibleName name="Bit2">Bit2</VisibleName>
</Component>
<Component identifier="Bit3" type="std:BOOL">
<Default />
<VisibleName name="Bit3">Bit3</VisibleName>
</Component>
<Component identifier="Bit4" type="std:BOOL">
<Default />
<VisibleName name="Bit4">Bit4</VisibleName>
</Component>
<Component identifier="Bit5" type="std:BOOL">
<Default />
<VisibleName name="Bit5">Bit5</VisibleName>
</Component>
</StructType>
<StructType name="Ch3BOOL">
<Component identifier="Bit0" type="std:BOOL">
<Default />
<VisibleName name="Bit0">Bit0</VisibleName>
</Component>
<Component identifier="Bit1" type="std:BOOL">
<Default />
<VisibleName name="Bit1">Bit1</VisibleName>
</Component>
<Component identifier="Bit2" type="std:BOOL">
<Default />
<VisibleName name="Bit2">Bit2</VisibleName>
</Component>
<Component identifier="Bit3" type="std:BOOL">
<Default />
<VisibleName name="Bit3">Bit3</VisibleName>
</Component>
</StructType>
<StructType name="Ch8REAL">
<Component identifier="REAL0" type="std:REAL">
<Default />
<VisibleName name="REAL0">REAL0</VisibleName>
</Component>
<Component identifier="REAL1" type="std:REAL">
<Default />
<VisibleName name="REAL1">REAL1</VisibleName>
</Component>
<Component identifier="REAL2" type="std:REAL">
<Default />
<VisibleName name="REAL2">REAL2</VisibleName>
</Component>
<Component identifier="REAL3" type="std:REAL">
<Default />
<VisibleName name="REAL3">REAL3</VisibleName>
</Component>
<Component identifier="REAL4" type="std:REAL">
<Default />
<VisibleName name="REAL4">REAL4</VisibleName>
</Component>
<Component identifier="REAL5" type="std:REAL">
<Default />
<VisibleName name="REAL5">REAL5</VisibleName>
</Component>
<Component identifier="REAL6" type="std:REAL">
<Default />
<VisibleName name="REAL6">REAL6</VisibleName>
</Component>
<Component identifier="REAL7" type="std:REAL">
<Default />
<VisibleName name="REAL7">REAL7</VisibleName>
</Component>
</StructType>
<StructType name="Ch8UINT">
<Component identifier="UINT0" type="std:UINT">
<Default />
<VisibleName name="UINT0">UINT0</VisibleName>
</Component>
<Component identifier="UINT1" type="std:UINT">
<Default />
<VisibleName name="UINT1">UINT1</VisibleName>
</Component>
<Component identifier="UINT2" type="std:UINT">
<Default />
<VisibleName name="UINT2">UINT2</VisibleName>
</Component>
<Component identifier="UINT3" type="std:UINT">
<Default />
<VisibleName name="UINT3">UINT3</VisibleName>
</Component>
<Component identifier="UINT4" type="std:UINT">
<Default />
<VisibleName name="UINT4">UINT4</VisibleName>
</Component>
<Component identifier="UINT5" type="std:UINT">
<Default />
<VisibleName name="UINT5">UINT5</VisibleName>
</Component>
<Component identifier="UINT6" type="std:UINT">
<Default />
<VisibleName name="UINT6">UINT6</VisibleName>
</Component>
<Component identifier="UINT7" type="std:UINT">
<Default />
<VisibleName name="UINT7">UINT7</VisibleName>
</Component>
</StructType>
<StructType name="IoDrvInput">
<Component identifier="dacVoltage" type="std:REAL">
<Default />
<VisibleName name="local:dacVoltageInput">dacVoltage Input</VisibleName>
</Component>
<Component identifier="relayState" type="local:Channel8BOOL">
<Default />
<VisibleName name="local:relayState">relayState</VisibleName>
</Component>
<Component identifier="openDrainState" type="local:Ch3BOOL">
<Default />
<VisibleName name="openDrain State">openDrain State</VisibleName>
</Component>
<Component identifier="gpioOut" type="local:Ch5BOOL">
<Default />
<VisibleName name="gpioOut">gpioOut</VisibleName>
</Component>
<Component identifier="gpioDir" type="local:Ch5BOOL">
<Default />
<VisibleName name="gpioDir">gpioDir</VisibleName>
</Component>
</StructType>
<StructType name="IoDrvOutput">
<Component identifier="adcVoltages" type="local:Ch8REAL">
<Default />
<VisibleName name="adcVoltages">adcVoltages</VisibleName>
</Component>
<Component identifier="adcRaw" type="local:Ch8UINT">
<Default />
<VisibleName name="adcRaw">adcRaw</VisibleName>
</Component>
<Component identifier="optoIn" type="local:Channel8BOOL">
<Default />
<VisibleName name="local:optoIn">optoIn</VisibleName>
</Component>
<Component identifier="gpioIn" type="local:Channel8BOOL">
<Default />
<VisibleName name="local:gpioIn">gpioIn</VisibleName>
</Component>
</StructType>
<StructType name="IoDrvConfig">
<Component identifier="I2cAdress" type="std:USINT">
<Default>16#31</Default>
<VisibleName name="local:I2cAdress">I²C address</VisibleName>
<Description name="local:I2cAdress.Desc">Address of the device</Description>
</Component>
<!--
<Component identifier="StackLevel" type="std:USINT">
<Default>16#1</Default>
<VisibleName name="local:StackLevel">StackLevel</VisibleName>
<Description name="local:StackLevel.Desc">Stack level of MegaIO boards (NOT a hat)</Description>
</Component>
-->
</StructType>
</Types>
<Strings namespace="local">
<Language lang="en">
</Language>
</Strings>
<Files namespace="local">
<Language lang="en">
<File fileref="local" identifier="ImageFile">
<LocalFile>device.png</LocalFile>
</File>
<File fileref="local" identifier="Icon">
<LocalFile>device.ico</LocalFile>
</File>
</Language>
</Files>
<Device hideInCatalogue="false">
<DeviceIdentification>
<Type>500</Type>
<Id>0000 0006</Id>
<Version>2.0.0.0</Version>
</DeviceIdentification>
<DeviceInfo>
<Name name="local:ModelName">IoDrvMEGAIOv2</Name>
<Description name="local:DeviceDescription">An I/O driver for MEGAIO</Description>
<Vendor name="local:VendorName">Open Source</Vendor>
<OrderNumber>-</OrderNumber>
<Image name="local:ImageFile">device.png</Image>
<Icon name="local:Icon">device.ico</Icon>
</DeviceInfo>
<Connector moduleType="500" interface="Raspberry.I2C" role="child" explicit="false" connectorId="1" hostpath="-1">
<InterfaceName name="local:PCI">I²C-Bus</InterfaceName>
<Slot count="1" allowEmpty="false">
</Slot>
<DriverInfo needsBusCycle="true">
<RequiredLib libname="Raspberry I2C IoDrvMEGAIOv2" vendor="Open Source" version="2.0.0.0" identifier="IoDrvMEGAIOv2">
<FBInstance basename="$(DeviceName)" fbname="IoDrvMEGAIOv2">
<Initialize methodname="Initialize" />
</FBInstance>
</RequiredLib>
</DriverInfo>
<HostParameterSet>
<Parameter ParameterId="1000" type="local:IoDrvInput">
<Attributes channel="input" />
<Name name="local:Input">Input</Name>
</Parameter>
<Parameter ParameterId="2000" type="local:IoDrvOutput">
<Attributes channel="Output" />
<Name name="local:Output">Output</Name>
</Parameter>
<Parameter ParameterId="3000" type="local:IoDrvConfig">
<Attributes channel="none" />
<Name name="local:Config">Config</Name>
</Parameter>
</HostParameterSet>
</Connector>
</Device>
</DeviceDescription>
Last updated: 2019-01-04
mega-io: ./branches/IoDrvMEGAIOv2/IoDrvMegaIOv3Example-user-DESKTOP-RONS391.opt
Bash
bash
(Bash)
Binary file ./branches/IoDrvMEGAIOv2/IoDrvMegaIOv3Example-user-DESKTOP-RONS391.opt matches
Last updated: 2019-01-04
mega-io: ./branches/IoDrvMEGAIOv2/IoDrvMegaIOv2Example-user-DESKTOP-RONS391.opt
Bash
bash
(Bash)
Binary file ./branches/IoDrvMEGAIOv2/IoDrvMegaIOv2Example-user-DESKTOP-RONS391.opt matches
Last updated: 2019-01-04
mega-io: ./branches/IoDrvMEGAIOv2/IoDrvMEGAIOv2-user-DESKTOP-RONS391.opt
Bash
bash
(Bash)
Binary file ./branches/IoDrvMEGAIOv2/IoDrvMEGAIOv2-user-DESKTOP-RONS391.opt matches
Last updated: 2019-01-04
mega-io: ./branches/IoDrvMEGAIOv2/IoDrvMegaIOv3Example-AllUsers.opt
Bash
bash
(Bash)
Binary file ./branches/IoDrvMEGAIOv2/IoDrvMegaIOv3Example-AllUsers.opt matches
Last updated: 2019-01-04
mega-io: ./branches/IoDrvMEGAIOv2/IoDrvMegaIOv2Example-AllUsers.opt
Bash
bash
(Bash)
Binary file ./branches/IoDrvMEGAIOv2/IoDrvMegaIOv2Example-AllUsers.opt matches
Last updated: 2019-01-04
mega-io: ./branches/IoDrvMEGAIOv2/IoDrvMEGAIOv2-AllUsers.opt
Bash
bash
(Bash)
Binary file ./branches/IoDrvMEGAIOv2/IoDrvMEGAIOv2-AllUsers.opt matches
Last updated: 2019-01-04
mega-io: ./trunk/IoDrvMEGAIO.devdesc.xml
Bash
bash
(Bash)
<?xml version="1.0" encoding="utf-8"?>
<DeviceDescription xmlns="http://www.3s-software.com/schemas/DeviceDescription-1.0.xsd" xmlns:ts="http://www.3s-software.com/schemas/TargetSettings-0.1.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Types namespace="local">
<StructType name="Channel8BOOL">
<Component identifier="BOOL0" type="std:BOOL">
<Default />
<VisibleName name="Local:Bool0">Bit0</VisibleName>
</Component>
<Component identifier="Bool1" type="std:BOOL">
<Default />
<VisibleName name="Local:Bool1">Bit1</VisibleName>
</Component>
<Component identifier="BOOL2" type="std:BOOL">
<Default />
<VisibleName name="Local:Bool2">Bit2</VisibleName>
</Component>
<Component identifier="BOOL3" type="std:BOOL">
<Default />
<VisibleName name="Local:Bool3">Bit3</VisibleName>
</Component>
<Component identifier="BOOL4" type="std:BOOL">
<Default />
<VisibleName name="Local:Bool4">Bit4</VisibleName>
</Component>
<Component identifier="BOOL5" type="std:BOOL">
<Default />
<VisibleName name="Local:Bool5">Bit5</VisibleName>
</Component>
<Component identifier="BOOL6" type="std:BOOL">
<Default />
<VisibleName name="Local:Bool6">Bit6</VisibleName>
</Component>
<Component identifier="BOOL7" type="std:BOOL">
<Default />
<VisibleName name="Local:Bool7">Bit7</VisibleName>
</Component>
</StructType>
<StructType name="Ch5BOOL">
<Component identifier="Bit0" type="std:BOOL">
<Default />
<VisibleName name="Bit0">Bit0</VisibleName>
</Component>
<Component identifier="Bit1" type="std:BOOL">
<Default />
<VisibleName name="Bit1">Bit1</VisibleName>
</Component>
<Component identifier="Bit2" type="std:BOOL">
<Default />
<VisibleName name="Bit2">Bit2</VisibleName>
</Component>
<Component identifier="Bit3" type="std:BOOL">
<Default />
<VisibleName name="Bit3">Bit3</VisibleName>
</Component>
<Component identifier="Bit4" type="std:BOOL">
<Default />
<VisibleName name="Bit4">Bit4</VisibleName>
</Component>
<Component identifier="Bit5" type="std:BOOL">
<Default />
<VisibleName name="Bit5">Bit5</VisibleName>
</Component>
</StructType>
<StructType name="Ch3BOOL">
<Component identifier="Bit0" type="std:BOOL">
<Default />
<VisibleName name="Bit0">Bit0</VisibleName>
</Component>
<Component identifier="Bit1" type="std:BOOL">
<Default />
<VisibleName name="Bit1">Bit1</VisibleName>
</Component>
<Component identifier="Bit2" type="std:BOOL">
<Default />
<VisibleName name="Bit2">Bit2</VisibleName>
</Component>
<Component identifier="Bit3" type="std:BOOL">
<Default />
<VisibleName name="Bit3">Bit3</VisibleName>
</Component>
</StructType>
<StructType name="Ch8REAL">
<Component identifier="REAL0" type="std:REAL">
<Default />
<VisibleName name="REAL0">REAL0</VisibleName>
</Component>
<Component identifier="REAL1" type="std:REAL">
<Default />
<VisibleName name="REAL1">REAL1</VisibleName>
</Component>
<Component identifier="REAL2" type="std:REAL">
<Default />
<VisibleName name="REAL2">REAL2</VisibleName>
</Component>
<Component identifier="REAL3" type="std:REAL">
<Default />
<VisibleName name="REAL3">REAL3</VisibleName>
</Component>
<Component identifier="REAL4" type="std:REAL">
<Default />
<VisibleName name="REAL4">REAL4</VisibleName>
</Component>
<Component identifier="REAL5" type="std:REAL">
<Default />
<VisibleName name="REAL5">REAL5</VisibleName>
</Component>
<Component identifier="REAL6" type="std:REAL">
<Default />
<VisibleName name="REAL6">REAL6</VisibleName>
</Component>
<Component identifier="REAL7" type="std:REAL">
<Default />
<VisibleName name="REAL7">REAL7</VisibleName>
</Component>
</StructType>
<StructType name="Ch8UINT">
<Component identifier="UINT0" type="std:UINT">
<Default />
<VisibleName name="UINT0">UINT0</VisibleName>
</Component>
<Component identifier="UINT1" type="std:UINT">
<Default />
<VisibleName name="UINT1">UINT1</VisibleName>
</Component>
<Component identifier="UINT2" type="std:UINT">
<Default />
<VisibleName name="UINT2">UINT2</VisibleName>
</Component>
<Component identifier="UINT3" type="std:UINT">
<Default />
<VisibleName name="UINT3">UINT3</VisibleName>
</Component>
<Component identifier="UINT4" type="std:UINT">
<Default />
<VisibleName name="UINT4">UINT4</VisibleName>
</Component>
<Component identifier="UINT5" type="std:UINT">
<Default />
<VisibleName name="UINT5">UINT5</VisibleName>
</Component>
<Component identifier="UINT6" type="std:UINT">
<Default />
<VisibleName name="UINT6">UINT6</VisibleName>
</Component>
<Component identifier="UINT7" type="std:UINT">
<Default />
<VisibleName name="UINT7">UINT7</VisibleName>
</Component>
</StructType>
<StructType name="IoDrvInput">
<Component identifier="dacVoltage" type="std:REAL">
<Default />
<VisibleName name="local:dacVoltageInput">dacVoltage Input</VisibleName>
</Component>
<Component identifier="relayState" type="local:Channel8BOOL">
<Default />
<VisibleName name="local:relayState">relayState</VisibleName>
</Component>
<Component identifier="openDrainState" type="local:Ch3BOOL">
<Default />
<VisibleName name="openDrain State">openDrain State</VisibleName>
</Component>
<Component identifier="gpioOut" type="local:Ch5BOOL">
<Default />
<VisibleName name="gpioOut">gpioOut</VisibleName>
</Component>
<Component identifier="gpioDir" type="local:Ch5BOOL">
<Default />
<VisibleName name="gpioDir">gpioDir</VisibleName>
</Component>
</StructType>
<StructType name="IoDrvOutput">
<Component identifier="adcVoltages" type="local:Ch8REAL">
<Default />
<VisibleName name="adcVoltages">adcVoltages</VisibleName>
</Component>
<Component identifier="adcRaw" type="local:Ch8UINT">
<Default />
<VisibleName name="adcRaw">adcRaw</VisibleName>
</Component>
<Component identifier="optoIn" type="local:Channel8BOOL">
<Default />
<VisibleName name="local:optoIn">optoIn</VisibleName>
</Component>
<Component identifier="gpioIn" type="local:Channel8BOOL">
<Default />
<VisibleName name="local:gpioIn">gpioIn</VisibleName>
</Component>
</StructType>
<StructType name="IoDrvConfig">
<Component identifier="I2cAdress" type="std:USINT">
<Default>16#31</Default>
<VisibleName name="local:I2cAdress">I²C address</VisibleName>
<Description name="local:I2cAdress.Desc">Address of the device</Description>
</Component>
<!--
<Component identifier="StackLevel" type="std:USINT">
<Default>16#1</Default>
<VisibleName name="local:StackLevel">StackLevel</VisibleName>
<Description name="local:StackLevel.Desc">Stack level of MegaIO boards (NOT a hat)</Description>
</Component>
-->
</StructType>
</Types>
<Strings namespace="local">
<Language lang="en">
</Language>
</Strings>
<Files namespace="local">
<Language lang="en">
<File fileref="local" identifier="ImageFile">
<LocalFile>device.png</LocalFile>
</File>
<File fileref="local" identifier="Icon">
<LocalFile>device.ico</LocalFile>
</File>
</Language>
</Files>
<Device hideInCatalogue="false">
<DeviceIdentification>
<Type>501</Type>
<!--
<Id>0004 0006</Id>
-->
<Id>0004</Id>
<Version>2.0.0.0</Version>
</DeviceIdentification>
<DeviceInfo>
<Name name="local:ModelName">IoDrvMEGAIO</Name>
<Description name="local:DeviceDescription">An I/O driver for MEGAIO</Description>
<Vendor name="local:VendorName">Open Source</Vendor>
<OrderNumber>-</OrderNumber>
<Image name="local:ImageFile">device.png</Image>
<Icon name="local:Icon">device.ico</Icon>
</DeviceInfo>
<Connector moduleType="500" interface="Raspberry.I2C" role="child" explicit="false" connectorId="1" hostpath="-1">
<InterfaceName name="local:PCI">I2C devices</InterfaceName>
<Slot count="1" allowEmpty="false"></Slot>
<DriverInfo needsBusCycle="true">
<RequiredLib libname="IoDrvMEGAIO" vendor="Open Source" version="2.0.0.0" identifier="IoDrvMEGAIO">
<FBInstance basename="$(DeviceName)" fbname="IoDrvMEGAIO">
<Initialize methodname="Initialize" />
</FBInstance>
</RequiredLib>
</DriverInfo>
<HostParameterSet>
<Parameter ParameterId="1000" type="local:IoDrvInput">
<Attributes channel="input" />
<Name name="local:Input">Input</Name>
</Parameter>
<Parameter ParameterId="2000" type="local:IoDrvOutput">
<Attributes channel="Output" />
<Name name="local:Output">Output</Name>
</Parameter>
<Parameter ParameterId="3000" type="local:IoDrvConfig">
<Attributes channel="none" />
<Name name="local:Config">Config</Name>
</Parameter>
</HostParameterSet>
</Connector>
</Device>
</DeviceDescription>
Last updated: 2019-01-04
mega-io: ./trunk/IoDrvMegaIOExamples-user-DESKTOP-RONS391.opt
Bash
bash
(Bash)
Binary file ./trunk/IoDrvMegaIOExamples-user-DESKTOP-RONS391.opt matches
Last updated: 2019-01-04
mega-io: ./trunk/IoDrvMegaIOExamples-AllUsers.opt
Bash
bash
(Bash)
Binary file ./trunk/IoDrvMegaIOExamples-AllUsers.opt matches
Last updated: 2019-01-03
mega-io: ./IoDrvMEGAIO-user-DESKTOP-RONS391.opt
Bash
bash
(Bash)
Binary file ./IoDrvMEGAIO-user-DESKTOP-RONS391.opt matches
Last updated: 2019-01-04
mega-io: ./IoDrvMEGAIO-AllUsers.opt
Bash
bash
(Bash)
Binary file ./IoDrvMEGAIO-AllUsers.opt matches
Last updated: 2019-01-03
codesys-4-linux: ./trunk/c4l/install.sh
Bash
bash
(Bash)
#!/bin/bash
################################################################################
# Copyright 2017 Ingo Hornberger <ingo_@gmx.net>
#
# This software is licensed under the MIT License
#
# Permission is hereby granted, free of charge, to any person obtaining a copy of this
# software and associated documentation files (the "Software"), to deal in the Software
# without restriction, including without limitation the rights to use, copy, modify,
# merge, publish, distribute, sublicense, and/or sell copies of the Software, and to
# permit persons to whom the Software is furnished to do so, subject to the following
# conditions:
#
# The above copyright notice and this permission notice shall be included in all copies
# or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
# INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
# PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
# OR OTHER DEALINGS IN THE SOFTWARE.
#
################################################################################
CDS_LINK="https://store.codesys.com/ftp_download/3S/CODESYS/300000/3.5.14.0/CODESYS%203.5.14.0.exe"
TRICKS_LINK="https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks"
export WINEPREFIX=~/.wine.cds
export WINEARCH=win32
# kill current and subprocesses on exit
trap "kill 0" EXIT
# this should be running in the background to close rundll32 dialogs
function handle_rundll
{
while true; do
#
# rundll32 error
#
while ! xdotool search --name 'rundll32'; do
sleep 1
done
echo "rundll32 error found"
(
# next
sleep 2
echo "-> sending key sequence"
xdotool key "Tab"; xdotool key "space";
)
sleep 1
done
}
function handle_codemeter
{
while true; do
#
# CodeMeter setup
#
while ! xdotool search --name 'codemeter'; do
sleep 1
done
echo "codemeter found"
(
# next
sleep 5
echo "-> sending key sequence"
xdotool key "space";
# check license
sleep 1
xdotool key "space";
# next
sleep 1
xdotool key "Tab"; xdotool key "Tab"; xdotool key "space";
# next
sleep 1
xdotool key "Tab"; xdotool key "Tab"; xdotool key "Tab"; xdotool key "Tab"; xdotool key "space";
# next
sleep 1
xdotool key "Tab"; xdotool key "Tab"; xdotool key "Tab"; xdotool key "Tab"; xdotool key "Tab"; xdotool key "space";
# install
sleep 1
xdotool key "space";
# finish
sleep 5
xdotool key "space";
)
sleep 1
done
}
function kill_systray
{
while true; do
while ! pgrep -f SysTray.exe; do
sleep 1
done
echo "SysTrays running - kill them..."
pgrep -f SysTray.exe | xargs -n 1 kill
sleep 1
done
}
function get
{
wget --output-document=setup.exe -c "${CDS_LINK}"
wget --output-document=winetricks -c "${TRICKS_LINK}"
chmod 755 winetricks
}
function prereq
{
echo -n "Checking prerequisite 'wine-development'"
if which wine-development; then
echo "=> OK"
else
echo "ERROR: Please install wine32-development and wine64-development"
exit 1
fi
}
function switch_to_win7
{
# call wine to create new WINEPREFIX
wine-development dir
sleep 5
# patch win version
cp system.reg ${WINEPREFIX}
}
function winetricks
{
./winetricks -q vcrun2005 vcrun2008 vcrun2013 vcrun2015 dotnet46
wineserver-development -w
./winetricks nocrashdialog
wineserver-development -w
}
function install
{
wine-development setup.exe /v/qn /s /v'INSTALLDIR=C:\\CODESYS' /v"ADDLOCAL=Basic,CODESYS" /v"CDS_INSTALL_SERVICES=0"
wineserver-development -w
}
function post_install
{
wine-development reg add "HKLM\\Software\\Microsoft\\Windows NT\\CurrentVersion\\ProfileList\\S-1-5-21-0-0-0-1000"
wineserver-development -w
}
no_check="y"
no_dl="y"
no_winetricks="y"
no_install="y"
no_postinstall="y"
no_xvfb="y"
case ${1} in
--winetricks)
no_winetricks=""
;;
--install)
no_install=""
;;
--postinstall)
no_postinstall=""
;;
--xvfb)
no_check=""
no_dl=""
no_winetricks=""
no_install=""
no_postinstall=""
no_xvfb=""
;;
*)
no_check=""
no_dl=""
no_winetricks=""
no_install=""
no_postinstall=""
;;
esac
if [ -z ${no_xvfb} ]; then
echo "=== Start XVFB ==="
export DISPLAY=:99
Xvfb :99 &
jwm &
# install handlers only when automating the installation
# with Xvfb and xdotool
(handle_rundll)&
(handle_codemeter)&
(kill_systray)&
fi
if [ -z ${no_check} ]; then
echo "=== Checking Prerequisites ==="
prereq
fi
if [ -z ${no_dl} ]; then
echo "=== Downloading packets ==="
get
fi
if [ -z ${no_winetricks} ]; then
echo "=== Installing Prerequisites w/ winetricks ==="
winetricks
fi
if [ -z ${no_install} ]; then
echo "=== Installing CODESYS ==="
install
fi
if [ -z ${no_postinstall} ]; then
echo "=== Postinstall Fixups ==="
post_install
if [ -z ${no_install} ]; then
echo "=== Installing CODESYS again ==="
echo "after one complete run + post install, also all *.exe are copied ;)"
install
fi
fi
if [ -z ${no_xvfb} ]; then
echo "=== Kill XVFB ==="
killall -9 Xvfb
fi
exit
Last updated: 2019-03-02
wharfie: ./trunk/wharfie/tests/QEMUTest/Makefile
Bash
bash
(Bash)
ifneq (${VERBOSE},y)
Q=@
endif
OUTPUT_FILE=result.tar
all: result.tar
# RUN sed -i 's,main,main non-free,' /etc/apt/sources.list
A3A7F2A8.piling.tar: debian_armel_stretch.tar
${Q}-mkdir rootfs.piling
${Q}${MAKE} A3A7F2A8.piling.tar_sub || (${SUDO} fuser -k ./rootfs.piling;[ -d ./rootfs.piling/proc ] && ${SUDO} umount ./rootfs.piling/proc;${SUDO} rm -Rf ./rootfs.piling; false)
${Q}-${SUDO} fuser -k ./rootfs.piling;[ -d ./rootfs.piling/proc ] && ${SUDO} umount ./rootfs.piling/proc;${SUDO} rm -Rf ./rootfs.piling
.PHONY: A3A7F2A8.piling.tar_sub
A3A7F2A8.piling.tar_sub:
${Q}${SUDO} rm -f .trg.sh .hst.sh
${Q}echo '******************************'
${Q}echo 'A3A7F2A8.piling.tar: RUN sed -i 's,main,main non-free,' /etc/apt/sources.list'
${Q}echo '******************************'
${Q}(echo -e "#"'!'"/bin/bash\n[ -f ../Wharfile ] && exit 2;\n sed -i 's,main,main non-free,' /etc/apt/sources.list\nexit \$$?\n") | ${SUDO} tee .trg.sh
${Q}${SUDO} chmod a+x .trg.sh
${Q}${SUDO} bash -c "cd rootfs.piling;[ -f ../debian_armel_stretch.tar.snar ] && tar -g ../debian_armel_stretch.tar.snar -xf ../debian_armel_stretch.tar || tar -xf ../debian_armel_stretch.tar;if [ -d proc ]; then mount -t proc proc proc; fi;if [ -f ../.trg.sh ]; then mv ../.trg.sh .; chroot . ./.trg.sh || exit 1; fi; rm -f ./.trg.sh;if [ -d proc ]; then umount proc || umount -l proc; fi;if [ -f ../.hst.sh ]; then ../.hst.sh || exit 1; fi; rm -f ../.hst.sh;[ ! -f ../debian_armel_stretch.tar.snar ] || cp ../debian_armel_stretch.tar.snar ../A3A7F2A8.piling.tar.snar;tar -cf '../A3A7F2A8.piling.tar' .;"
# RUN apt-get update && apt-get install -y --no-install-recommends systemd-sysv dhcpcd5 wpasupplicant kmod wireless-tools net-tools openssh-server python locales python-setuptools python-requests python-pycurl python-crypto python-imaging python-pyxmpp python-jinja2 python-thrift python-feedparser python-beautifulsoup python-pip tesseract-ocr python-beaker unrar gocr python-django git rhino && apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* && pip install Send2Trash
A97EFE49.piling.tar: A3A7F2A8.piling.tar
${Q}-mkdir rootfs.piling
${Q}${MAKE} A97EFE49.piling.tar_sub || (${SUDO} fuser -k ./rootfs.piling;[ -d ./rootfs.piling/proc ] && ${SUDO} umount ./rootfs.piling/proc;${SUDO} rm -Rf ./rootfs.piling; false)
${Q}-${SUDO} fuser -k ./rootfs.piling;[ -d ./rootfs.piling/proc ] && ${SUDO} umount ./rootfs.piling/proc;${SUDO} rm -Rf ./rootfs.piling
.PHONY: A97EFE49.piling.tar_sub
A97EFE49.piling.tar_sub:
${Q}${SUDO} rm -f .trg.sh .hst.sh
${Q}echo '******************************'
${Q}echo 'A97EFE49.piling.tar: RUN apt-get update && apt-get install -y --no-install-recommends systemd-sysv dhcpcd5 wpasupplicant kmod wireless-tools net-tools openssh-server python locales python-setuptools python-requests python-pycurl python-crypto python-imaging python-pyxmpp python-jinja2 python-thrift python-feedparser python-beautifulsoup python-pip tesseract-ocr python-beaker unrar gocr python-django git rhino && apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* && pip install Send2Trash'
${Q}echo '******************************'
${Q}(echo -e "#"'!'"/bin/bash\n[ -f ../Wharfile ] && exit 2;\n apt-get update && apt-get install -y --no-install-recommends systemd-sysv dhcpcd5 wpasupplicant kmod wireless-tools net-tools openssh-server python locales python-setuptools python-requests python-pycurl python-crypto python-imaging python-pyxmpp python-jinja2 python-thrift python-feedparser python-beautifulsoup python-pip tesseract-ocr python-beaker unrar gocr python-django git rhino && apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* && pip install Send2Trash\nexit \$$?\n") | ${SUDO} tee .trg.sh
${Q}${SUDO} chmod a+x .trg.sh
${Q}${SUDO} bash -c "cd rootfs.piling;[ -f ../A3A7F2A8.piling.tar.snar ] && tar -g ../A3A7F2A8.piling.tar.snar -xf ../A3A7F2A8.piling.tar || tar -xf ../A3A7F2A8.piling.tar;if [ -d proc ]; then mount -t proc proc proc; fi;if [ -f ../.trg.sh ]; then mv ../.trg.sh .; chroot . ./.trg.sh || exit 1; fi; rm -f ./.trg.sh;if [ -d proc ]; then umount proc || umount -l proc; fi;if [ -f ../.hst.sh ]; then ../.hst.sh || exit 1; fi; rm -f ../.hst.sh;[ ! -f ../A3A7F2A8.piling.tar.snar ] || cp ../A3A7F2A8.piling.tar.snar ../A97EFE49.piling.tar.snar;tar -cf '../A97EFE49.piling.tar' .;"
# TO result.tar
result.tar: A97EFE49.piling.tar
${Q}-mkdir rootfs.piling
${Q}${MAKE} result.tar_sub || (${SUDO} fuser -k ./rootfs.piling;[ -d ./rootfs.piling/proc ] && ${SUDO} umount ./rootfs.piling/proc;${SUDO} rm -Rf ./rootfs.piling; false)
${Q}-${SUDO} fuser -k ./rootfs.piling;[ -d ./rootfs.piling/proc ] && ${SUDO} umount ./rootfs.piling/proc;${SUDO} rm -Rf ./rootfs.piling
.PHONY: result.tar_sub
result.tar_sub:
${Q}${SUDO} rm -f .trg.sh .hst.sh
${Q}${SUDO} bash -c "cd rootfs.piling;[ -f ../A97EFE49.piling.tar.snar ] && tar -g ../A97EFE49.piling.tar.snar -xf ../A97EFE49.piling.tar || tar -xf ../A97EFE49.piling.tar;if [ -d proc ]; then mount -t proc proc proc; fi;if [ -f ../.trg.sh ]; then mv ../.trg.sh .; chroot . ./.trg.sh || exit 1; fi; rm -f ./.trg.sh;if [ -d proc ]; then umount proc || umount -l proc; fi;if [ -f ../.hst.sh ]; then ../.hst.sh || exit 1; fi; rm -f ../.hst.sh;"
[ ! -f A97EFE49.piling.tar ] || cp A97EFE49.piling.tar result.tar; [ ! -f A97EFE49.piling.tar.snar ] || cp A97EFE49.piling.tar.snar result.tar.snar;
WHARFIE_MK ?= ../../wharfie.mk
include ${WHARFIE_MK}
Last updated: 2018-03-09
wharfie: ./trunk/wharfie/tests/QEMUTest/Wharfile
Bash
bash
(Bash)
#
# This is an example of a Wharfie image
# with pyload. It is derived from the
# docker container writl/pyload
#
FROM debian_armel_stretch
RUN sed -i 's,main,main non-free,' /etc/apt/sources.list
RUN apt-get update && apt-get install -y --no-install-recommends \
systemd-sysv \
dhcpcd5 \
wpasupplicant \
kmod \
wireless-tools \
net-tools \
openssh-server \
python \
locales \
python-setuptools \
python-requests \
python-pycurl \
python-crypto \
python-imaging \
python-pyxmpp \
python-jinja2 \
python-thrift \
python-feedparser \
python-beautifulsoup \
python-pip \
tesseract-ocr \
python-beaker \
unrar \
gocr \
python-django \
git \
rhino \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* \
&& pip install Send2Trash
TO result.tar
Last updated: 2018-03-09
spi-monarco: ./branches/IoDrvMonarco/IoDrvMonarco v2.0.1.3.devdesc.xml
Bash
bash
(Bash)
<?xml version="1.0" encoding="utf-8"?>
<!--created with CoDeSys 3.0 (http://www.3s-software.com) by DeviceDescriptionBuilder (3S-Smart Software Solutions GmbH)-->
<DeviceDescription xmlns="http://www.3s-software.com/schemas/DeviceDescription-1.0.xsd" xmlns:ts="http://www.3s-software.com/schemas/TargetSettings-0.1.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Types namespace="local">
<BitfieldType basetype="std:BYTE" name="TBitStringByte">
<Component identifier="Bit0" type="std:BOOL">
<Default />
<VisibleName name="local:TBitStringByte.Bit0">Bit0</VisibleName>
</Component>
<Component identifier="Bit1" type="std:BOOL">
<Default />
<VisibleName name="local:TBitStringByte.Bit1">Bit1</VisibleName>
</Component>
<Component identifier="Bit2" type="std:BOOL">
<Default />
<VisibleName name="local:TBitStringByte.Bit2">Bit2</VisibleName>
</Component>
<Component identifier="Bit3" type="std:BOOL">
<Default />
<VisibleName name="local:TBitStringByte.Bit3">Bit3</VisibleName>
</Component>
</BitfieldType>
<BitfieldType basetype="std:BYTE" name="TLEDStringByte">
<Component identifier="Led0" type="std:BOOL">
<Default />
<VisibleName name="local:TLEDStringByte.Bit0">Led0</VisibleName>
<Description>FALSE => IO Channel Value, TRUE => User Value</Description>
</Component>
<Component identifier="Led1" type="std:BOOL">
<Default />
<VisibleName name="local:TLEDStringByte.Bit1">Led1</VisibleName>
<Description>FALSE => IO Channel Value, TRUE => User Value</Description>
</Component>
<Component identifier="Led2" type="std:BOOL">
<Default />
<VisibleName name="local:TLEDStringByte.Bit2">Led2</VisibleName>
<Description>FALSE => IO Channel Value, TRUE => User Value</Description>
</Component>
<Component identifier="Led3" type="std:BOOL">
<Default />
<VisibleName name="local:TLEDStringByte.Bit3">Led3</VisibleName>
<Description>FALSE => IO Channel Value, TRUE => User Value</Description>
</Component>
<Component identifier="Led4" type="std:BOOL">
<Default />
<VisibleName name="local:TLEDStringByte.Bit0">Led4</VisibleName>
<Description>FALSE => IO Channel Value, TRUE => User Value</Description>
</Component>
<Component identifier="Led5" type="std:BOOL">
<Default />
<VisibleName name="local:TLEDStringByte.Bit1">Led5</VisibleName>
<Description>FALSE => IO Channel Value, TRUE => User Value</Description>
</Component>
<Component identifier="Led6" type="std:BOOL">
<Default />
<VisibleName name="local:TLEDStringByte.Bit2">Led6</VisibleName>
<Description>FALSE => IO Channel Value, TRUE => User Value</Description>
</Component>
<Component identifier="Led7" type="std:BOOL">
<Default />
<VisibleName name="local:TLEDStringByte.Bit3">Led7</VisibleName>
<Description>FALSE => IO Channel Value, TRUE => User Value</Description>
</Component>
</BitfieldType>
<BitfieldType basetype="std:BYTE" name="TCtrlStringByte">
<Component identifier="Status LED CTRL" type="std:BOOL">
<Default>FALSE</Default>
<VisibleName>Status LED CTRL</VisibleName>
<Description>Status LED indication => TRUE: User controlled, FALSE: System Status Indication</Description>
</Component>
<Component identifier="StatusLEDValue" type="std:BOOL">
<Default>FALSE</Default>
<VisibleName>Status LED Value</VisibleName>
<Description>Only applicable if Status LED CTRL is enabled => TRUE: LED on, FALSE: LED off</Description>
</Component>
<Component identifier="OneWireShutdown" type="std:BOOL">
<Default>FALSE</Default>
<VisibleName>1-Wire power shutdown</VisibleName>
<Description>Useful for bus reset in case of freeze => TRUE: 1-Wire bus power down, FALSE: normal operation</Description>
</Component>
<Component identifier="RESERVED" type="std:BOOL">
<Default>FALSE</Default>
<VisibleName>[RESERVED]</VisibleName>
<Description>RESERVED: Always FALSE</Description>
</Component>
<Component identifier="Counter1Reset" type="std:BOOL">
<Default>FALSE</Default>
<VisibleName>Counter 1 Reset</VisibleName>
<Description>TRUE: COUNTER1 Value reset request, FALSE: normal operation</Description>
</Component>
<Component identifier="Counter2Reset" type="std:BOOL">
<Default>FALSE</Default>
<VisibleName>Counter 2 Reset</VisibleName>
<Description>TRUE: COUNTER2 Value reset request, FALSE: normal operation</Description>
</Component>
<Component identifier="SignOfLife0" type="std:BOOL">
<Default>FALSE</Default>
<VisibleName>[FUTURE]</VisibleName>
<Description>FUTURE: Sign of Life 0/1 - should be incremented with each data transfer as 2bit number low/high bit, used by firmware as health check of SPI Master</Description>
</Component>
<Component identifier="SignOfLife1" type="std:BOOL">
<Default>FALSE</Default>
<VisibleName>[FUTURE]</VisibleName>
<Description>FUTURE: Sign of Life 0/1 - should be incremented with each data transfer as 2bit number low/high bit, used by firmware as health check of SPI Master</Description>
</Component>
</BitfieldType>
<BitfieldType basetype="std:BYTE" name="THWConfigStringByte">
<Component identifier="AIN1Shunt" type="std:BOOL">
<Default>FALSE</Default>
<VisibleName>AIN1 Shunt</VisibleName>
<Description>AIN1 current loop shunt resistor enable (TRUE / FALSE)</Description>
</Component>
<Component identifier="AIN2Shunt" type="std:BOOL">
<Default>FALSE</Default>
<VisibleName>AIN2 Shunt</VisibleName>
<Description>AIN2 current loop shunt resistor enable (TRUE / FALSE)</Description>
</Component>
<Component identifier="RS-485 Termination resistor" type="std:BOOL">
<Default>FALSE</Default>
<VisibleName>RS-485 Termination resistor</VisibleName>
<Description>RS-485 termination resistor enable (TRUE / FALSE)</Description>
</Component>
</BitfieldType>
</Types>
<!--
<HostParameterSet>
<ParameterSection>
<Name name="local:GeneralParameters">Digital In</Name>
<Parameter ParameterId="1000" type="local:TBitStringByte">
<Attributes channel="input"/>
<Name name="local:digin">Digital Inputs</Name>
</Parameter>
</ParameterSection>
<ParameterSection>
<Name name="local:GeneralParameters">Analog In </Name>
<Parameter ParameterId="1100" type="std:WORD">
<Attributes channel="input"/>
<Name name="AI0">AI0</Name>
</Parameter>
<Parameter ParameterId="1101" type="std:WORD">
<Attributes channel="input"/>
<Name name="AI1">AI1</Name>
</Parameter>
</ParameterSection>
<ParameterSection>
<Name name="local:GeneralParameters">Digital Out</Name>
<Parameter ParameterId="2000" type="local:TBitStringByte">
<Attributes channel="output"/>
<Name name="local:digout">Digital Outputs</Name>
</Parameter>
</ParameterSection>
<ParameterSection>
<Name name="local:GeneralParameters">Analog Out </Name>
<Parameter ParameterId="2100" type="std:WORD">
<Attributes channel="output"/>
<Name name="AO0">AO0</Name>
</Parameter>
<Parameter ParameterId="2101" type="std:WORD">
<Attributes channel="output"/>
<Name name="AO1">AO1</Name>
</Parameter>
</ParameterSection>
<ParameterSection>
<Name name="local:GeneralParameters">Control Byte</Name>
<Parameter ParameterId="2200" type="local:TCtrlStringByte">
<Attributes channel="output"/>
<Name name="local:UserLeds">Control Byte</Name>
</Parameter>
</ParameterSection>
<ParameterSection>
<Name name="local:GeneralParameters">HW Config</Name>
<Parameter ParameterId="2300" type="local:THWConfigStringByte">
<Attributes channel="output"/>
<Name name="local:UserLeds">HW Config Byte</Name>
</Parameter>
</ParameterSection>
<ParameterSection>
<Name name="local:GeneralParameters">User Leds</Name>
<Parameter ParameterId="2400" type="local:TLEDStringByte">
<Attributes channel="output"/>
<Name name="local:UserLeds">User Leds Byte</Name>
</Parameter>
</ParameterSection>
</HostParameterSet>
-->
<StructType name="IoDrvInput">
<Component identifier="adcVoltages" type="local:Ch8REAL">
<Default />
<VisibleName name="adcVoltages">adcVoltages</VisibleName>
</Component>
<Component identifier="adcRaw" type="local:Ch8UINT">
<Default />
<VisibleName name="adcRaw">adcRaw</VisibleName>
</Component>
<Component identifier="optoIn" type="local:Channel8BOOL">
<Default />
<VisibleName name="local:optoIn">optoIn</VisibleName>
</Component>
<Component identifier="gpioIn" type="local:Ch5BOOL">
<Default />
<VisibleName name="local:gpioIn">gpioIn</VisibleName>
</Component>
</StructType>
<StructType name="IoDrvOutput">
<Component identifier="dacVoltage" type="std:REAL">
<Default />
<VisibleName name="local:dacVoltageInput">dacVoltage Input</VisibleName>
</Component>
<Component identifier="relayState" type="local:Channel8BOOL">
<Default />
<VisibleName name="local:relayState">relayState</VisibleName>
</Component>
<Component identifier="openDrainState" type="local:OpenDrainState">
<Default />
<VisibleName name="openDrain State">OpenDrain State</VisibleName>
</Component>
<Component identifier="gpioOut" type="local:Ch5BOOL">
<Default />
<VisibleName name="gpioOut">gpioOut</VisibleName>
</Component>
<Component identifier="gpioDir" type="local:Ch5BOOL">
<Default />
<VisibleName name="gpioDir">GPIO Direction</VisibleName>
</Component>
</StructType>
<StructType name="IoDrvConfig">
<!--
<Component identifier="StackLevel" type="std:USINT">
<Default>16#1</Default>
<VisibleName name="local:StackLevel">StackLevel</VisibleName>
<Description name="local:StackLevel.Desc">Stack level of MegaIO boards</Description>
</Component>
-->
<Component identifier="ControlByte="local:TCtrlStringByte">
<VisibleName name="local:ControlByte">Control Byte</VisibleName>
<Description name="local:ControlByte.Desc">Control Byte </Description>
</Component>
<Component identifier="HWConfig="local:THWConfigStringByte">
<VisibleName name="local:HWConfig">HW Config </VisibleName>
<Description name="local:HWConfig.Desc">HW Config Byte</Description>
</Component>
<ParameterSection>
<Name name="local:GeneralParameters">HW Config</Name>
<Parameter ParameterId="2300" type="local:THWConfigStringByte">
<Attributes channel="output"/>
<Name name="local:UserLeds">HW Config Byte</Name>
</Parameter>
</ParameterSection>
</StructType>
<Strings namespace="local">
<Language lang="en"></Language>
</Strings>
<Files namespace="local">
<Language lang="en">
<File fileref="local" identifier="ImageFile">
<LocalFile>device.png</LocalFile>
</File>
<File fileref="local" identifier="Icon">
<LocalFile>device.ico</LocalFile>
</File>
</Language>
</Files>
<Device hideInCatalogue="false" showParamsInDevDescOrder="true">
<DeviceIdentification>
<Type>501</Type>
<Id>0004 0005</Id>
<Version>2.0.1.3</Version>
</DeviceIdentification>
<DeviceInfo>
<Name name="local:ModelName">Monarco HAT</Name>
<Description name="local:DeviceDescription">An I/O driver for Monarco HAT written by Aliazzz</Description>
<Vendor name="local:VendorName">Open Source</Vendor>
<OrderNumber>-</OrderNumber>
<Image name="local:ImageFile">device.png</Image>
<Icon name="local:Icon">device.ico</Icon>
</DeviceInfo>
<Connector moduleType="500" interface="Raspberry.SPI" role="child" explicit="false" connectorId="1" hostpath="-1" alwaysmapping="true">
<InterfaceName name="local:PCI">SPI devices</InterfaceName>
<Slot count="1" allowEmpty="false">
</Slot>
<DriverInfo needsBusCycle="true">
<RequiredLib libname="Monarco HAT library for CODESYS" vendor="Open Source" version="2.0.1.3" identifier="DeviceLib">
<FBInstance basename="$(DeviceName)" fbname="IoDrvMonarco">
<Initialize methodName="Initialize" />
</FBInstance>
</RequiredLib>
</DriverInfo>
<HostParameterSet>
<ParameterSection>
<Name name="local:GeneralParameters">Input Channels</Name>
<Parameter ParameterId="1000" type="local:IoDrvInput">
<Attributes channel="Input" />
<Name name="local:Input">Input Channels</Name>
</Parameter>
</ParameterSection>
<ParameterSection>
<Name name="local:GeneralParameters">Output Channels</Name>
<Parameter ParameterId="2000" type="local:IoDrvOutput">
<Attributes channel="Output" />
<Name name="local:Output">Output Channels</Name>
</Parameter>
</ParameterSection>
<ParameterSection>
<Name name="local:GeneralParameters">Configuration</Name>
<Parameter ParameterId="3000" type="local:IoDrvConfig">
<Attributes channel="none" />
<Name name="local:Config">Configuration</Name>
</Parameter>
</ParameterSection>
</HostParameterSet>
</Connector>
<ExtendedSettings>
<ts:TargetSettings>
<ts:section name="deviceconfiguration">
<ts:setting name="createBitChannels" type="boolean" access="visible">
<ts:value>1</ts:value>
</ts:setting>
</ts:section>
</ts:TargetSettings>
</ExtendedSettings>
</Device>
</DeviceDescription>
Last updated: 2019-01-27
internal-test: ./test3/I2C_Template.library.md
Bash
bash
(Bash)
---
~~~ST
FUNCTION_BLOCK I2CTemplate EXTENDS i2c
VAR_INPUT
lrMinDistance: LREAL;
lrMaxDistance: LREAL;
END_VAR
VAR_OUTPUT
lrDistance: LREAL;
xValid: BOOL;
xNewMeasurement: BOOL;
END_VAR
VAR
timer: TON;
END_VAR
~~~
~~~ST
xNewMeasurement := FALSE;
SUPER^();
CASE _iState OF
0:
IF usiAddress = 0 THEN
usiAddress := 16#70;
END_IF
IF SUPER^.init() THEN
_iState := 5;
END_IF
5:
Timer.pt := T#70MS;
_iState := 10;
xValid := FALSE;
END_CASE
~~~
---
~~~ST
METHOD AfterReadInputs: INT
VAR
Buffer: ARRAY [..] OF ;
len: DINT;
END_VAR
~~~
~~~ST
SUPER^.AfterReadInputs();
IF _iState = 10 THEN
timer(IN:=TRUE);
IF timer.Q THEN
len := Read(ADR(Buffer), 4);
IF len = 4 THEN
lrDistance := BYTE_TO_LREAL(Buffer[2])*0.01 + BYTE_TO_LREAL(Buffer[3]) * 2.56;
xValid := (lrDistance >= lrMinDistance AND lrDistance <= lrMaxDistance);
xNewMeasurement := TRUE;
ELSE
xValid := FALSE;
END_IF
Write8(0, 16#51); //new measurement
timer(IN:=FALSE);
END_IF
END_IF
~~~
---
~~~ST
METHOD BeforeWriteOutputs: INT
~~~
~~~ST
SUPER^.BeforeWriteOutputs();
~~~
Last updated: 2018-06-04
/tol/cforge/android/29
Bash
bash
(Bash)
[#29] CFORGE Tool doesn't work with SP16- released new package
Last updated: 2020-08-11
cforge: ./branches/13-jobs/cforge/cforge/Package/CFORGE/Scripts/action.markdown.py
Bash
bash
(Bash)
# Example Batch:
# set WD=%~d0%~p0
# "C:\Program Files (x86)\3S CODESYS-V3.5.12.0\CODESYS\Common\CODESYS.exe" --profile="CODESYS V3.5 SP12" --runscript="%WD%\action.plcopenxml.export.py" --scriptargs="test.project" --noUI
import sys, os
import os.path
import clr
clr.AddReference("System.Xml")
from System.Xml.Xsl import XslCompiledTransform
scriptpath = os.path.abspath(os.path.dirname(sys.argv[0]))
folder=sys.argv[1].replace("`````", "'")
xslfile=os.path.join(scriptpath, "plcopenxml.xslt")
class ER(ExportReporter):
def error(self, object, message):
system.write_message(Severity.Error, "Error exporting %s: %s" % (object, message))
def warning(self, object, message):
system.write_message(Severity.Warning, "Warning exporting %s: %s" % (object, message))
def nonexportable(self, object):
system.write_message(Severity.Information, "Object not exportable: %s" % object)
@property
def aborting(self):
return False;
# Export all libraries and projects
reporter = ER()
for root, dirs, files in os.walk(folder):
for file in files:
if file.endswith(".library") or file.endswith(".project"):
print("Export project '%s'" % file)
filename=str(os.path.join(root, file))
tempname=str(os.path.join(root, file + ".xml"))
mdname=str(os.path.join(root, file + ".md"))
proj = projects.open(filename)
proj.export_xml(reporter, proj.get_children(False), tempname, recursive = True)
proj.close()
# XSLT transform
print("Transform file with %s" % xslfile)
xsl = XslCompiledTransform()
xsl.Load(xslfile)
xsl.Transform(tempname, mdname)
f = open(mdname, "r")
if f:
c = f.read()
f.close()
f = open(mdname, "w")
if f:
f.write(c[41:]);
f.close()
else:
print("error: file not found '%s'" % file)
system.exit()
Last updated: 2018-09-18
cforge: ./branches/13-jobs/cforge/cforge/Package/CFORGE/Scripts/action.svn.checkout.py
Bash
bash
(Bash)
# Example Batch:
# set WD=%~d0%~p0
# set USER=<username>
# set PASS=<password>
# set URL=https://forge.codesys.com/svn/drv,gpio-mod,code/trunk/GPIOMods
# "C:\Program Files (x86)\3S CODESYS-V3.5.12.0\CODESYS\Common\CODESYS.exe" --profile="CODESYS V3.5 SP12" --runscript="%WD%\action.svn.checkout.py" --scriptargs="%URL% %USER% %PASS% %WD%" --noUI
import sys
import os.path
import pysvn
if len(sys.argv) <= 1:
print("usage: <url> [<user> <pass> <working dir>]")
sys.exit()
url = sys.argv[1].replace("`````", "'")
if len(sys.argv) > 3:
username = sys.argv[2].replace("`````", "'")
password = sys.argv[3].replace("`````", "'")
else:
credentials = system.ui.query_credentials("Enter SVN credentials")
username = credentials[0]
password = credentials[1]
if len(sys.argv) > 4:
path = sys.argv[4].replace("`````", "'")
else:
path = system.ui.browse_directory_dialog("Choose a checkout folder")
def set_username(req):
req.username = username
req.password = password
req.save = True # Optional
# checkout plain SVN files
pysvn.svn_checkout_non_codesys(username, password, url, path)
try:
# get all CODESYS projects
svn.auth_username_password += set_username
cdsprojects = pysvn.svn_get_directories_with_codesys_projects(username, password, url)
# checkout all CODESYS projects
for p in cdsprojects:
dirbase = path + "\\" + p.rstrip('/').replace("/", "\\")
filebase = os.path.basename(dirbase)
dir = os.path.dirname(dirbase)
svn.checkout(url + "/" + p, dir, filebase + ".library")
proj = projects.primary
if proj.find("Project Information"):
proj.save_as(dirbase + ".library")
else:
proj.save_as(dirbase + ".project")
proj.close()
except:
print "Seems like the CODESYS SVN package is missing. Checked out only plain files and no CODESYS projects."
pass
system.exit()
Last updated: 2019-01-25
cforge: ./branches/13-jobs/cforge/cforge/Package/CFORGE/Scripts/action.svn.commit.py
Bash
bash
(Bash)
# Example Batch:
# set WD=%~d0%~p0
# set USER=<username>
# set PASS=<password>
# set URL=https://forge.codesys.com/svn/drv,gpio-mod,code/trunk/GPIOMods
# "C:\Program Files (x86)\3S CODESYS-V3.5.12.0\CODESYS\Common\CODESYS.exe" --profile="CODESYS V3.5 SP12" --runscript="%WD%\action.svn.checkout.py" --scriptargs="%URL% %USER% %PASS% %WD%" --noUI
import sys
import os.path
import pysvn
if len(sys.argv) <= 1:
print("usage: <user> <pass> <working dir>")
sys.exit()
if len(sys.argv) > 2:
username = sys.argv[1].replace("`````", "'")
password = sys.argv[2].replace("`````", "'")
if len(sys.argv) > 3:
path = sys.argv[3].replace("`````", "'")
if len(sys.argv) > 4:
message = " ".join(sys.argv[4:]).replace("`````", "'")
def set_username(req):
req.username = username
req.password = password
req.save = True # Optional
# checkout plain SVN files
pysvn.svn_commit_non_codesys(username, password, path, message)
try:
svn.auth_username_password += set_username
# iterate over all projects and libraries
for root, dirs, files in os.walk(path):
for file in files:
if file.endswith(".project") or file.endswith(".library"):
filepath = os.path.join(root, file)
proj = projects.open(filepath)
proj.svn.commit(message)
proj.save()
proj.close()
except:
print "Seems like the CODESYS SVN package is missing. Checked out only plain files and no CODESYS projects."
pass
system.exit()
Last updated: 2018-09-02
cforge: ./branches/13-jobs/cforge/cforge/Package/CFORGE/Scripts/action.svn.update.py
Bash
bash
(Bash)
# Example Batch:
# set WD=%~d0%~p0
# set USER=<username>
# set PASS=<password>
# set URL=https://forge.codesys.com/svn/drv,gpio-mod,code/trunk/GPIOMods
# "C:\Program Files (x86)\3S CODESYS-V3.5.12.0\CODESYS\Common\CODESYS.exe" --profile="CODESYS V3.5 SP12" --runscript="%WD%\action.svn.checkout.py" --scriptargs="%URL% %USER% %PASS% %WD%" --noUI
import sys
import os.path
import pysvn
if len(sys.argv) <= 1:
print("usage: <user> <pass> <working dir>")
sys.exit()
if len(sys.argv) > 2:
username = sys.argv[1].replace("`````", "'")
password = sys.argv[2].replace("`````", "'")
if len(sys.argv) > 3:
path = sys.argv[3].replace("`````", "'")
def set_username(req):
req.username = username
req.password = password
req.save = True # Optional
# checkout plain SVN files
pysvn.svn_update_non_codesys(username, password, path)
# iterate over all projects and libraries
try:
svn.auth_username_password += set_username
for root, dirs, files in os.walk(path):
for file in files:
if file.endswith(".project") or file.endswith(".library"):
filepath = os.path.join(root, file)
proj = projects.open(filepath)
proj.svn.update()
proj.save()
proj.close()
except:
print "Seems like the CODESYS SVN package is missing. Checked out only plain files and no CODESYS projects."
pass
system.exit()
Last updated: 2018-09-02