Ok, have rxtx now working properly with a simple Java application (had
been using an improperly shorted null model cable in my testing.) Once
that was cleared up I was able to both read and write the serial port
(following all the instructions on commenting out /etc/inittab, etc.
as noted earlier in this thread).
Still having a problem with Modbus, but that's a whole different
kettle of fish... Thanks for all the help!
--- In Christopher Friedt <> wrote:
>
> I'm going to ask one of my colleagues that uses rxtx much more than
> myself. You're running the jamvm process as root though, right? Just to
> ensure that there are no user/group permission problems. Although that
> wouldn't explain why you could write but not read.
>
> ~/Chris
>
> tedapt wrote:
> > I'm trying to use /dev/ttyAM0 to communicate with another device using
> > the Modbus protocol. My Java application runs as a Modbus master,
> > connects to the other device which acts as a Modbus slave.
> >
> > My setup is:
> > - a TS-7250 (only COM1 is wired)
> > - Debian Sarge loaded from a USB drive
> > - JamVM
> > - rxtx 2.1 (with a symlink created from /dev/ttyAM0 to /dev/ttySO) to
> > allow rxtx to find the port
> >
> > I appear to be able to find and write to the serial port, but fail
> > when trying to read.
> >
> > I've removed jumper JP2, commented out the line in /etc/inittab that
> > initializes getty on /dev/ttyAM0. I've confirmed that there are no
> > getty processes running on /dev/ttyAM0 (ps -ef | grep getty) also
> > modified by RedBoot startup script to use ttyAM1 as the console
> > instead of ttyAM0.
> >
> > I notice that stty gives different output before and after I attempt
> > to run my application. Do I need to configure the serial port through
> > Debian somehow? This is the output from stty:
> >
> > Before application attempt:
> >
> > :root# stty -F /dev/ttyAM0
> > speed 115200 baud; line = 0;
> > min = 1; time = 0;
> > -brkint -icrnl -imaxbel
> > -opost -onlcr
> > -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke
> >
> > After application attempt:
> >
> > :hawkeye# stty -F /dev/ttyAM0
> > speed 9600 baud; line = 0;
> > min = 0; time = 2;
> > -brkint -icrnl -imaxbel
> > -opost -onlcr
> > -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke
> >
> > Thanks for your help!
> >
> > --- In Christopher Friedt <cfriedt@> wrote:
> >> Hmm...
> >>
> >> What exactly are you trying to do with /dev/ttyAM0 ? Is it just to
> > get a
> >> console on the device? if so, you might have to add it to
> > /etc/securetty
> >> as well.
> >>
> >> ~/Chris
> >>
> >> tedapt wrote:
> >>> Ugh! Editing the getty setup lines in /etc/inittab didn't fix it,
> >>> still cannot read on /dev/ttyAM0. Anything else you had to do to
> >>> configure the port, like use stty to tweak the port settings or
> >>> something similar?
> >>>
> >>> Are you also running Debian on a TS-7250 loaded from a USB drive?
> >>> That adds a level of complexity for me, as I have to allow getty to
> >>> use /dev/ttyAM0 until I get Debian running or the script that
enables
> >>> USB modules won't load (/usr/bin/loadUSBModules.sh), then I can kill
> >>> the getty process. But I wonder if that script may somehow hang
onto
> >>> the port?
> >>>
> >>> --- In justin@ wrote:
> >>>> yes, after the os boots you will no longer have com access. If
you
> >>>> remove the jumpers on the board, jp2? It will prevent console on
> > the
> >>>> com during the boot. You could just comment out com1 and send
the
> >>>> console stuff to com2. I needed both so I had to ditch the
console.
> >>>>
> >>>> Justin
> >>>> Quoting tedapt <tedapt@>:
> >>>>
> >>>>> great! will give this a try in a few days when back on my
> > system. Did
> >>>>> a quick search on /etc/inittab, from what I gather this contains
> >>>>> instructions for starting up the getty process to manage user
logins
> >>>>> on the console via the serial port(?) If that's right, do you
think
> >>>>> commenting it out will prevent use of the serial port for
accessing
> >>>>> the board (handy when ethernet is unavailable)?
> >>>>>
> >>>>> --- In justin@ wrote:
> >>>>>> Got it to work. You have to disable the consol on the com ports.
> >>>>>> Look at your /etc/inittab. Comment out any lines with the com
> >>>>> ports
> >>>>>> name in it. I am using both ports so I commented out both:
ttyAM0
> >>>>> and
> >>>>>> ttyAM1.
> >>>>>>
> >>>>>> Quoting tedapt <tedapt@>:
> >>>>>>
> >>>>>>> OK, I'll let you know whatever I find too. Won't be able to get
> >>>>> back
> >>>>>>> to this and retest for a few days though. My test plan is to
> >>>>> write a
> >>>>>>> Java app that will listen for data on the serial port, and
echo it
> >>>>>>> when received.
> >>>>>>>
> >>>>>>> One thing I've noticed is that if I try to start a listening app
> >>>>> on
> >>>>>>> the port it seems to lock the port at the OS level. I was then
> >>>>> unable
> >>>>>>> to access the port through the command line (e.g., echo
> >>>>>>>> /dev/ttyS0). Wonder if this may be related to the read
problem?
> >>>>> If
> >>>>>>> that's so, wonder if there's a way to share the port between
> >>>>> multiple
> >>>>>>> clients?
> >>>>>>>
> >>>>>>> --- In justin@ wrote:
> >>>>>>>> Hey,
> >>>>>>>>
> >>>>>>>> Yeah, I am having a similar problem. I can write just fine. I
> >>>>> set
> >>>>>>> up
> >>>>>>>> a comm connection to the hyper term. But I can't receive
> >>>>> anything
> >>>>>>>> back. I'll let you know what I find. I ended up building
my own
> >>>>>>> rxtx
> >>>>>>>> lib, but same problem so I don't think thats the issue.
> >>>>>>>>
> >>>>>>>>
> >>>>>>>> Quoting tedapt <tedapt@>:
> >>>>>>>>
> >>>>>>>>> thanks Justin. I seem to have had some limited success with
> >>>>> rxtx
> >>>>>>> 2.1
> >>>>>>>>> (the one you mention first) by simply creating a symlink
> >>>>>>>>> from /dev/ttyAMO to /dev/ttyS0 (ln -s /dev/ttyAM0 /dev/ttyS0).
> >>>>>>> Still
> >>>>>>>>> having problems communicating with a Modbus device, but
> >>>>> otherwise
> >>>>>>>>> Java is acting like it finds and can open the serial port (of
> >>>>>>> course
> >>>>>>>>> my "solution" may be part of the problem!)
> >>>>>>>>>
> >>>>>>>>> Current problem is that though my app claims to open
> >>>>> connections
> >>>>>>> and
> >>>>>>>>> make Modbus requests on /dev/ttyS0, I'm unable to get a
> >>>>> readable
> >>>>>>>>> response back (this code works properly on another platform).
> >>>>> I
> >>>>>>> need
> >>>>>>>>> to do some further testing with some simple Serial code to
> >>>>> prove
> >>>>>>> to
> >>>>>>>>> myself I can really write and read with the port properly.
> >>>>>>>>>
> >>>>>>>>> I'm wondering if I need to configure my serial port somehow
> >>>>> (not
> >>>>>>> very
> >>>>>>>>> experienced with serial ports, not sure if that's required or
> >>>>>>> takes
> >>>>>>>>> care of itself). My app sets connection params of 9600
baud, no
> >>>>>>>>> parity, 8 data bits, 1 stop bit. Anyone know if the linux
> >>>>> system
> >>>>>>>>> (perhaps using stty) needs to configure the port to match
this,
> >>>>>>> or is
> >>>>>>>>> it only the client app at the other end of the communication
> >>>>> that
> >>>>>>>>> needs to match the same parameters?
> >>>>>>>>>
> >>>>>>>>> Also, I'm using JamVM, so my RXTXcomm.jar was placed
> >>>>>>>>> in /usr/lib/jamvm (also where I placed librxtxSerial.so)
> >>>>>>>>>
> >>>>>>>>> Further, I was unable to enumerate the serial ports using rxtx
> >>>>>>> 2.0.
> >>>>>>>>> I would settle for a working rxtx 2.1 solution, and from the
> >>>>> rxtx
> >>>>>>>>> documentation it seems that rxtx 2.1 is the preferred solution
> >>>>>>> when
> >>>>>>>>> possible to use it (i.e., when have ability to import gnu.io
> >>>>>>> classes
> >>>>>>>>> instead of javax.comm).
> >>>>>>>>>
> >>>>>>>>> --- In justin@ wrote:
> >>>>>>>>>> I am working on the same thing, didnt want to respond till I
> >>>>> an
> >>>>>>>>> answer
> >>>>>>>>>> You can download the most current version of the arm-unknown-
> >>>>>>> linux-
> >>>>>>>>> gnu
> >>>>>>>>>> binary at rxtx site:
> >>>>>>>>>> ftp://ftp.qbang.org/pub/rxtx/ToyBox/2.1-7-build1/Linux/glibc-
> >>>>>>>>> 2.3.5/arm-unknown-linux-gnu/
> >>>>>>>>>> The easyest way to add the ttyAMx com ports is to set the
> >>>>> system
> >>>>>>>>> properties:
> >>>>>>>>>> jamvm -Dgnu.io.rxtx.SerialPorts=/dev/ttyAM0:/dev/ttyAM1 foo
> >>>>>>>>>>
> >>>>>>>>>> The other way:
> >>>>>>>>>> RXTXCommDriver.java is
> >>>>>>>>>> available in ftp://ftp.qbang.org/pub/rxtx/rxtx-2.0-7pre2/src/
> >>>>>>>>> Download the
> >>>>>>>>>> RXTXCommDriver.java. In this code, you will find
> >>>>>>>>>>
> >>>>>>>>>> if (osName.equals ("Linux")) { String[]Temp = { "ttyS", //
> >>>>> linux
> >>>>>>>>> Serial
> >>>>>>>>>> Ports "ttySA" // for the IPAQs }; CandidatePortPrefixes =
> >>>>> Temp;
> >>>>>>>>>> Replace this code with
> >>>>>>>>>>
> >>>>>>>>>> if (osName.equals ("Linux")) { String[]Temp =
> >>>>>>>>> { "ttyS", "ttyAM", // linux
> >>>>>>>>>> Serial Ports "ttySA" // for the IPAQs };
> >>>>> CandidatePortPrefixes =
> >>>>>>>>> Temp; }
> >>>>>>>>>> Compile the RXTXCommDriver.java and add the resulting
> >>>>>>>>> RXTXCommDriver.class
> >>>>>>>>>> file to RXTXcomm.jar
> >>>>>>>>> in /usr/java/jdk1.5.0_07/jre/lib/ext/RXTXcomm.jar
> >>>>>>>>>> Hope this help,
> >>>>>>>>>> Justin
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>> Quoting tedapt <tedapt@>:
> >>>>>>>>>>
> >>>>>>>>>>> Can anyone clarify Dave's statement about the use of rxtx:
> >>>>>>>>>>>
> >>>>>>>>>>> > note: you have to add the arm's /dev/ttyAMx to rxtx, it
> >>>>>>>>> doesn't
> >>>>>>>>>>> know about them
> >>>>>>>>>>>
> >>>>>>>>>>> Also, any notes from anyone who has successfully setup and
> >>>>> used
> >>>>>>>>> rxtx
> >>>>>>>>>>> with jamvm would be appreciated!
> >>>>>>>>>>>
> >>>>>>>>>>> The setup I'm attempting to get working is:
> >>>>>>>>>>>
> >>>>>>>>>>> - TS-7250
> >>>>>>>>>>> - debian on a USB thumbdrive
> >>>>>>>>>>> - jamvm installed via apt-get
> >>>>>>>>>>> - downloaded rxtx rxtx-2.0-7pre1 for Linux from:
> >>>>>>>>>>> http://users.frii.com/jarvi/rxtx/download.html (file
> >>>>> at
> >>>>>>>>>>> ftp://ftp.qbang.org/pub/rxtx/rxtx-2.0-7pre1-i686-pc-linux-
> >>>>>>>>> gnu.tar.gz)
> >>>>>>>>>>> - extracted librxtxSerial.so and placed it
> >>>>> in /usr/lib/jamvm
> >>>>>>>>>>> - using Sun's comm.jar (from a Java 1.3 distribution)
> >>>>>>>>>>>
> >>>>>>>>>>> When I invoke the test class (source below) I get these
> >>>>>>> results:
> >>>>>>>>>>> root# /usr/bin/jamvm -cp .:comm.jar
> >>>>> SerialTest /dev/ttyAM0
> >>>>>>> 9600
> >>>>>>>>>>> Specified serial port (/dev/ttyAM0) does not exist
> >>>>>>>>>>> null
> >>>>>>>>>>> javax.comm.NoSuchPortException
> >>>>>>>>>>> at
> >>>>>>>>>>> javax.comm.CommPortIdentifier.getPortIdentifier
> >>>>>>>>> (CommPortIdentifier.java:105)
> >>>>>>>>>>> at SerialTest.main(SerialTest.java:32)
> >>>>>>>>>>>
> >>>>>>>>>>> Here's source for SerialTest.java:
> >>>>>>>>>>>
> >>>>>>>>>>> import java.io.IOException;
> >>>>>>>>>>> import java.io.InputStream;
> >>>>>>>>>>> import java.io.OutputStream;
> >>>>>>>>>>> import java.util.Enumeration;
> >>>>>>>>>>>
> >>>>>>>>>>> import javax.comm.CommPortIdentifier;
> >>>>>>>>>>> import javax.comm.NoSuchPortException;
> >>>>>>>>>>> import javax.comm.PortInUseException;
> >>>>>>>>>>> import javax.comm.SerialPort;
> >>>>>>>>>>> import javax.comm.UnsupportedCommOperationException;
> >>>>>>>>>>>
> >>>>>>>>>>> public class SerialTest {
> >>>>>>>>>>>
> >>>>>>>>>>> private static SerialPort sp;
> >>>>>>>>>>> private static InputStream sin;
> >>>>>>>>>>> private static OutputStream sout;
> >>>>>>>>>>>
> >>>>>>>>>>> public static void main(String[] args) {
> >>>>>>>>>>> try {
> >>>>>>>>>>> if (args.length != 2) {
> >>>>>>>>>>> System.out.println("Usage:
> >>>>> java
> >>>>>>>>> SerialTerm.tini port_name data_rate");
> >>>>>>>>>>> System.out.println("Available
> >>>>> ports
> >>>>>>>>> are:\n");
> >>>>>>>>>>> Enumeration ports =
> >>>>>>>>> CommPortIdentifier.getPortIdentifiers();
> >>>>>>>>>>> while(ports.hasMoreElements())
> >>>>> {
> >>>>>>>>>>> System.out.println
> >>>>>>>>> (ports.nextElement() + "\n");
> >>>>>>>>>>> }
> >>>>>>>>>>> System.exit(1);
> >>>>>>>>>>> }
> >>>>>>>>>>> String portName = args[0];
> >>>>>>>>>>> int baudRate = Integer.parseInt(args[1]);
> >>>>>>>>>>> try {
> >>>>>>>>>>> sp =
> >>>>>>>>>>> (SerialPort)CommPortIdentifier.getPortIdentifier
> >>>>> (portName).open
> >>>>>>>>> ("SerialTerm",
> >>>>>>>>>>> 5000);
> >>>>>>>>>>> sp.setSerialPortParams(baudRate,
> >>>>>>>>> SerialPort.DATABITS_8,
> >>>>>>>>>>> SerialPort.STOPBITS_1,
> >>>>>>>>>>> SerialPort.PARITY_NONE);
> >>>>>>>>>>> sin = sp.getInputStream();
> >>>>>>>>>>> sout = sp.getOutputStream();
> >>>>>>>>>>> } catch (NoSuchPortException nsp) {
> >>>>>>>>>>> System.out.println("Specified serial port
> >>>>>>> ("+portName+
> >>>>>>>>>>> ") does not exist");
> >>>>>>>>>>> throw nsp;
> >>>>>>>>>>> } catch (PortInUseException piu) {
> >>>>>>>>>>> System.out.println("Serial port "+portName+
> >>>>>>>>>>> " in use by another
> >>>>>>> application");
> >>>>>>>>>>> throw piu;
> >>>>>>>>>>> } catch (UnsupportedCommOperationException usc) {
> >>>>>>>>>>> System.out.println("Unable to configure
> >>>>>>>>> port:"+portName);
> >>>>>>>>>>> throw usc;
> >>>>>>>>>>> } catch (IOException ioe) {
> >>>>>>>>>>> System.out.println(
> >>>>>>>>>>> "Unable to acquire I/O
> >>>>> streams
> >>>>>>> for
> >>>>>>>>> port
> >>>>>>>>>>> " + portName);
> >>>>>>>>>>> throw ioe;
> >>>>>>>>>>> }
> >>>>>>>>>>> } catch (Exception e) {
> >>>>>>>>>>> System.out.println(e.getMessage());
> >>>>>>>>>>> e.printStackTrace();
> >>>>>>>>>>> }
> >>>>>>>>>>> }
> >>>>>>>>>>>
> >>>>>>>>>>> }
> >>>>>>>>>>>
> >>>>>>>>>>> --- In Dave Cramer <davec@> wrote:
> >>>>>>>>>>>> I've been running jamvm on mine for quite a while. You
> >>>>> don't
> >>>>>>> need
> >>>>>>>>>>>> jikes, unless you plan to compile on the arm (Very slow)
> >>>>>>>>>>>> I pulled alot of the gnuclasspath out, and the whole thing
> >>>>> is
> >>>>>>>>> quite
> >>>>>>>>>>>> small. Around 4M or so
> >>>>>>>>>>>>
> >>>>>>>>>>>> you need rxtx for serial port work with java,, other than
> >>>>> that
> >>>>>>>>> it's
> >>>>>>>>>>>> write once deploy everywhere
> >>>>>>>>>>>>
> >>>>>>>>>>>> note: you have to add the arm's /dev/ttyAMx to rxtx, it
> >>>>>>> doesn't
> >>>>>>>>> know
> >>>>>>>>>>>> about them
> >>>>>>>>>>>>
> >>>>>>>>>>>> Dave
> >>>>>>>>>>>> On 7-Nov-06, at 8:57 PM, gunghoiguana wrote:
> >>>>>>>>>>>>
> >>>>>>>>>>>>> The install was much easier than I anticipated:
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> apt-get install jikes
> >>>>>>>>>>>>> apt-get install jamvm
> >>>>>>>>>>>>> apt-get install jikes-classpath
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> Everything seems to work fine, and I can run class files
> >>>>>>> that I
> >>>>>>>>>>>>> compiled on my desktop PC. I've only checked out basic
> >>>>>>>>> functions and
> >>>>>>>>>>>>> console IO so far, but I'll be checking out the serial
> >>>>> port
> >>>>>>> and
> >>>>>>>>>>>>> network interfaces soon. Java is *supposed* to make those
> >>>>>>>>> things
> >>>>>>>>>>>>> easy...
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> Brian
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>
> >>>>>>>
> >>>>>
> >>>
> >>>
> >
> >
> >
>
Yahoo! Groups Links
<*> To visit your group on the web, go to:
http://groups.yahoo.com/group/ts-7000/
<*> Your email settings:
Individual Email | Traditional
<*> To change settings online go to:
http://groups.yahoo.com/group/ts-7000/join
(Yahoo! ID required)
<*> To change settings via email:
<*> To unsubscribe from this group, send an email to:
<*> Your use of Yahoo! Groups is subject to:
http://docs.yahoo.com/info/terms/
|