Giter VIP home page Giter VIP logo

Comments (1)

dwoodard1 avatar dwoodard1 commented on June 19, 2024

Hello Alessandro,

The serial library has been updated to support the OSX emulator. A
couple of notes:

  1. The javax.comm implementation in Kura does not support dynamic port
    names. We hope to have this in the future, but are waiting on IP
    approval from Eclipse. So, this means the port names are hard coded in
    the JNI. Port names likes "/dev/ttyUSB0, /dev/ttyS0, /dev/tty.usbserial"
    should work without issue. However, if you have a name such as
    "/dev/tty.usbserial-FTWDSO8Z" you will need to link to a known port:

ln /dev/tty.usbserial-FTWDSO8Z /dev/ttyS0

Then use port name "/dev/ttyS0".

  1. There is an outstanding issue in Eclipse regarding the red
    "Terminate" button (read here:
    https://bugs.eclipse.org/bugs/show_bug.cgi?id=38016). In the OSX
    emulator, if you are using a serial port and use the red "Terminate"
    button, this may cause the port to remain locked and can cause system
    crashes. To avoid this, I would first stop the OSGI container in the
    console with 'stop 0', then terminate the JVM.

Let me know if you have problems or have questions.

Thanks,
--Dave

On 6/16/14, 7:49 AM, Alessandro Da Rugna wrote:

I have some troubles instantiating a serial connection to a modbus
device using the emulator. The hardware is a Serial-to-USB FTDI cable
with a modbus device attached.
This works on the raspberry (I see the FTDI cable as /dev/ttyUSB0) and
the modbus data connection is fine.

However if I try to use the same FTDI cable on my development machine
things don't work.
In my "Run configuration" I specified the VM argument:
-Dkura.ext.dir=/Users/ale/dev/tmp/ to a directory containing
javax.comm.rxtx.properties file declaring the serial port
(/dev/tty.usbserial-FTWDSO8Z).
When I try to access the port Kura says it doesn't exist:

|16:00:55,119 [Component Resolve Thread (Bundle 47)] WARN ModbusProtocolException:236 - Could not load Exception Messages Bundle for Locale en_US
org.eclipse.kura.protocol.modbus.ModbusProtocolException: Generic Error - CONNECTION_FAILURE: {1} {2} {3} {4} {5} null
at org.eclipse.kura.protocol.modbus.ModbusProtocolDevice$SerialCommunicate.(ModbusProtocolDevice.java:425)
at org.eclipse.kura.protocol.modbus.ModbusProtocolDevice.configureConnection(ModbusProtocolDevice.java:263)
at my.bundle.serial.AbstractModbusSerialReader.(AbstractModbusSerialReader.java:63)
at my.bundle.serial.Sdm630SerialReader.(Sdm630SerialReader.java:39)
at my.bundle.serial.SerialReaderFactory.createSerialReader(SerialReaderFactory.java:61)
at my.bundle.Dispatcher.doUpdate(Dispatcher.java:210)
at my.bundle.Dispatcher.activate(Dispatcher.java:112)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.eclipse.equinox.internal.ds.model.ServiceComponent.activate(ServiceComponent.java:235)
at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.activate(ServiceComponentProp.java:146)
at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.build(ServiceComponentProp.java:347)
at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent(InstanceProcess.java:620)
at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponents(InstanceProcess.java:197)
at org.eclipse.equinox.internal.ds.Resolver.getEligible(Resolver.java:343)
at org.eclipse.equinox.internal.ds.SCRManager.serviceChanged(SCRManager.java:222)
at org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:107)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent(BundleContextImpl.java:861)
at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:819)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:771)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:130)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:214)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService(BundleContextImpl.java:433)
at org.eclipse.equinox.internal.ds.InstanceProcess.registerService(InstanceProcess.java:536)
at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponents(InstanceProcess.java:213)
at org.eclipse.equinox.internal.ds.Resolver.getEligible(Resolver.java:386)
at org.eclipse.equinox.internal.ds.SCRManager.serviceChanged(SCRManager.java:222)
at org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:107)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent(BundleContextImpl.java:861)
at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:819)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:771)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.unregister(ServiceRegistrationImpl.java:225)
at org.eclipse.equinox.internal.ds.InstanceProcess.disposeInstances(InstanceProcess.java:356)
at org.eclipse.equinox.internal.ds.InstanceProcess.disposeInstances(InstanceProcess.java:306)
at org.eclipse.equinox.internal.ds.Resolver.disposeComponentConfigs(Resolver.java:717)
at org.eclipse.equinox.internal.ds.Resolver.disableComponents(Resolver.java:693)
at org.eclipse.equinox.internal.ds.SCRManager.processConfigurationEvent(SCRManager.java:359)
at org.eclipse.equinox.internal.ds.SCRManager.processConfigurationEvent(SCRManager.java:303)
at org.eclipse.equinox.internal.ds.WorkThread.run(WorkThread.java:91)
at org.eclipse.equinox.internal.util.impl.tpt.threadpool.Executor.run(Executor.java:70)
Caused by: java.io.IOException: javax.comm.NoSuchPortException
at org.eclipse.kura.core.comm.CommConnectionFactory.createConnection(CommConnectionFactory.java:62)
at org.eclipse.kura.protocol.modbus.ModbusProtocolDevice$SerialCommunicate.(ModbusProtocolDevice.java:423)
... 45 more
Caused by: javax.comm.NoSuchPortException
at javax.comm.CommPortIdentifier.getPortIdentifier(CommPortIdentifier.java:106)
at org.eclipse.kura.core.comm.CommConnectionImpl.(CommConnectionImpl.java:85)
at org.eclipse.kura.core.comm.CommConnectionFactory.createConnection(CommConnectionFactory.java:59)
... 46 more
|

