diff --git a/serial-io/build.gradle.kts b/serial-io/build.gradle.kts new file mode 100644 index 0000000..560ca3d --- /dev/null +++ b/serial-io/build.gradle.kts @@ -0,0 +1,14 @@ +/* + * Examples for Java + * + * Copyright (c) 2021. Elex. All Rights Reserved. + * https://www.elex-project.com/ + */ + +plugins { + id("elex-java") +} + +dependencies { + implementation("com.fazecast:jSerialComm:2.7.0") +} diff --git a/serial-io/src/main/java/kr/pe/elex/examples/Blocking.java b/serial-io/src/main/java/kr/pe/elex/examples/Blocking.java new file mode 100644 index 0000000..48f117a --- /dev/null +++ b/serial-io/src/main/java/kr/pe/elex/examples/Blocking.java @@ -0,0 +1,35 @@ +/* + * Examples for Java + * + * Copyright (c) 2021. Elex. All Rights Reserved. + * https://www.elex-project.com/ + */ + +package kr.pe.elex.examples; + +import com.elex_project.abraxas.Console; +import com.fazecast.jSerialComm.SerialPort; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +public class Blocking { + public static void main(String... args) { + SerialPort serialPort = SerialPort.getCommPort("/dev/ttyS0"); + serialPort.setComPortParameters(9600, 8, 1, SerialPort.NO_PARITY); + serialPort.setComPortTimeouts(SerialPort.TIMEOUT_READ_BLOCKING, 1000, 0); + serialPort.openPort(); + + try { + while (true) { + + byte[] buffer = new byte[512]; + int numRead = serialPort.readBytes(buffer, buffer.length); + Console.writeLine(buffer); + } + } catch (Throwable e) { + log.error("Oops!", e); + } + + serialPort.closePort(); + } +} diff --git a/serial-io/src/main/java/kr/pe/elex/examples/ListeningEvents.java b/serial-io/src/main/java/kr/pe/elex/examples/ListeningEvents.java new file mode 100644 index 0000000..a2ac6f2 --- /dev/null +++ b/serial-io/src/main/java/kr/pe/elex/examples/ListeningEvents.java @@ -0,0 +1,127 @@ +/* + * Examples for Java + * + * Copyright (c) 2021. Elex. All Rights Reserved. + * https://www.elex-project.com/ + */ + +package kr.pe.elex.examples; + +import com.elex_project.abraxas.Console; +import com.fazecast.jSerialComm.*; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +public class ListeningEvents { + public static void main(String... args) { + SerialPort serialPort = SerialPort.getCommPort("/dev/ttyS0"); + serialPort.setComPortParameters(9600, 8, 1, SerialPort.NO_PARITY); + serialPort.openPort(); + + serialPort.addDataListener(new SerialPortDataListener() { + @Override + public int getListeningEvents() { + return SerialPort.LISTENING_EVENT_DATA_AVAILABLE; + } + + @Override + public void serialEvent(SerialPortEvent event) { + if (event.getEventType() != SerialPort.LISTENING_EVENT_DATA_AVAILABLE) + return; + byte[] newData = new byte[serialPort.bytesAvailable()]; + int numRead = serialPort.readBytes(newData, newData.length); + Console.writeLine(newData); + } + }); + + serialPort.addDataListener(new SerialPortDataListener() { + @Override + public int getListeningEvents() { + return SerialPort.LISTENING_EVENT_DATA_WRITTEN; + } + + @Override + public void serialEvent(SerialPortEvent event) { + if (event.getEventType() == SerialPort.LISTENING_EVENT_DATA_WRITTEN) + Console.writeLine("All bytes were successfully transmitted!"); + } + }); + + serialPort.addDataListener(new SerialPortDataListener() { + @Override + public int getListeningEvents() { + return SerialPort.LISTENING_EVENT_DATA_RECEIVED; + } + + @Override + public void serialEvent(SerialPortEvent event) { + byte[] newData = event.getReceivedData(); + Console.writeLine(newData); + } + }); + + serialPort.addDataListener(new SerialPortPacketListener(){ + @Override + public int getListeningEvents() { + return SerialPort.LISTENING_EVENT_DATA_RECEIVED; + } + + @Override + public void serialEvent(SerialPortEvent event) { + byte[] newData = event.getReceivedData(); + Console.writeLine(newData); + } + + @Override + public int getPacketSize() { + return 64; + } + }); + + serialPort.addDataListener(new SerialPortMessageListener(){ + @Override + public int getListeningEvents() { + return SerialPort.LISTENING_EVENT_DATA_RECEIVED; + } + + @Override + public void serialEvent(SerialPortEvent event) { + byte[] newData = event.getReceivedData(); + Console.writeLine(newData); + } + + @Override + public byte[] getMessageDelimiter() { + return new byte[]{0x7e}; + } + + @Override + public boolean delimiterIndicatesEndOfMessage() { + return false; + } + }); + + serialPort.addDataListener(new SerialPortMessageListener(){ + @Override + public int getListeningEvents() { + return SerialPort.LISTENING_EVENT_DATA_RECEIVED; + } + + @Override + public void serialEvent(SerialPortEvent event) { + byte[] newData = event.getReceivedData(); + Console.writeLine(newData); + } + + @Override + public byte[] getMessageDelimiter() { + return new byte[]{'\n'}; + } + + @Override + public boolean delimiterIndicatesEndOfMessage() { + return true; + } + }); + } +} diff --git a/serial-io/src/main/java/kr/pe/elex/examples/NonBlocking.java b/serial-io/src/main/java/kr/pe/elex/examples/NonBlocking.java new file mode 100644 index 0000000..2179bd4 --- /dev/null +++ b/serial-io/src/main/java/kr/pe/elex/examples/NonBlocking.java @@ -0,0 +1,38 @@ +/* + * Examples for Java + * + * Copyright (c) 2021. Elex. All Rights Reserved. + * https://www.elex-project.com/ + */ + +package kr.pe.elex.examples; + +import com.elex_project.abraxas.Console; +import com.fazecast.jSerialComm.SerialPort; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +public class NonBlocking { + public static void main(String... args) { + SerialPort serialPort = SerialPort.getCommPort("/dev/ttyS0"); + serialPort.setComPortParameters(9600, 8, 1, SerialPort.NO_PARITY); + serialPort.setComPortTimeouts(SerialPort.TIMEOUT_NONBLOCKING, 0, 0); + serialPort.openPort(); + + try { + while (true) { + while (serialPort.bytesAvailable() == 0) { + Thread.sleep(20); + } + + byte[] buffer = new byte[serialPort.bytesAvailable()]; + int numRead = serialPort.readBytes(buffer, buffer.length); + Console.writeLine(buffer); + } + } catch (Throwable e) { + log.error("Oops!", e); + } + + serialPort.closePort(); + } +} diff --git a/serial-io/src/main/java/kr/pe/elex/examples/Sample.java b/serial-io/src/main/java/kr/pe/elex/examples/Sample.java new file mode 100644 index 0000000..288cb49 --- /dev/null +++ b/serial-io/src/main/java/kr/pe/elex/examples/Sample.java @@ -0,0 +1,11 @@ +/* + * Examples for Java + * + * Copyright (c) 2021. Elex. All Rights Reserved. + * https://www.elex-project.com/ + */ + +package kr.pe.elex.examples; + +public class Sample { +} diff --git a/serial-io/src/main/java/kr/pe/elex/examples/SemiBlocking.java b/serial-io/src/main/java/kr/pe/elex/examples/SemiBlocking.java new file mode 100644 index 0000000..bf8f644 --- /dev/null +++ b/serial-io/src/main/java/kr/pe/elex/examples/SemiBlocking.java @@ -0,0 +1,35 @@ +/* + * Examples for Java + * + * Copyright (c) 2021. Elex. All Rights Reserved. + * https://www.elex-project.com/ + */ + +package kr.pe.elex.examples; + +import com.elex_project.abraxas.Console; +import com.fazecast.jSerialComm.SerialPort; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +public class SemiBlocking { + public static void main(String... args) { + SerialPort serialPort = SerialPort.getCommPort("/dev/ttyS0"); + serialPort.setComPortParameters(9600, 8, 1, SerialPort.NO_PARITY); + serialPort.setComPortTimeouts(SerialPort.TIMEOUT_READ_SEMI_BLOCKING, 100, 0); + serialPort.openPort(); + + try { + while (true) { + + byte[] buffer = new byte[512]; + int numRead = serialPort.readBytes(buffer, buffer.length); + Console.writeLine(buffer); + } + } catch (Throwable e) { + log.error("Oops!", e); + } + + serialPort.closePort(); + } +} diff --git a/serial-io/src/main/java/kr/pe/elex/examples/Streaming.java b/serial-io/src/main/java/kr/pe/elex/examples/Streaming.java new file mode 100644 index 0000000..7190799 --- /dev/null +++ b/serial-io/src/main/java/kr/pe/elex/examples/Streaming.java @@ -0,0 +1,46 @@ +/* + * Examples for Java + * + * Copyright (c) 2021. Elex. All Rights Reserved. + * https://www.elex-project.com/ + */ + +package kr.pe.elex.examples; + +import com.elex_project.abraxas.Console; +import com.fazecast.jSerialComm.SerialPort; +import lombok.extern.slf4j.Slf4j; + +import java.io.BufferedInputStream; +import java.io.BufferedOutputStream; +import java.io.InputStream; +import java.io.OutputStream; + +@Slf4j +public class Streaming { + public static void main(String... args) { + SerialPort serialPort = SerialPort.getCommPort("/dev/ttyS0"); + serialPort.setComPortParameters(9600, 8, 1, SerialPort.NO_PARITY); + serialPort.setComPortTimeouts(SerialPort.TIMEOUT_READ_SEMI_BLOCKING, 0, 0); + serialPort.openPort(); + + BufferedInputStream is = new BufferedInputStream(serialPort.getInputStream()); + BufferedOutputStream os = new BufferedOutputStream(serialPort.getOutputStream()); + try { + while (true) { + + if (is.available()<=0){ + Thread.sleep(100); + } + + byte[] buffer = new byte[is.available()]; + int numRead = is.read(buffer); + Console.writeLine(buffer); + } + } catch (Throwable e) { + log.error("Oops!", e); + } + + serialPort.closePort(); + } +} diff --git a/settings.gradle.kts b/settings.gradle.kts index 72f9e56..172e883 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -13,7 +13,7 @@ include( "web-socket-servlet", "web-socket-client", "thread", "hibernate", "jdbc-sqlite", "xml", "jackson", "jsoup", "markdown", "network", "httpd", - "properties", + "properties", "serial-io", "mustache", "thymeleaf", "locale", "quartz", "sysinfo", "imaging" )