jssc (serialPort.readBytes() ) mit Arduino
Dies ist mein Java code:
/*
* 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");
}
}
}
}
}
Dies ist mein Arduino code:
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();
}
Diese meine Ausgabe des Java-code:
67 13 10 98
13 10 34 13
10 108 13 10
67 13 10 98
Was sind die Fett Werte? Ich habe keine Ahnung über diese unbekannten Werte.
Du musst angemeldet sein, um einen Kommentar abzugeben.
13 ist ein carriage return. 10 ist ein line feed. Wenn man sich mit seriellen I/O sollten Sie wirklich wissen, dass. 9 ist ein tab. 12 ist ein form feed. Überprüfen Sie die ASCII-Tabelle.
10 und 13 bytes \r\n-Symbole. Die Beschreibung der
println()
Funktion von http://arduino.cc:Wenn Sie nicht benötigen diese end-Linie Symbole verwenden, die print() - Funktion oder die schreiben() Funktion zum senden von raw-bytes.
Serial.println(1.23456, 0) gives "1" Serial.println(1.23456, 2) gives "1.23" Serial.println(1.23456, 4) gives "1.2346"
Für mehr info Lesen Sie diese: arduino.cc/en/Serial/Print