|
|
- /*-------------------------------------------------------------------------
- | rxtx is a native interface to serial ports in Java.
- | Copyright 1997-2004 by Trent Jarvi taj@www.linux.org.uk
- |
- | This library is free software; you can redistribute it and/or
- | modify it under the terms of the GNU Library General Public
- | License as published by the Free Software Foundation; either
- | version 2 of the License, or (at your option) any later version.
- |
- | This library is distributed in the hope that it will be useful,
- | but WITHOUT ANY WARRANTY; without even the implied warranty of
- | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- | Library General Public License for more details.
- |
- | You should have received a copy of the GNU Library General Public
- | License along with this library; if not, write to the Free
- | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- --------------------------------------------------------------------------*/
- This is the INSTALL file for RXTX. Thu Jul 7 19:46:26 EDT 2005
-
- If, while following the instructions, you find this file unclear or incorrect
- please make a note and email the details to taj@www.linux.org.uk.
-
- A note about rxtx 2.1:
-
- rxtx 2.1 replaces the entire CommAPI. Every effort is made to conform to
- CommAPI but out of respect for our friends at Sun the package name of 2.1 has
- been moved to gnu.io. A script is offered in contrib/ChangePackage.sh that
- will switch source tree's between javax.comm and gnu.io.
-
- See Sun's CommAPI license for more details on why this decision was made.
-
- If you would like to use javax.comm, use rxtx 1.4 with Sun's CommAPI.
-
- A note on Mac OS X:
-
- Go to the MacOSX file for install instructions.
-
- 1. INSTALL INSTRUCTIONS IN OTHER LANGUAGES
-
- A. Japanese
-
- 2. BUILDING COMMAPI SUPPORT
-
- A. Quick Install
- B. Uninstalling Sun's comm.jar
- C. installing javax.comm.properties.
- D. Add RXTXcomm.jar to your CLASSPATH.
- E. Build and Install the jar.
- F. Where did everything end up?
- G. Compiling for Win32 support
-
- 3. COMMON PROBLEMS
-
- A. java.lang.UnsatisfiedLinkError: nSetOwner while loading driver
- gnu.io.RXTXCommDriver
- B. Exception in thread "main" java.lang.UnsatisfiedLinkError:
- no rxtxSerial in java.library.path
- C. I Can Not Open the Port.
- D. java.lang.NoClassDefFoundError: gnu/io/CommPort
- E. The Compiler Cannot Find Java Include Files
- F. Configure says 'unterminated sed command' and stops
- G. Java Can Not Find libstdc++-libc6.0-1.so.2
- H. BlackBox Can Not Handle all the ports!
- I. Illegal use of nonvirtal function call!
- J. My libc5 Linux system is generating SIGSEGV
- K. AM_PROG_LIBTOOL not found in library
- L. Problems with RMISecurityManager()
- M. Which Wires Should be Connected?
- N. Which Device Should be Used?
- O. It Did Not Work!
- P. Which jdk should be used?
- Q. How does rxtx detect ports? Can I override it?
- R. How can I use Lock Files with rxtx?
- S. How can I tell which version of rxtx is installed?
- T. What Type of Latency can I expect with RXTX
- U. I got rxtx working on a new OS but I can't read from the port
- V. My ThinkPad is Not Working!
-
- 4) APPLETS
-
- A. Using Applets
-
- -------------------------------------------------------------------------------
- 1. INSTALL INSTRUCTIONS IN OTHER LANGUAGES
- A. Japanese
-
- Instructions are available in Japanese at
-
- The instructions are fairly old but should help.
-
- http://www.geocities.co.jp/Technopolis/4789/settei.htm#id1
- Thanks to Masayuki "Tencho" Yamashita <tencho@venus.kanazawa-it.ac.jp>
- home page http://www.geocities.co.jp/Technopolis/4789/
-
- A copy of these install instructions is provided in
- install-japanese.html
-
- We will gladly include instructions in any language provided. Tencho
- was the first to contribute instructions in another language.
-
- 2. BUILDING COMMAPI SUPPORT
-
- The following is concerned with building and installing commapi
- support with Sun's CommAPI package. A full stand alone version of
- rxtx is in the CVS archive for interested developers.
-
- A. Quick Install
-
- The following packages are used to build rxtx:
-
- autoconf-2.59
- automake-1.9.5
- libtool-1.5.18
- gnu make-3.79.1 On some systems like FreeBSD this is
- called gmake
- jdk 1.3 or newer
-
- With the packages installed, proceed to build and install rxtx.
-
- $ tar -xzvf rxtx-2.1.tar.gz
- $ cd rxtx-2.1
- $ ./configure (follow the instructions)
- $ make install (gmake if your system uses that convention)
- Read "R. How can I use Lock Files with rxtx?"
-
- One catch that has showed up... you cannot have spaces in the path.
- for instance: /home/jarvi/test build/rxtx/... will cause problems.
- ----^
- If that does not work or you do not want a script messing with the
- system, read on..
-
- B. Uninstalling Sun's comm.jar
-
- Sun's comm.jar is not required. It is a valid option on
- some platforms. IT WILL CREATE CHAOS if you have it installed
- while trying to build rxtx 2.1.
-
- http://java.sun.com/products/javacomm/index.html
-
- C. Installing javax.comm.properties.
-
- javax.comm.properties is not currently required by rxtx-2.1
-
- D. Add RXTXcomm.jar to your CLASSPATH.
-
- jdk-1.1:
-
- make sure /usr/local/java/lib/RXTXcomm.jar is in your
- CLASSPATH. If you want to use apps that require
- RXTXcomm.jar.
-
- in bash:
-
- $ export CLASSPATH=/usr/local/java/lib/RXTXcomm.jar:.
-
- jdk-1.2 and newer:
-
- No changes are needed.
-
- E. Build and Install the jar.
-
- configure configure supports build directories.
- configure requires javac in its path or
- JAVA_HOME set to grab some java system
- properties.
- make to build RXTXcomm.jar and the libraries
- make install to place the jar and libraries in the correct
- location
-
- You may select the JDK you wish to build with using $JAVA_HOME
- For example:
- export JAVA_HOME=/usr/local/java
- Otherwise, configure grabs the JDK from your PATH.
-
- F. Where did everything end up?
-
- Lets assume the top java directory is /usr/local/java
-
- jdk-1.2 the files go in
-
- /usr/local/java/jre/lib/ext/RXTXcomm.jar
- /usr/local/java/jre/lib/$(ARCH)/librxtxSerial.so.
- /usr/local/java/jre/lib/$(ARCH)/librxtxParallel.so.
- /usr/local/java/jre/lib/$(ARCH)/lib/...
-
- jdk-1.1.* the files go in
-
- /usr/local/java/lib/RXTXcomm.jar
- /usr/lib/librxtxSerial.so.
- /usr/lib/librxtxParallel.so.
- /usr/lib/...
-
- The librxtxSerial.so librxtxParallel.so are placed in
- /usr/lib so people don't have to change with their
- LD_LIBRARY_PATH.
-
- G. Compiling for Win32 support
-
- Get the Sun CommAPI if you want a plug-in solution. The code
- is provided for people that may have demanding needs and coding
- ability.
-
- There is only serial port code at this time.
-
- Three ways of compiling win32 libraries are offered:
-
- mingw32 tools in DOS
- lcc tools in DOS
- cross-compiling from Linux
-
- ----------------- mingw32 tools in DOS -----------------------
-
- Install mingw32 http://www.mingw.org
- Install a jdk http://java.sun.com/j2se
- Make sure the ming32\bin and jdk\bin directories are in your
- path.
- In the rxtx top directory to the following:
- mkdir build
- copy Makefile.mingw32 build\Makefile
- cd build
- edit the Makefile and make sure the directories are correct.
- execute the following:
- make
- make install
-
- ----------------- lcc tools in DOS ---------------------------
-
- Install a jdk http://java.sun.com/j2se
- Install lcc http://www.cs.virginia.edu/~lcc-win32/
-
- A make file (Makefile.lcc) for compiling rxtx with lcc
- contributed by Valentin Pavlov
-
- You will need a config.h file in the src directory. Other
- builds usually generate them automatically. The following
- should work.
-
- #define HAVE_FCNTL_H
- #define HAVE_SIGNAL_H
- #undef HAVE_SYS_FCNTL_H
- #undef HAVE_SYS_FILE_H
- #undef HAVE_SYS_SIGNAL_H
- #undef HAVE_TERMIOS_H
- #undef HAVE_SYS_TIME_H
-
- if you know how to create the above in a dos Makefile send in the changes.
-
- the following commands should then work fine on the command
- line.
-
- cd src
- make -f ..\Makefile.lcc
-
- ----------------- cross-compiling from Linux -----------------
-
- Grab ming32:
-
- Wayne Roberts contributed the version used by the maintainer.
- (Wayne is largely responsible for bringing rxtx back to win32.)
- http://www.linuxgrrls.org/~taj/crossmingw32-2.95-1.i386.rpm
- A more current version can be obtained:
- http://www.devolution.com/~slouken/SDL/Xmingw32/crossgcc/index.html
- prebuilt Binaries:
- http://www.devolution.com/~slouken/SDL/Xmingw32/mingw32-linux-x86-glibc-2.1.tar.gz
-
- I built the dll with jdk-1.2.2 for linux using jdk-1.2.2
- include files from the win32 JDK.
-
- Make sure that ming32 bin dir is the first in your path (at
- least before /usr/bin/gcc)
-
- $ export PATH=" \
- /usr/local/cross-tools/i386-mingw32/bin/: \
- $PATH:/usr/X11R6/bin:/usr/local/java/bin: \
- /usr/local/java/jre/bin/:"
-
- Place Sun jdk 1.2.2 win32 include files in a known location.
-
- $ mkdir /home/jarvi/win32java
- $ cp -r /mnt/win98//java/include /home/jarvi/win32java
-
- If you are developing win32 support you may want to
- export the location to make the config script
- non interactive
-
- $ export WIN32INCLUDE=/home/jarvi/tools/win32-include
-
- run configure to generate a Makefile
-
- $ cd /home/jarvi/rxtx-*
- $ mkdir build
- $ cd build
- $ ../configure --target=i386-mingw32 \
- --host=i386-redhat-linux
-
- build the class files and dll.
-
- $ make
-
- the files will be located in
-
- rxtx-*/build/...
-
- If you're looking at rxtx as an example of cross-compiling you
- may be interested in looking at the examples provided at:
-
- ftp.xraylith.wisc.edu
- /pub/khan/gnu-win32/mingw32/misc/java-jni-examples.zip
-
- 3. COMMON PROBLEMS
-
- A. I get java.lang.UnsatisfiedLinkError: nSetOwner while loading driver
- gnu.io.RXTXCommDriver when using rxtx.
-
- SetOwner appears to be some win32 call.
- Do not use Sun's win32 CommAPI files. Get the Solaris version.
- "javacomm20-x86.tar.Z" and rxtx-1.4 if you want Sun's solution.
-
- See Also: 2-B. Installing Sun's comm.jar (IE its not needed at all)
-
- B. Exception in thread "main" java.lang.UnsatisfiedLinkError: no rxtxSerial in
- java.library.path
-
- librxtxSerial.so is located in the wrong directory. Here is an example
-
- $ mv /usr/local/java/jre/lib/i386/librxtxSerial* /usr/local/lib
- $ java BlackBox
- Exception in thread "main" java.lang.UnsatisfiedLinkError: no rxtxSerial
- in java.library.path
- at java.lang.ClassLoader.loadLibrary(Compiled Code)
- at java.lang.Runtime.loadLibrary0(Compiled Code)
- at java.lang.System.loadLibrary(Compiled Code)
- at gnu.io.NativePort.<clinit>(NativePort.java:32)
- at gnu.io.RXTXPort.<init>(Compiled Code)
- at gnu.io.RXTXCommDriver.getCommPort(Compiled Code)
- at gnu.io.CommPortIdentifier.open(Compiled Code)
- at SerialPortDisplay.openBBPort(Compiled Code)
- at SerialPortDisplay.<init>(Compiled Code)
- at BlackBox.addPort(Compiled Code)
- at BlackBox.main(Compiled Code)
-
- ... lets fix it.
-
- Solution 1: move the file to a place that works
-
- $ mv /usr/local/lib/librxtxSerial.* /usr/local/java/jre/lib/i386/
-
- Solution 2: add the location of librxtxSerial to LD_LIBRARY_PATH
-
- $ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib/
-
- Solution 3: pass the location in on the command line
-
- $ java -Djava.library.path=/usr/local/lib/ ...
-
- C. I Can Not Open the Port.
-
- If you're not able to open the port (read the errors carefully) then you
- may not have permission to use the device. Redhat Linux ships with the
- following permissions:
-
- crw-r--r-- /dev/ttyS?
-
- Users need to be able to read and write with serial communication...
-
- chmod 666 /dev/ttyS?
-
- should fix the problem. Be sure to check the file CommAPI for common
- mistakes.
-
- Make sure that the user can create lock files see R.
-
- D. java.lang.NoClassDefFoundError: gnu/io/CommPort
-
- RXTXcomm.jar is probably not in your classpath or not located in
- the proper directory.
-
- for example, lets not include RXTXcomm.jar
-
- export CLASSPATH=../java/lib/classes.zip
- $ java BlackBoxException in thread "main"
- java.lang.NoClassDefFoundError: gnu/io/CommPort
-
- E. The Compiler Cannot Find Java Include Files
-
- Check to top of the Makefile to make sure we agree on the location of
- the include files that came with the jdk. Specifically:
-
- JAVAINCLUDE = -I /usr/local/java/include/
- JAVANATINC = -I /usr/local/java/include/genunix
- also check the classpath
- CLASSPATH = ...
-
- F. Configure says 'unterminated sed command' and stops
-
- Unterminated sed command errors usually result from `find` producing
- unexpected results. If you are unsure remove all comm.jar and
- configure to place in in the correct place.
-
- G. Java Can Not Find libstdc++-libc6.0-1.so.2
-
- jdk-1.2 on redhat systems may note that Java complains about not being
- able to find libstdc++-libc6.0-1.so.2. A symbolic link can be used to
- get around this feature.
-
- ln -s /usr/lib/libstdc++ /usr/lib/libstdc++-libc6.0-1.so.2
- ls -l /usr/lib/libstdc++-libc6.0-1.so.2
- /usr/lib/libstdc++-libc6.0-1.so.2 -> libstdc++.so.2.8.0
-
- H. BlackBox Can Not Handle all the ports!
-
- BlackBox has a hard coded limit in BlackBox.java that prevents it from
- running if you don't specify a port. We are considering alternative
- ways of handling the large number of port names in Unix. The line in
- question
-
- is:
-
- portDisp = new SerialPortDisplay[50];
-
- just change 50 to say 256.
-
- I. Illegal use of nonvirtal function call!
-
- Exception in thread "main" java.lang.VerifyError: (class:
- gnu/io/RXTXPort$SerialOutputStream, method: flush signature: ()V)
- Illegal use of nonvirtual function call
- at gnu.io.RXTXCommDriver.getCommPort(Compiled Code)
- at gnu.io.CommPortIdentifier.open(Compiled Code)
- at SerialPortDisplay.openBBPort(Compiled Code)
- at SerialPortDisplay.<init>(Compiled Code)
- at BlackBox.addPort(Compiled Code)
- at BlackBox.main(Compiled Code)
-
- "1.1 compilers sometimes generate code that won't verify under 1.2.
-
- If you don't have the sources for the offending class to recompile with
- a 1.2 javac, the only solution I know of is to launch the VM with the
- -noverify option.
-
- Louis"
-
- In other words start with a fresh build directory, rebuild, and
- reinstall to avoid the problem.
-
- J. My libc5 Linux system is generating SIGSEGV
-
- Older Linux Systems (libc5) should upgrade to a glibc system with
- libpthread-0.7 or newer. We have run into many problems with older
- libraries. SIGSEGV was the most common symptom. Reported by Peter
- Bennett <bencom@bencom.co.nz>
-
- K. AM_PROG_LIBTOOL not found in library
-
- cd. && aclocal
- aclocal:configure.in: 23: macro 'AM_PROG_LIBTOOL' not found in library
- make:***[aclocal.m4]Error 1
-
- If you're positive things are setup right you may try the autogen.sh
- script to try regenerating the scripts with your tools.
-
- L. Problems with RMISecurityManager()
-
- Please see the file RMISecurityManager.html
-
- M. Which Wires Should be Connected?
-
- With the DB25 use 2 (TX), 3 (RX) and 7 (GD) to connect to the device.
- With the DB9 use 2 (RX), 3 (TX) and 5 (GD) to connect to the device.
-
- You will need to hook up more than that for hardware flow control.
-
- N. Which Device Should be Used?
-
- Linux serial ports should use /dev/ttyS?
- specialx, cyclades and isdn4 linux have been reported to work.
- as many as 64 ports have worked at one time.
- FreeBSD uses cuaa?
- netbsd uses tty0?
- Irix uses ttyd? ttym? ttyf?
- HP-UX uses tty0p? tty1p?
- BeOS uses /dev/ports/serial?
- Win32 uses COM?
-
- O. It Did Not Work!
-
- There are sure to be bugs. The goal is to make the install as painless
- as possible. Send back comments if something could be easier.
-
- If you run into a problem building the rxtx package please include the
- output generated by the following script.
-
- ---------------clip-----------------
- #!/bin/sh
- which java
- java -version
- uname -a
- autoconf --version
- automake --version
- libtool --version
- make --version
- ---------------clip-----------------
-
- Here's what's on my system for comparison. Older make is known to cause
- problems.
-
- java 1.4
- autoconf-2.53
- automake-1.6.3
- libtool-1.4.2
- gnu make-3.79.1
-
- mail any bugs to taj@www.linux.org.uk.
-
- P. Which jdk should be used?
-
- Ideally any jdk would be fine. Here is a list of jdk's tried on
- RedHat 6.0/kernel 2.2.17pre13 with various versions of glibc.
-
- Sun IBM Blackdown
- 2.1.2_006 1.3.0 1.1.8v1
- green native green native green native
- ------------------------------------------
- glibc-2.1.1-6 | OK | *1 | *2 | *2 | OK | *3 |
- -------------------------------------------
- glibc-2.1.2-11 | OK | *1 | OK | OK | OK | OK |
- -------------------------------------------
- glibc-2.1.2-17 | OK | *1 | OK | OK | OK | OK |
- -------------------------------------------
- glibc-2.1.3-15 | OK | *1 | OK | OK | OK | OK |
- -------------------------------------------
-
- 1) BlackBox (a demo application shipped with CommAPI locks after multiple
- open()/close()
-
- 2) java wont start "Unable to load /usr/local/java/jre/bin/libhpi.so: symbol
- sem_wait, version GLIBC_2.1 not defined in file libpthread.so.0 with link time
- reference Could not create the Java virtual machine."
-
- 3) java wont start "error in loading shared libraries:
- /usr/local/java/bin/../lib/i686/native_threads/libjava.so: symbol sem_init,
- version GLIBC_2.1 not defined in file libpthread.so.0 with link time reference"
-
- Conclusion? Avoid Sun's native threads unless you can figure out whats going
- wrong.
-
- Q. How does rxtx detect ports? Can I override it?
-
- rxtx tries to detect ports on by scanning /dev for files matching any
- of a set of known-good prefixes, such as 'ttyS', 'ttym', and so on.
- Any ones that exist, are supposed to be good for the current operating
- system, and that can be read and written are offered back from
- CommPortIdentifier.getPortIdentifiers(), and only these can be used as
- ports.
-
- If you wish, you can set the system properties gnu.io.rxtx.SerialPorts
- and gnu.io.rxtx.ParallelPorts. If either of these is set, then no
- scanning will be carried out and only the specified ports will be
- available. You can use this to make one platform look like another,
- to restrict Java access to ports, or possibly for other reasons. For
- example
-
- java -Dgnu.io.rxtx.SerialPorts=/dev/cua/a:/dev/cua/b com.foo.MyApp
-
- will look kind of like Solaris, if you have created the appropriate
- device nodes.
-
- A note on Linux port enumeration. We have set most ports aside. Once the
- number of possible devices started getting into the thousands, checking them
- all made little sense. Look in RXTXCommDriver.java and search for Linux.
-
- You will see that only /dev/ttyS* is searched but the possible addition ports
- that can be used are listed under it. Just copy the few you need.
-
- R. How can I use Lock Files with rxtx?
-
- Redhat users. Note that Redhat changed group uucp to group lock with Redhat
- 7.2.
-
- Mandrake users. Note that /var/lock needs to be group uucp for this to work.
-
- Mac OS X users. Note that you may need to create the lock directory with group uucp ownership. There is a script in contrib called fixperm.sh to help with
- this on Mac OS X.
-
- RXTX uses lock files by default. configure --disable-lockfiles to generate
- rxtx libraries without lock files. Its strongly recommended that you do
- use lock files to prevent rxtx from stomping on other programs using serial
- ports.
-
- Lock files are used to prevent more than one program accessing a port at a
- time. Lock files require a bit of sysadmin to work properly..
-
- Rxtx has support for lock files on Linux only. It may work on other
- platforms but read the source before blindly trying it.
-
- Before you use lock files you need to do one of two things:
-
- 1. Be the root or uucp user on your machine whenever you use rxtx
- 2. add the specific user that needs to use rxtx to the group uucp.
- (preferred)
-
- To add a user to the uucp group edit /etc/group as root and change the
- following:
- uucp::14:uucp
- to something like:
- uucp::14:uucp,jarvi
- In this case jarvi is the login name for the user that needs to use lock files.
- Do not change the number (14). Whatever is in your group file is correct.
-
- User jarvi in this case can now use rxtx with lock files.
-
- The lock file code does not support kermit style lock files or lock files in
- /var/spool. Its sure to fail if you're using subdirectories in /dev or do not
- have /dev.
-
- Still cant get things to run under a root account?
-
- Vadim Tkachenko writes:
-
- "Maybe you remember - couple of months back I've run into inability to
- run the JDK 1.3+ from under root account.
-
- Today, absolutely suddenly, something clicked in my head and the cause
- was found: libsafe. To make JDK work, it is enough to disable libsafe
- (unset LD_PRELOAD)."
-
- As another option it is possible to use a Lock File Server. In this case,
- a server runs in group uucp or lock and rxtx then connects to localhost
- to lock and unlock the port. The server and install instructions can be
- found in src/lfd. RXTX will need to be configured to use the server:
-
- configure --enable-lockfile_server
-
- Any user can then lock the ports if they are not already locked.
-
- S. How can I tell which version of rxtx is installed?
-
- Version information is not documented in Sun's CommAPI so this is probably
- unique to RXTX.
-
- As of rxtx-1.5-4 and rxtx-1.4-6 a class has been added to allow developers to
- check which version of rxtx is installed. The class is RXTXVersion.
-
- The static method: System.out.println(RXTXVersion.getVersion());
-
- will print the rxtx version as a String in the following format:
-
- "RXTX-MAJOR.MINOR-PATCH".
-
- an example would be:
-
- "RXTX-1.5-4"
-
- A change in the MAJOR version would suggest you're in trouble.
-
- Odd MINOR version are reserved for development. Even MINOR versions are
- reserved for 'stable' releases.
-
- PATCH is used to differentiate incremental releases of the MINOR releases.
-
- CommPortIdentifier is expected to support getVersion() in the RXTX-1.5 series.
-
- T. What Type of Latency can I expect with RXTX
-
- frantz <fcapiez@club-internet.fr> put RXTX under a scope and found
- the following:
-
- RXTX currently has a latency of 150-200ms on a PII at 450mhz.
- The latency can be reduced to 70-80ms by reducing the usleep()
- value in SerialImp.c:eventLoop() to usleep(5000)).
-
- Much lower latencies should be possible but the maintainer does not
- have equipment to test changes.
-
- He is going to look at this further. He needs 20 ms or less latency.
-
- U. I got rxtx working on a new OS but I can't read from the port
-
- > Now my java program starts up nicely without complaining. However, it does
- > never read any data from the serial port. It looks like it can write data,
- > because if I start a terminal program after I tried to run my program, I get
- > all the return stuff from the modem that my program wrote.
- >
- > I hacked around abit and found out that it hangs in the select() call which
- > simply never returns.
- >
- On Sun, 28 Jan 2001, Baldur Norddahl wrote:
- > HPUX 11:
- >
- > As I wrote to the mailinglist I had some wierd problems where it apparently
- > could write data to the modem, but not read anything back. My terminal
- > programs had no problem using the port. A few days after I reported the
- > problem to the mailinglist, I had given up for now, but then I noticed that
- > it suddenly worked! So it remains a mystery what was wrong as I did not
- > change anything at all, neither in my program nor on the host.
- >
- > Baldur
- >
-
- I suspect two java applications had the port open. Its easy to do while
- developing. Perhaps <ctl> z instead of <ctl> c was entered.
-
- This is the reason for adding lockfile support to rxtx. If another application
- has opened the port, a second application will appear to not be able to
- read or get only part of the data. ..because the first one is reading. Only
- one of the select()s are waken.
-
- Its possible to put lockfile support in for HPUX if it is known where other
- applications place their lockfiles. The easiest way to find out where is
- to fire up minicom, kermit, ... and see where its lockfile is placed.
-
- Here are the known suspects:
-
- const char *lockdirs[]={ "/etc/locks", "/usr/spool/kermit",
- "/usr/spool/locks", "/usr/spool/uucp", "/usr/spool/uucp/",
- "/usr/spool/uucp/LCK", "/var/lock", "/var/lock/modem",
- "/var/spool/lock", "/var/spool/locks", "/var/spool/uucp",NULL
- };
-
- freebsd uses /var/spool/uucp/, linux uses /var/lock those are the only two
- I've done so far. Adding the support is trivial once a directory is
- decided upon.
-
- Lockfiles are rather simple. when an application opens a port it first checks
- if there is a file with the ports name. If there is it grabs the PID from the
- file. If that PID is still active the application does not open the port.
-
- If the PID is not active or there is no lockfile, the application creates one
- with its own PID in it.
-
- The confusion starts when you have to decide where (see above) to put the
- lockfile, what the name format is for the file and how to store the PID.
-
- rxtx follows The File System Hierarchy Standard http://www.pathname.com/fhs/
- on linux. I'm not positive what is normal on other OS's.
-
- more reading:
-
- The File System Hierarchy Standard
- http://www.pathname.com/fhs/
-
- FSSTND
- ftp://tsx-11.mit.edu/pub/linux/docs/linux-standards/fsstnd/
-
- Proposed Changes to the File System Hierarchy Standard
- ftp://scicom.alphacdc.com/pub/linux/devlock-0.X.tgz
-
- "UNIX Network Programming", W. Richard Stevens,
- Prentice-Hall, 1990, pages 96-101.
- more reading:
-
- V. My ThinkPad is Not Working!
-
- Scott Burleigh <Scott.Burleigh@jpl.nasa.gov> writes:
-
- For your files, and in case anybody asks in the
- future, IBM Thinkpads ship with the external serial port
- *disabled* by default. The Thinkpad configuration utility
- supplied with the machine (under Windows) says it's enabled,
- and the device manager in the System dialog of the Control
- panel says it's enabled, but they lie. In order to enable the
- port you have to use the old DOS ps2.exe bios configuration
- utility which, under Windows 2000, is in
- c:\Program Files\Thinkpad\utilities:
-
- ps2 sera enable
-
- Until you do, "setserial -ga /dev/ttyS0" will always tell you
- the UART is unknown.
-
-
-
- 4. APPLETS
-
- More info is needed on signing applets. This is an exchange from the rxtx mail-
- list.
-
- A. Using Applets
-
- prashantg10@yahoo.com asked:
-
- Hi All !
-
- I am trying to use applet on thin terminal which has
- Linux base Kernel.For testing I am using Linux
- machine.I have install all the required components.
- e.g. JDK, RXTX. Everthing is fine. BlackBox runs ,even
- my application runs. When It comes to applet,
- everything is halts. It does not even show the listing
- of ports. Is it because applet can't run under root
- account or what might be the reasons. Can anybody tell
- me solution.
-
- Son To <son@openbx.net> replied:
-
- Java applets run withing the sandbox of the security manager.
- Applets must be signed to access the com port, but for development
- purposes you can put
-
- user_pref("signed.applets.codebase_principal_support", true);
-
- in your prefs.js located in ~/.mozilla/default/XYYrandomDirName
-
- I didn't use Java applet for my application. I used XUL and CSS for
- the GUI development and used mozilla Javascript SOAP library to
- communicate with apache Axis webservice backend which uses RXTX to
- access the com port.
-
- --
- Trent Jarvi
- taj@www.linux.org.uk
- -------------------------------------------------------------------------------
- You made it this far.. what is one more line.
-
- Sun, Solaris and Java are registered trademarks of Sun Microsystems, Inc.
-
-
- reminder:
-
- redhat 7.1 needs:
- export LD_ASSUME_KERNEL=2.2.5
|