1

これは私のJavaコードです:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package jsscusbconnection;

import jssc.SerialPort;
import jssc.SerialPortEvent;
import jssc.SerialPortEventListener;
import jssc.SerialPortException;

/**
 *
 * @author Heshan
 */
public class JsscUsbConnection {

    /**
     * @param args the command line arguments
     */
    static SerialPort serialPort;

    public static void main(String[] args) {
        serialPort = new SerialPort("COM15");
        try {
            System.out.println("port open :" + serialPort.openPort());//Open port
            serialPort.setParams(SerialPort.BAUDRATE_9600,
                    SerialPort.DATABITS_8,
                    SerialPort.STOPBITS_1,
                    SerialPort.PARITY_NONE);

            int mask = SerialPort.MASK_RXCHAR + SerialPort.MASK_CTS + SerialPort.MASK_DSR;//Prepare mask
            serialPort.setEventsMask(mask);//Set mask
            serialPort.addEventListener(new SerialPortReader());//Add SerialPortEventListener
        } catch (SerialPortException ex) {
            System.out.println(ex);
        }
    }

    static class SerialPortReader implements SerialPortEventListener {

        public void serialEvent(SerialPortEvent event) {
            if (event.isRXCHAR()) {//If data is available
                //System.out.println(event.getEventValue());
                if (event.getEventValue() > 4) {//Check bytes count in the input buffer

                    //Read data, if 10 bytes available
                    try {
                        byte buffer[] = serialPort.readBytes(4);

                        System.out.println(buffer[0] + "  " + buffer[1] + "  " + buffer[2] + "  " + buffer[3]);
                    } catch (SerialPortException ex) {
                        System.out.println(ex);
                    }
                }
            } else if (event.isCTS()) {//If CTS line has changed state
                if (event.getEventValue() == 1) {//If line is ON
                    System.out.println("CTS - ON");
                } else {
                    System.out.println("CTS - OFF");
                }
            } else if (event.isDSR()) {///If DSR line has changed state
                if (event.getEventValue() == 1) {//If line is ON
                    System.out.println("DSR - ON");
                } else {
                    System.out.println("DSR - OFF");
                }
            }
        }
    }
}

これは私のArduinoコードです:

int k=0;

void setup(){
    Serial.begin(9600);
}

void loop(){
    Serial.println(67,BYTE);
    Serial.println(98,BYTE);
    Serial.println(34,BYTE);
    Serial.println(108,BYTE);
    Serial.flush();
}

これは私のJavaコードの出力です:

67 13 10 98
13 10 34 13
10 108 13 10
67 13 10 98

それらの大胆な価値は何ですか?これらの未知の値についてはわかりません。

4

2 に答える 2

4

10 バイトと 13 バイトは \r\n 記号です。http://arduino.ccprintln()からの関数の説明:

人間が判読できる ASCII テキストとしてシリアル ポートにデータを出力し、その後にキャリッジ リターン > 文字 (ASCII 13 または '\r') と改行文字 (ASCII 10 または '\n') が続きます。このコマンドは >Serial.print() と同じ形式を取ります。

これらの終了行記号が必要ない場合は、生のバイトを送信するためにprint()関数またはwrite()関数を使用してください。

于 2012-10-01T19:31:51.947 に答える
3

13はキャリッジリターンです。10は改行です。シリアル I/O を扱っている場合は、それを知っておく必要があります。9はタブです。12は用紙送りです。ASCII テーブルを確認してください。

于 2012-10-01T10:07:35.563 に答える