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

Accessing serial devices from emulator (OSX 64bit/Eclipse Kepler 64bit) #10

Closed
darugnaa opened this issue Jun 16, 2014 · 1 comment
Closed

Comments

@darugnaa
Copy link

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.<init>(ModbusProtocolDevice.java:425)
at org.eclipse.kura.protocol.modbus.ModbusProtocolDevice.configureConnection(ModbusProtocolDevice.java:263)
at my.bundle.serial.AbstractModbusSerialReader.<init>(AbstractModbusSerialReader.java:63)
at my.bundle.serial.Sdm630SerialReader.<init>(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.<init>(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.<init>(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.<init>(CommConnectionImpl.java:92)
at org.eclipse.kura.core.comm.CommConnectionFactory.createConnection(CommConnectionFactory.java:59)
at org.eclipse.kura.protocol.modbus.ModbusProtocolDevice$SerialCommunicate.<init>(ModbusProtocolDevice.java:423)
at org.eclipse.kura.protocol.modbus.ModbusProtocolDevice.configureConnection(ModbusProtocolDevice.java:263)
at my.bundle.serial.AbstractModbusSerialReader.<init>(AbstractModbusSerialReader.java:63)
at my.bundle.serial.Sdm630SerialReader.<init>(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.<init>(ModbusProtocolDevice.java:436)
at org.eclipse.kura.protocol.modbus.ModbusProtocolDevice.configureConnection(ModbusProtocolDevice.java:263)
at my.bundle.serial.AbstractModbusSerialReader.<init>(AbstractModbusSerialReader.java:63)
at my.bundle.serial.Sdm630SerialReader.<init>(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.<init>(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.

@dwoodard1
Copy link
Contributor

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.

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