Chief Delphi

Chief Delphi (http://www.chiefdelphi.com/forums/index.php)
-   Programming (http://www.chiefdelphi.com/forums/forumdisplay.php?f=51)
-   -   Using the cRIO serial port in Java (http://www.chiefdelphi.com/forums/showthread.php?t=91212)

Daniel 07-02-2011 22:47

Using the cRIO serial port in Java
 
I am looking for a Jave code snippet of how to configure the cRIO serial port and how to use it. Can it take over the System.Out functionality?

I am also looking for code to do formatted number to string conversion. Is there any native Java class? I need something simple. I do not need all of the Swing overhead.

I am planning on sending data out the cRIO serial port into a PC running HyperTerminal to make an elaborate disgnostic screen. I will send it ANSI escape sequences to control the cursor. I've done this in C and it is a great tool for the team to maintain the robot.

Daniel

kinganu123 07-02-2011 23:05

Re: Using the cRIO serial port in Java
 
I'm just a bit confused on what you mean by the serial port...
I thought the serial port from the module was to connect to the digital sidecar....

jhersh 08-02-2011 01:59

Re: Using the cRIO serial port in Java
 
Quote:

Originally Posted by Daniel (Post 1018102)
I am looking for a Jave code snippet of how to configure the cRIO serial port and how to use it. Can it take over the System.Out functionality?

I am also looking for code to do formatted number to string conversion. Is there any native Java class? I need something simple. I do not need all of the Swing overhead.

I am planning on sending data out the cRIO serial port into a PC running HyperTerminal to make an elaborate disgnostic screen. I will send it ANSI escape sequences to control the cursor. I've done this in C and it is a great tool for the team to maintain the robot.

Daniel

If you switch the CONSOLE OUT DIP switch off, the serial port will not be controlled by the System.out. You can then use the SerialPort class in WPILib to access the port.

Have you considered using a TCP connection to the PC instead?

-Joe

Daniel 08-02-2011 08:55

Re: Using the cRIO serial port in Java
 
The serial port on the cRIO is the 9-pin D connector.

I prefer serial RS232 communications because it is simple. No setting of IP address, just plug and go. I've used this in the past and liked it.

I am asking for an example of using the SerialPort class that has actually worked. Specifically the constructor with try-catch logic in Java.

Robototes2412 08-02-2011 10:58

Re: Using the cRIO serial port in Java
 
Code:

package com.shadowh511.mayor.util;

import edu.wpi.first.wpilibj.SerialPort;

/**
 *
 * @author Team 2412
 */
public class Arduino {
    /*
    * Hopefully, i will be able to have an arduino be hooked up to the robot
    * and communicate with the serial port.  I can use this to do many things,
    * such as maintain a LCD screen and display data on it to help the electrical
    * and mechanical teams figure out what went wrong.
    *
    * In all realism, it will most likely just be a fun cool thing for me to
    * play with :D
    */
    private SerialPort serial;

    public Arduino() {
        try {
            serial = new SerialPort(115200);
            this.serial.disableTermination();
            this.serial.print("h");
            System.out.println("Arduino Starting, waiting 0.5 seconds to get data");
            String e = this.getData();
            edu.wpi.first.wpilibj.Timer.delay(0.125);

            if(e.equals("h")) {
                System.out.println("Arduino communications locked in");
            }
        }
        catch (Exception e) {
            System.out.println("something went wrong, " + e.getMessage());
        }
    }

    public String getData() {
        try {
            return this.serial.readString();
        } catch (Exception e) {
            System.out.println("something went wrong, " + e.getMessage());
            return null;
        }
    }

    public boolean sendData(byte[] buffer) throws Exception {
        try {
            int count = buffer.length;
            this.serial.write(buffer, count);
            return true;
        } catch (Exception e) {
            System.out.println("something went wrong, " + e.getMessage());
            return false;
        }
    }
   
    public boolean printf(String data) {
        try {
            this.serial.print(data);
            return true;
        } catch (Exception e) {
            System.out.println("something went wrong, " + e.getMessage());
            return false;
        }
    }

    public String requestData() {
        try {
            this.serial.print("r");
            return this.serial.readString();
        } catch (Exception e) {
            System.out.println("something went wrong, " + e.getMessage());
            return null;
        }
    }

    public int requestData(String request) {
        try {
            this.serial.print(request);
            return NumberUtils.stringToInt(this.getData());
        } catch (Exception e) {
            System.out.println("something went wrong, " + e.getMessage());
            return 0;
        }
    }
}


Daniel 08-02-2011 12:06

Re: Using the cRIO serial port in Java
 
Does this work regardless of the CONSOLE OUT switch position on the cRIO?

I do not want console data mixed in with my diagnostic data, so I prefer the switch in the OFF position. Can I still send data to the Serial port?

Robototes2412 08-02-2011 12:11

Re: Using the cRIO serial port in Java
 
I would test that if i were you, I don't know

Daniel 08-02-2011 18:08

Re: Using the cRIO serial port in Java
 
Why does netbeans not find the valueOf() function?

Is there a special class to load?

long l;
String s;
s = valueOf(l);

Daniel 17-02-2011 08:02

Re: Using the cRIO serial port in Java
 
Because you need to use:


long l;
String s;
s = String.valueOf(l);


All times are GMT -5. The time now is 03:44.

Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Copyright © Chief Delphi