Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Can't load other transport layers #20

Open
brad-phobos opened this issue Nov 30, 2023 · 5 comments
Open

Can't load other transport layers #20

brad-phobos opened this issue Nov 30, 2023 · 5 comments

Comments

@brad-phobos
Copy link

How are we supposed to configure the use of other transport layers from the Python API? I've tried

VmbSystem.get_instance().set_path_configuration("/path/to/vimba/cti/:/path/to/other/cti/")
with VmbSystem.get_instance() as vimba:
    tls = vimba.get_all_transport_layers()

and I'm still only seeing the vimba transport layers. I can load the other cti files with their native software so I know the files work.

@Teresa-AlliedVision
Copy link

Please reference the documentation on how to modify the settings xml file to access specific or all transport layers:
VimbaX docs - Transport Layer Activation

@brad-phobos
Copy link
Author

Modifying the xml file does not seem to have an effect on anything except the examples in the bin directory. For those examples, it just fails

////////////////////////////////////
/// Vmb API List Cameras Example ///
////////////////////////////////////

Vmb Version Major: 1 Minor: 0 Patch: 2

Could not start system. Error code: -16

@Teresa-AlliedVision
Copy link

Please upload your XML file and check that the other TLs are GenICam compliant.

@brad-phobos
Copy link
Author

<?xml version="1.0" standalone="no" ?>
<Settings>

    <!--
            Use this to activate logging and set filename for logging (path can be absolute or relative to API)
            Default behavior if omitted:    Logging is deactivated
    -->
    <!-- <LogFileName>VmbC.log</LogFileName> -->
    

    <!--
            Append messages to log file or reset log file at each API restart (if logging is enabled)
            True:                           Always append log messages
            False:                          Reset log file at each API restart
            Default behavior if omitted:    Reset log file at each API restart
    -->		
	<!-- <AppendLog>False</AppendLog> -->


    <TlLoading>

        <CtiPaths>
            <!-- <Path required="false">.</Path> -->
           <Path required="true">/opt/spinnaker/lib/flir-gentl</Path>
        </CtiPaths>
        
        <!--    
        <TlVendor vendor-type="AVT" active="true"/>
        -->

        <!--
        <InterfaceType type="GEV" active="true"/>
        -->

        <!-- poll for interfaces every 2000 ms -->
        <InterfacePollingPeriod>2000</InterfacePollingPeriod>
        
        <!--
        <DevicePollingPeriod tl-vendor="NET" interface-type="GEV">20</DevicePollingPeriod>
        -->

        <!--
        <UpdateDeviceListTimeout tl-vendor="NET" interface-type="GEV">50</UpdateDeviceListTimeout>
        -->

    </TlLoading>

</Settings>

It loads up just fine with genicam/harvesters and they state they're GenICam compliant so I presume it to be so

@Teresa-AlliedVision
Copy link

I found that the wildcard "*" needs to be provided in the current release. In the docs, if no element is provided, it should look for all Tls, but I found that to not work. I have not tested it without the wildcard before, so I am unsure if it was specifically tested with older versions. While VimbaX is open to other GenICam TLs, we do not validate them.
Update of the docs or fix is pending.
TlVendor docs

TlVendor
vendor-type:

Specifies TL vendors to include or exclude from loading. The provided value needs to exactly match the string returned by the TLs info command, except for short values such as AVT, NET and SVS for common vendors.

You can use “ * ” as match-all wildcard. Partial wildcard matching like “AV*” is not supported. Wildcard elements may be ignored if more specific elements exist.

active:

true: Enables TLs of the matching vendor.

false: Disables TLs from this vendor.

The declaration of this active attribute is mandatory. If not provided, the TL loading fails. If no TlVendor element is provided, TLs from all vendors are loaded. A TL of a given vendor is used if there is an element element marking the vendor of the TL as active. An element where vendor-type is not a wildcard overwrites an element specifying the vendor-type as wildcard.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants