0

I am using the usb-serial-for-android library from GitHub with a dotnet Visual Studio project type Android Java library binding.

Just added this to my project file

<ItemGroup>
    <AndroidMavenLibrary Include="com.github.mik3y:usb-serial-for-android" Version="3.9.0" Repository="https://jitpack.io" />
</ItemGroup>

and used Xamarin.AndroidX.Annotation nuget package for the dependency.

It worked up to version 3.7.3, but with more recent versions I got errors when building:

1>E:\GIT\terminal-usb-serial-partner-test\TerminalUsbSerialPartnerTest\UsbSerialForAndroid_3.9.0\obj\Release\net9.0-android\generated\src\Com.Hoho.Android.Usbserial.Driver.CommonUsbSerialPort.cs(20,80,20,136): error CS0535: 'CommonUsbSerialPort' does not implement interface member 'IUsbSerialPort.GetFlowControl()'

1>E:\GIT\terminal-usb-serial-partner-test\TerminalUsbSerialPartnerTest\UsbSerialForAndroid_3.9.0\obj\Release\net9.0-android\generated\src\Com.Hoho.Android.Usbserial.Driver.CommonUsbSerialPort.cs(20,80,20,136): error CS0535: 'CommonUsbSerialPort' does not implement interface member 'IUsbSerialPort.SetFlowControl(IUsbSerialPort.FlowControl?)'

I am not able to identify the exact problem, but it has something to do with the net methods for get/set the FlowRate enum field. This get/set methods were defined in interface UsbSerialPort. Get was implemented in abstract class CommonUsbSerialPort. Set is implemented in the classes for the drivers.

I tried to change return type of the get method to java.lang.object with metadata.xml and also tried to implement it in additions. For the set method I tried the same with the return type, but was not able to find a solution as the generated code was still missing the implementation in the driver classes.

Here are the lines from metadata.txt I was already trying with, but got no luck:

<attr path="/api/package[@name='com.hoho.android.usbserial.driver']/interface[@name='UsbSerialPort']/method[@name='setFlowControl']/parameter[@type='com.hoho.android.usbserial.driver.UsbSerialPort.FlowControl']" name="type">java.lang.Object[]</attr>
<attr path="/api/package[@name='com.hoho.android.usbserial.driver']/interface[@name='UsbSerialPort']/method[@name='getFlowControl']" name="managedReturn">Java.Lang.Object</attr>
<attr path="/api/package[@name='com.hoho.android.usbserial.driver']/class[@name='CommonUsbSerialPort']/method[@name='getFlowControl']" name="managedReturn">Com.Hoho.Android.Usbserial.Driver.UsbSerialPort.FlowControl</attr>
<attr path="/api/package[@name='com.hoho.android.usbserial.driver']/class[@name='CommonUsbSerialPort']/method[@name='getFlowControl']" name="managedReturn">Java.Lang.Object</attr>
<attr path="/api/package[@name='com.hoho.android.usbserial.driver']/class[@name='CommonUsbSerialPort']/method[@name='setFlowControl']/parameter[@type='com.hoho.android.usbserial.driver.UsbSerialPort.FlowControl']" name="type">java.lang.Object[]</attr>
<attr path="/api/package[@name='com.hoho.android.usbserial.driver']/class[@name='CommonUsbSerialPort']/method[@name='setFlowControl']/parameter[@type='com.hoho.android.usbserial.driver.UsbSerialPort.FlowControl']" name="type">java.lang.Object[]</attr>
<add-node path="/api/package[@name='com.hoho.android.usbserial.driver']/class[@name='CdcAcmSerialDriver.CdcAcmSerialPort']/method[@name='setFlowControl']/parameter[@type='com.hoho.android.usbserial.driver.UsbSerialPort.FlowControl']" />

How can I get this working?

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.