Manually adding the port causes a different error. In Emulator project
MANIFEST.MF I added to /Import-Package/ section the following:
javax.microedition.io, javax.comm;version="1.2.0"
and in Emulator.java I added the following line at the end of
|activate()| method:
|CommPortIdentifier.addPortName("/dev/tty.usbserial-FTWDSO8Z",
CommPortIdentifier.PORT_SERIAL, null);|

|javax.comm.UnsupportedCommOperationException
at org.eclipse.soda.dk.comm.NSSerialPort.setSerialPortParams(NSSerialPort.java:1288)
at org.eclipse.kura.core.comm.CommConnectionImpl.(CommConnectionImpl.java:92)
at org.eclipse.kura.core.comm.CommConnectionFactory.createConnection(CommConnectionFactory.java:59)
at org.eclipse.kura.protocol.modbus.ModbusProtocolDevice$SerialCommunicate.(ModbusProtocolDevice.java:423)
at org.eclipse.kura.protocol.modbus.ModbusProtocolDevice.configureConnection(ModbusProtocolDevice.java:263)
at my.bundle.serial.AbstractModbusSerialReader.(AbstractModbusSerialReader.java:63)
at my.bundle.serial.Sdm630SerialReader.(Sdm630SerialReader.java:39)
at my.bundle.serial.SerialReaderFactory.createSerialReader(SerialReaderFactory.java:61)
at my.bundle.Dispatcher.doUpdate(Dispatcher.java:210)
at my.bundle.Dispatcher.activate(Dispatcher.java:112)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.eclipse.equinox.internal.ds.model.ServiceComponent.activate(ServiceComponent.java:235)
at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.activate(ServiceComponentProp.java:146)
at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.build(ServiceComponentProp.java:347)
at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent(InstanceProcess.java:620)
at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponents(InstanceProcess.java:197)
at org.eclipse.equinox.internal.ds.Resolver.getEligible(Resolver.java:343)
at org.eclipse.equinox.internal.ds.SCRManager.serviceChanged(SCRManager.java:222)
at org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:107)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent(BundleContextImpl.java:861)
at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:819)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:771)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:130)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:214)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService(BundleContextImpl.java:433)
at org.eclipse.equinox.internal.ds.InstanceProcess.registerService(InstanceProcess.java:536)
at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponents(InstanceProcess.java:213)
at org.eclipse.equinox.internal.ds.Resolver.getEligible(Resolver.java:343)
at org.eclipse.equinox.internal.ds.SCRManager.serviceChanged(SCRManager.java:222)
at org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:107)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent(BundleContextImpl.java:861)
at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:819)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:771)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:130)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:214)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService(BundleContextImpl.java:433)
at org.eclipse.equinox.internal.ds.InstanceProcess.registerService(InstanceProcess.java:536)
at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponents(InstanceProcess.java:213)
at org.eclipse.equinox.internal.ds.Resolver.buildNewlySatisfied(Resolver.java:473)
at org.eclipse.equinox.internal.ds.Resolver.enableComponents(Resolver.java:217)
at org.eclipse.equinox.internal.ds.SCRManager.processConfigurationEvent(SCRManager.java:363)
at org.eclipse.equinox.internal.ds.SCRManager.processConfigurationEvent(SCRManager.java:303)
at org.eclipse.equinox.internal.ds.WorkThread.run(WorkThread.java:91)
at org.eclipse.equinox.internal.util.impl.tpt.threadpool.Executor.run(Executor.java:70)
|

