i developing a GenTL Producer that is a wrapper around our Camera Software SDK. That SDK can access about multiple different Camera Families. To be honest i am absolutely Python beginner, but i already do some tests of the Producer with Halcon and Dessign Assistant (MIL) and are able to get images and set/get parameters from the devices.
For automatic testing purposes i like the idea of writing scripts with phyton.
I have also implemented a Virtual Device so i don't need real camera hardware. I am able to provide that producer for testing purposes.
i have multiple issues:
At the producer level i told the consumer that there are 2 Devices available. I checked via breakpoint in GenTLInterface::ListCurrentDevices that i correctly send it with different serial numbers, but in the gui i have 2 entries with same serial number. Also then i list it in harvester, i got a list with 2 identical entries.
The Combobox entries show the EnumEntry name instead of the EnumEntry DisplayName
The Combobox for the PixelFormat is correctly an Enumeration. All of the Entries from XML are shown,but some of them are not implemented/available. It seems that the implementation/available status will be not evaluated.
The XML part is:
<Enumeration Name="PixelFormat" NameSpace="Standard">
<ToolTip>Format of the pixels provided by the device.</ToolTip>
<Description>Format of the pixels provided by the device. It represents all the information provided by PixelSize, PixelColorFilter combined in a single feature.</Description>
<DisplayName>Pixel Format</DisplayName>
<Visibility>Beginner</Visibility>
<Streamable>Yes</Streamable>
<EnumEntry Name="Mono8" NameSpace="Standard">
<ToolTip>Monochrome 8-bit</ToolTip>
<Description>Monochrome 8-bit</Description>
<DisplayName>Mono8</DisplayName>
<pIsImplemented>Swiss_Mono8IsImplemented</pIsImplemented>
<Value>0x01080001</Value>
</EnumEntry>
<EnumEntry Name="Mono10" NameSpace="Standard">
<ToolTip>Monochrome 10-bit</ToolTip>
<Description>Monochrome 10-bit</Description>
<DisplayName>Mono10</DisplayName>
<pIsImplemented>Swiss_Mono10IsImplemented</pIsImplemented>
<Value>0x01100003</Value>
</EnumEntry>
<EnumEntry Name="Mono12" NameSpace="Standard">
<ToolTip>Monochrome 12-bit</ToolTip>
<Description>Monochrome 12-bit</Description>
<DisplayName>Mono12</DisplayName>
<pIsImplemented>Swiss_Mono12IsImplemented</pIsImplemented>
<Value>0x01100005</Value>
</EnumEntry>
<EnumEntry Name="Mono14" NameSpace="Standard">
<ToolTip>Monochrome 142-bit</ToolTip>
<Description>Monochrome 14-bit</Description>
<DisplayName>Mono14</DisplayName>
<pIsImplemented>Swiss_Mono14IsImplemented</pIsImplemented>
<Value>0x01100025</Value>
</EnumEntry>
<EnumEntry Name="RGB8" NameSpace="Standard">
<ToolTip>Red-Green-Blue 8-bit</ToolTip>
<Description>Red-Green-Blue 8-bit</Description>
<DisplayName>RGB8</DisplayName>
<pIsImplemented>Swiss_RGB8IsImplemented</pIsImplemented>
<Value>0x02180014</Value>
</EnumEntry>
<EnumEntry Name="RGB10" NameSpace="Standard">
<ToolTip>Red-Green-Blue 10-bit</ToolTip>
<Description>Red-Green-Blue 10-bit</Description>
<DisplayName>RGB10</DisplayName>
<pIsImplemented>Swiss_RGB10IsImplemented</pIsImplemented>
<Value>0x02300018</Value>
</EnumEntry>
<EnumEntry Name="RGB12" NameSpace="Standard">
<ToolTip>Red-Green-Blue 12-bit</ToolTip>
<Description>Red-Green-Blue 12-bit</Description>
<DisplayName>RGB12</DisplayName>
<pIsImplemented>Swiss_RGB12IsImplemented</pIsImplemented>
<Value>0x0230001A</Value>
</EnumEntry>
<EnumEntry Name="RGB14" NameSpace="Standard">
<ToolTip>Red-Green-Blue 14-bit</ToolTip>
<Description>Red-Green-Blue 14-bit</Description>
<DisplayName>RGB14</DisplayName>
<pIsImplemented>Swiss_RGB14IsImplemented</pIsImplemented>
<Value>0x0230005E</Value>
</EnumEntry>
<EnumEntry Name="Coord3D_ABC32f" NameSpace="Standard">
<ToolTip>3D pixel cloud each component a float 32 bit</ToolTip>
<Description>3D pixel cloud each component a float 32 bit</Description>
<DisplayName>Coord3D_ABC32f</DisplayName>
<pIsImplemented>Swiss_PointcloudIsImplemented</pIsImplemented>
<Value>0x026000C0</Value>
</EnumEntry>
<pValue>Reg_PixelFormatValue</pValue>
</Enumeration>
<IntSwissKnife Name="Swiss_Mono8IsImplemented" NameSpace="Standard">
<Visibility>Invisible</Visibility>
<pVariable Name="PIX_IMPL">Reg_PxTypeIsImplemented</pVariable>
<Formula>(PIX_IMPL & 0x01) = 0x01</Formula>
</IntSwissKnife>
<IntSwissKnife Name="Swiss_Mono10IsImplemented" NameSpace="Standard">
<Visibility>Invisible</Visibility>
<pVariable Name="PIX_IMPL">Reg_PxTypeIsImplemented</pVariable>
<Formula>(PIX_IMPL & 0x02) = 0x02</Formula>
</IntSwissKnife>
<IntSwissKnife Name="Swiss_Mono12IsImplemented" NameSpace="Standard">
<Visibility>Invisible</Visibility>
<pVariable Name="PIX_IMPL">Reg_PxTypeIsImplemented</pVariable>
<Formula>(PIX_IMPL & 0x04) = 0x04</Formula>
</IntSwissKnife>
<IntSwissKnife Name="Swiss_Mono14IsImplemented" NameSpace="Standard">
<Visibility>Invisible</Visibility>
<pVariable Name="PIX_IMPL">Reg_PxTypeIsImplemented</pVariable>
<Formula>(PIX_IMPL & 0x08) = 0x08</Formula>
</IntSwissKnife>
<IntSwissKnife Name="Swiss_RGB8IsImplemented" NameSpace="Standard">
<Visibility>Invisible</Visibility>
<pVariable Name="PIX_IMPL">Reg_PxTypeIsImplemented</pVariable>
<Formula>(PIX_IMPL & 0x100) = 0x100</Formula>
</IntSwissKnife>
<IntSwissKnife Name="Swiss_RGB10IsImplemented" NameSpace="Standard">
<Visibility>Invisible</Visibility>
<pVariable Name="PIX_IMPL">Reg_PxTypeIsImplemented</pVariable>
<Formula>(PIX_IMPL & 0x200) = 0x200</Formula>
</IntSwissKnife>
<IntSwissKnife Name="Swiss_RGB12IsImplemented" NameSpace="Standard">
<Visibility>Invisible</Visibility>
<pVariable Name="PIX_IMPL">Reg_PxTypeIsImplemented</pVariable>
<Formula>(PIX_IMPL & 0x400) = 0x400</Formula>
</IntSwissKnife>
<IntSwissKnife Name="Swiss_RGB14IsImplemented" NameSpace="Standard">
<Visibility>Invisible</Visibility>
<pVariable Name="PIX_IMPL">Reg_PxTypeIsImplemented</pVariable>
<Formula>(PIX_IMPL & 0x800) = 0x800</Formula>
</IntSwissKnife>
<IntSwissKnife Name="Swiss_PointcloudIsImplemented" NameSpace="Standard">
<Visibility>Invisible</Visibility>
<pVariable Name="PIX_IMPL">Reg_PxTypeIsImplemented</pVariable>
<Formula>(PIX_IMPL & 0x010000) = 0x010000</Formula>
</IntSwissKnife>
Reg_PxTypeIsImplemented returned is: 0x00010005, so only Mono8, Mono10, Coord3D_ABC32f should be available.
That works in Halcon, for example, correctly.
I have two Comboxes the first one with entry A and B a second one with with Entries A1,A2,B1,B2.
If i changed the First box only the corresponding entries from second box should be visible. But that does not work correctly.
The SwissKnife of SecondBox is not reevaluated then FirstBox has changed.
Hello Mr. Kazunarikudo,
i developing a GenTL Producer that is a wrapper around our Camera Software SDK. That SDK can access about multiple different Camera Families. To be honest i am absolutely Python beginner, but i already do some tests of the Producer with Halcon and Dessign Assistant (MIL) and are able to get images and set/get parameters from the devices. For automatic testing purposes i like the idea of writing scripts with phyton.
I have also implemented a Virtual Device so i don't need real camera hardware. I am able to provide that producer for testing purposes.
i have multiple issues:
The XML part is:
Reg_PxTypeIsImplemented returned is: 0x00010005, so only Mono8, Mono10, Coord3D_ABC32f should be available. That works in Halcon, for example, correctly.
The xml that i currently implement look like:
That is all. Thank you for your time an effort to implement a GenICam Phyton interface.
Edit: xml is not shown correctly, github task removed, typo