• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 4506
  • Last Modified:

Sun Comm Api 2.0 for Windows XP

I am developing software in Java within the Motorola MOTODEV Studio for Java(TM) ME v7.3 IDE.  I have found out that the communication API from Sun for serial communication within XP only works with the older jar file.  I have the three files:


and I placed them in the following directories according to this reference http://dn.codegear.com/article/31915

comm.jar should be placed in:

win32com.dll should be placed in:

javax.comm.properties should be placed in:

I  went into the environmental variables within windows XP and created a system variable called JAVA_HOME and gave it the path
C:\Program Files\Java\jdk1.6.0_02

When i go within my ide and try to run a class file which i created provided by jamod (Java Modbus http://jamod.sourceforge.net/)
i get the following error.

Error loading SolarisSerial: java.lang.UnsatisfiedLinkError: no SolarisSerialParallel in java.library.path
Caught java.lang.UnsatisfiedLinkError: com.sun.comm.SolarisDriver.readRegistrySerial(Ljava/util/Vector;Ljava/lang/String;)I while loading driver com.sun.comm.SolarisDriver
      at net.wimpi.modbus.net.SerialConnection.open(SerialConnection.java:99)
      at SerialAITest.main(SerialAITest.java:53)

In the project within the IDE i configured the build path and pointed to the comm.jar file in the JAVA_HOME directory.

Within the IDE when i go to the configuration details i see under the system properties category the listing:
*** System properties:
MOT_SDK_HOME=c:\Program Files\Motorola\MOTODEV Studio for Java(TM) ME v7.3\JMESDK

Does this mean that my java home location is not JAVA_HOME but rather MOT_SDK_HOME??
Can anyone help??????

I attached the SerialAITest.java file which uses the jamod.jar and the comm.jar files.  The program craps out at the 4th step where it trys to open a serial connection.  I am pretty certain that the issue is something with the Sun Comm API
import net.wimpi.modbus.ModbusCoupler;
import net.wimpi.modbus.io.ModbusSerialTransaction;
import net.wimpi.modbus.msg.ReadInputRegistersRequest;
import net.wimpi.modbus.msg.ReadInputRegistersResponse;
import net.wimpi.modbus.net.SerialConnection;
import net.wimpi.modbus.util.SerialParameters;
public class SerialAITest {
  public static void main(String[] args) {
	//if (args.length < 4) {
	//	System.out.println("not enough args");
	//	System.exit(1);
    try {
     /* The important instances of the classes mentioned before */
     SerialConnection con = null; //the connection
     ModbusSerialTransaction trans = null; //the transaction
     ReadInputRegistersRequest req = null; //the request
     ReadInputRegistersResponse res = null; //the response
     /* Variables for storing the parameters */
     String portname= "COM1"; //the name of the serial port to be used
     int unitid = 1; //the unit identifier we will be talking to
     int ref = 1259; //the reference, where to start reading from
     int count = 1; //the count of IR's to read
     int repeat = 1; //a loop for repeating the transaction	 
     boolean isopen = false;
//   2. Set master identifier
     //ModbusCoupler.getReference().setMaster(master); I added this in
    // ModbusCoupler.getReference().setUnitID(1);	
//     3. Setup serial parameters
     SerialParameters params = new SerialParameters();
     System.setProperty("net.wimpi.modbus.debug", "true");
//   4. Open the connection
     con = new SerialConnection(params);
     System.out.println("Connection..." + con.toString());
     isopen = con.isOpen();
     System.out.println("Serial port status..." + isopen);
//   5. Prepare a request
     req = new ReadInputRegistersRequest(ref, count);
//   6. Prepare a transaction
     trans = new ModbusSerialTransaction(con);
//	 7. Execute the transaction repeat times
     int k = 0;
     do {
       res = (ReadInputRegistersResponse) trans.getResponse();
       for (int n = 0; n < res.getWordCount(); n++) {
         System.out.println("Word " + n + "=" + res.getRegisterValue(n));
     } while (k < repeat);
//   8. Close the connection
    } catch (Exception ex) {
}//class SerialAITest

Open in new window

  • 7
  • 6
1 Solution
jamod appears to trying to load the solaris driver
whats the properties file contain?
teamcosmo02Author Commented:
Here is the contents of the properties file:

# javax.comm.properties (Solaris)
# This properties file is necessary in order for javax.comm to run,
# and its contents are critical, and not to be tampered with without
# a very clear understanding of the impact.  It is shipped with a 
# default set of values that work on the target platform.
# 1. The directory javax.comm is launched from
# 2. Each directory in the classpath (including the one in which comm.jar is in)
# 3. <jvm dir>/lib
# 4. <jvm dir>/jre/lib
# The following properties must be defined:
#   driver
#   serpath0 ... serpath<n>
#   parpath0 ... parpath<n>
# Driver:
#   The driver property specifies the fully qualified class name of the
#   platform specific implementation of the javax.comm.CommDriver class.
#   Format:
#     driver=<fully qualified classname>
#   Example:
#     driver=com.sun.comm.SolarisDriver
# Port paths:
#   Port paths must be specified to indicate to the implementation
#   which are the core set of ports to make available. These can
#   be either paths to directories containing ports or paths to
#   specific serial or parallel ports.
# Implementation specific driver
# Paths to server-side serial port devices
serpath0 = /dev/term
serpath1 = /dev/cua
# Paths to server-side parallel port devices
parpath0 = /dev/ecpp0
parpath1 = /dev/printers

Open in new window

7 new features that'll make your work life better

It’s our mission to create a product that solves the huge challenges you face at work every day. In case you missed it, here are 7 delightful things we've added recently to monday to make it even more awesome.

thats the solaris version, you should be using the windows one
teamcosmo02Author Commented:
can i edit the existing file or is there some place i can dowload the windows version?  i'm having trouble finding one
driver should be:


change the ports to whats on your box
teamcosmo02Author Commented:
Fantastic service!!
teamcosmo02Author Commented:
i am still having a problem.  I am now getting the error message
      at net.wimpi.modbus.net.SerialConnection.open(SerialConnection.java:99)
      at SerialAITest.main(SerialAITest.java:55)

It is occurring at the same line where it uses the open method.  Any ideas?  I edited the javax.comm.properties file to the windows driver.
did u update the ports?
teamcosmo02Author Commented:
what do you mean by updating the ports?
the port config in the properties file
teamcosmo02Author Commented:
do you know what the serpath0 and serpath1 values should be for windows xp sp2 x86 ?
don't sorry
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

The new generation of project management tools

With monday.com’s project management tool, you can see what everyone on your team is working in a single glance. Its intuitive dashboards are customizable, so you can create systems that work for you.

  • 7
  • 6
Tackle projects and never again get stuck behind a technical roadblock.
Join Now