Trying to use the port gives

|org.eclipse.kura.protocol.modbus.ModbusProtocolException: Generic Error - CONNECTION_FAILURE: {1} {2} {3} {4} {5} null
at org.eclipse.kura.protocol.modbus.ModbusProtocolDevice$SerialCommunicate.(ModbusProtocolDevice.java:436)
at org.eclipse.kura.protocol.modbus.ModbusProtocolDevice.configureConnection(ModbusProtocolDevice.java:263)
at my.bundle.serial.AbstractModbusSerialReader.(AbstractModbusSerialReader.java:63)
at my.bundle.serial.Sdm630SerialReader.(Sdm630SerialReader.java:39)
at my.bundle.serial.SerialReaderFactory.createSerialReader(SerialReaderFactory.java:61)
at my.bundle.Dispatcher.doUpdate(Dispatcher.java:210)
at my.bundle.Dispatcher.activate(Dispatcher.java:112)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.eclipse.equinox.internal.ds.model.ServiceComponent.activate(ServiceComponent.java:235)
at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.activate(ServiceComponentProp.java:146)
at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.build(ServiceComponentProp.java:347)
at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent(InstanceProcess.java:620)
at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponents(InstanceProcess.java:197)
at org.eclipse.equinox.internal.ds.Resolver.getEligible(Resolver.java:343)
at org.eclipse.equinox.internal.ds.SCRManager.serviceChanged(SCRManager.java:222)
at org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:107)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent(BundleContextImpl.java:861)
at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:819)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:771)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:130)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:214)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService(BundleContextImpl.java:433)
at org.eclipse.equinox.internal.ds.InstanceProcess.registerService(InstanceProcess.java:536)
at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponents(InstanceProcess.java:213)
at org.eclipse.equinox.internal.ds.Resolver.getEligible(Resolver.java:343)
at org.eclipse.equinox.internal.ds.SCRManager.serviceChanged(SCRManager.java:222)
at org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:107)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent(BundleContextImpl.java:861)
at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:819)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:771)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:130)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:214)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService(BundleContextImpl.java:433)
at org.eclipse.equinox.internal.ds.InstanceProcess.registerService(InstanceProcess.java:536)
at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponents(InstanceProcess.java:213)
at org.eclipse.equinox.internal.ds.Resolver.buildNewlySatisfied(Resolver.java:473)
at org.eclipse.equinox.internal.ds.Resolver.enableComponents(Resolver.java:217)
at org.eclipse.equinox.internal.ds.SCRManager.processConfigurationEvent(SCRManager.java:363)
at org.eclipse.equinox.internal.ds.SCRManager.processConfigurationEvent(SCRManager.java:303)
at org.eclipse.equinox.internal.ds.WorkThread.run(WorkThread.java:91)
at org.eclipse.equinox.internal.util.impl.tpt.threadpool.Executor.run(Executor.java:70)
Caused by: java.lang.NullPointerException
at org.eclipse.soda.dk.comm.NSSerialPort.getInputStream(NSSerialPort.java:604)
at org.eclipse.kura.core.comm.CommConnectionImpl.openInputStream(CommConnectionImpl.java:115)
at org.eclipse.kura.protocol.modbus.ModbusProtocolDevice$SerialCommunicate.(ModbusProtocolDevice.java:433)
... 47 more
|

My Java:
$> java -version
java version "1.7.0_51"
Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode)

My Eclipse:
$> file Eclipse.app/Contents/MacOS/eclipse
Eclipse.app/Contents/MacOS/eclipse: Mach-O 64-bit executable x86_64

My machine (OSX 10.9.3):
$> uname -a
Darwin Alessandros-MacBook-Pro.local 13.2.0 Darwin Kernel Version
13.2.0: Thu Apr 17 23:03:13 PDT 2014;
root:xnu-2422.100.13~1/RELEASE_X86_64 x86_64

Am I missing something? What else can I do to help resolve the issue?

Thank you.


Reply to this email directly or view it on GitHub
#10.

from kura.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.