-1

我面临一个关于在我希望用来存储在数据库中的类上使用来自 rf 传输的数据的问题。代码 1 是用于射频传输的代码。无论如何我可以使用代码1中要使用的数据突出显示的数据吗?

public synchronized void serialEvent(SerialPortEvent oEvent) {
    if (oEvent.getEventType() == SerialPortEvent.DATA_AVAILABLE) {
        try {

            String inputLine=input.readLine();
            String[] parts = inputLine.split(",");
            String part1 = parts[0]; 
            String part2 = parts[1];
            System.out.print(part1); // data to be used 
            System.out.print(" , ");
            System.out.println(part2); //data to be used
            //System.out.println(data);

代码 1

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStream;
import gnu.io.CommPortIdentifier; 
import gnu.io.SerialPort;
import gnu.io.SerialPortEvent; 
import gnu.io.SerialPortEventListener; 
import java.util.Enumeration;


public class test implements SerialPortEventListener {
SerialPort serialPort;
    /** The port we're normally going to use. */
private static final String PORT_NAMES[] = { 
        "COM4", // Windows

};

/**
* A BufferedReader which will be fed by a InputStreamReader 
* converting the bytes into characters 
* making the displayed results codepage independent
*/

private BufferedReader input;
/** The output stream to the port */
private OutputStream output;
/** Milliseconds to block while waiting for port open */
private static final int TIME_OUT = 2000;
/** Default bits per second for COM port. */
private static final int DATA_RATE = 9600;

public void initialize() {

    CommPortIdentifier portId = null;
    Enumeration portEnum = CommPortIdentifier.getPortIdentifiers();

    //First, Find an instance of serial port as set in PORT_NAMES.
    while (portEnum.hasMoreElements()) {
        CommPortIdentifier currPortId = (CommPortIdentifier)     portEnum.nextElement();
        for (String portName : PORT_NAMES) {
            if (currPortId.getName().equals(portName)) {
                portId = currPortId;
                break;
            }
        }
    }
    if (portId == null) {
        System.out.println("Could not find COM port.");
        return;
    }

    try {
        // open serial port, and use class name for the appName.
        serialPort = (SerialPort) portId.open(this.getClass().getName(),
                TIME_OUT);

        // set port parameters
        serialPort.setSerialPortParams(DATA_RATE,
                SerialPort.DATABITS_8,
                SerialPort.STOPBITS_1,
                SerialPort.PARITY_NONE);

        // open the streams
        input = new BufferedReader(new InputStreamReader(serialPort.getInputStream()));
        output = serialPort.getOutputStream();

        // add event listeners
        serialPort.addEventListener(this);
        serialPort.notifyOnDataAvailable(true);
    } catch (Exception e) {
        System.err.println(e.toString());
    }
}

/**
 * This should be called when you stop using the port.
 * This will prevent port locking on platforms like Linux.
 */
public synchronized void close() {
    if (serialPort != null) {
        serialPort.removeEventListener();
        serialPort.close();
    }
}

/**
 * Handle an event on the serial port. Read the data and print it.
 */
public synchronized void serialEvent(SerialPortEvent oEvent) {
    if (oEvent.getEventType() == SerialPortEvent.DATA_AVAILABLE) {
        try {

            String inputLine=input.readLine();
            String[] parts = inputLine.split(",");
            String part1 = parts[0]; 
            String part2 = parts[1];
            System.out.print(part1); // data to be used 
            System.out.print(" , ");
            System.out.println(part2); //data to be used
            //System.out.println(data);

        } catch (Exception e) {
            System.err.println(e.toString());
        }
    }
    // Ignore all the other eventTypes, but you should consider the other ones.
}

public static void main(String[] args) throws Exception {
    test main = new test();
    main.initialize();
    Thread t=new Thread() {
        public void run() {
            //the following line will keep this app alive for 1000 seconds,
            //waiting for events to occur and responding to them (printing incoming messages to console).
            try {Thread.sleep(1000000);} catch (InterruptedException ie) {}
        }
    };
    t.start();
    System.out.println("Started");

}
4

1 回答 1

0

我可能仍然对您的要求感到困惑。我认为另一个类使用变量的最简单方法是将参数中的值传递给它的一个函数。

例如。

class ClassThatUsesPart1Part2 {

    public void usePart1Part2(String part1, String part2) {
        // put code that uses part1 and part2 here
    }
}

向您的类添加另一个变量。

private BufferedReader input;
/** The output stream to the port */
private OutputStream output;
/** Milliseconds to block while waiting for port open */
private static final int TIME_OUT = 2000;
/** Default bits per second for COM port. */
private static final int DATA_RATE = 9600;

/** Variable of class that will use part1, part2.*/
private ClassThatUsesPart1Part2 part12User = new ClassThatUsesPart1Part2();

然后在你的函数中使用它。

        String inputLine=input.readLine();
        String[] parts = inputLine.split(",");
        String part1 = parts[0]; 
        String part2 = parts[1];
        part12User.usePart1Part2(part1,part2);

这是你要找的还是我完全误解了?

于 2015-08-22T15:26:38.380 回答