Near complete implementation, untested
This commit is contained in:
@@ -4,6 +4,7 @@ import java.io.ByteArrayOutputStream;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
import tm1638.Tm1638.Buttons;
|
import tm1638.Tm1638.Buttons;
|
||||||
|
import tm1638.Tm1638.ClearDisplayDigit;
|
||||||
import tm1638.Tm1638.Color;
|
import tm1638.Tm1638.Color;
|
||||||
import tm1638.Tm1638.Command;
|
import tm1638.Tm1638.Command;
|
||||||
import tm1638.Tm1638.Command.Type;
|
import tm1638.Tm1638.Command.Type;
|
||||||
@@ -11,15 +12,20 @@ import tm1638.Tm1638.Construct;
|
|||||||
import tm1638.Tm1638.Message;
|
import tm1638.Tm1638.Message;
|
||||||
import tm1638.Tm1638.Ping;
|
import tm1638.Tm1638.Ping;
|
||||||
import tm1638.Tm1638.Pong;
|
import tm1638.Tm1638.Pong;
|
||||||
|
import tm1638.Tm1638.SetDisplay;
|
||||||
|
import tm1638.Tm1638.SetDisplayDigit;
|
||||||
|
import tm1638.Tm1638.SetDisplayToNumber;
|
||||||
|
import tm1638.Tm1638.SetDisplayToString;
|
||||||
|
import tm1638.Tm1638.SetDisplayToString.Builder;
|
||||||
import tm1638.Tm1638.SetLED;
|
import tm1638.Tm1638.SetLED;
|
||||||
|
import tm1638.Tm1638.SetLEDs;
|
||||||
import tm1638.Tm1638.SetupDisplay;
|
import tm1638.Tm1638.SetupDisplay;
|
||||||
import tm1638.Tm1638.Text;
|
import tm1638.Tm1638.Text;
|
||||||
import base.work.Listen;
|
|
||||||
|
|
||||||
import com.github.boukefalos.arduino.AbstractArduino;
|
import com.github.boukefalos.arduino.AbstractArduino;
|
||||||
import com.github.boukefalos.arduino.exception.ArduinoException;
|
import com.google.protobuf.ByteString;
|
||||||
|
|
||||||
public class AbstractTM1638 extends AbstractArduino implements TM1638 {
|
public abstract class AbstractTM1638 extends AbstractArduino implements TM1638 {
|
||||||
public void input(Message message) {
|
public void input(Message message) {
|
||||||
System.out.println(message);
|
System.out.println(message);
|
||||||
switch (message.getType()) {
|
switch (message.getType()) {
|
||||||
@@ -68,30 +74,125 @@ public class AbstractTM1638 extends AbstractArduino implements TM1638 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void clearDisplay() {
|
public void clearDisplay() {
|
||||||
|
command(Command.newBuilder()
|
||||||
|
.setType(Type.CLEAR_DISPLAY).build());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void clearDisplayDigit(int pos, boolean dot) {
|
public void clearDisplayDigit(int pos, boolean dot) {
|
||||||
|
command(Command.newBuilder()
|
||||||
|
.setType(Type.CLEAR_DISPLAY_DIGIT)
|
||||||
|
.setClearDisplayDigit(
|
||||||
|
ClearDisplayDigit.newBuilder()
|
||||||
|
.setPos(pos)
|
||||||
|
.setDot(dot).build()).build());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setDisplay(byte[] values) {
|
public void setDisplay(byte[] values) {
|
||||||
|
command(Command.newBuilder()
|
||||||
|
.setType(Type.SET_DISPLAY)
|
||||||
|
.setSetDisplay(
|
||||||
|
SetDisplay.newBuilder()
|
||||||
|
.setValues(ByteString.copyFrom(values)).build()).build());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDisplayDigit(int digit, int pos, boolean dot) {
|
||||||
|
setDisplayDigit(digit, pos, dot, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setDisplayDigit(int digit, int pos, boolean dot, byte[] font) {
|
public void setDisplayDigit(int digit, int pos, boolean dot, byte[] font) {
|
||||||
|
tm1638.Tm1638.SetDisplayDigit.Builder builder = SetDisplayDigit.newBuilder()
|
||||||
|
.setDigit(digit)
|
||||||
|
.setPos(pos)
|
||||||
|
.setDot(dot);
|
||||||
|
boolean has_font = font != null;
|
||||||
|
builder.setHasFont(has_font);
|
||||||
|
if (has_font) {
|
||||||
|
builder.setFont(ByteString.copyFrom(font));
|
||||||
|
}
|
||||||
|
command(Command.newBuilder()
|
||||||
|
.setType(Type.SET_DISPLAY_DIGIT)
|
||||||
|
.setSetDisplayDigit(builder.build()).build());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDisplayToBinNumber(int number, int dots) {
|
||||||
|
setDisplayToBinNumber(number, dots, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setDisplayToBinNumber(int number, int dots, byte[] font) {
|
public void setDisplayToBinNumber(int number, int dots, byte[] font) {
|
||||||
|
command(Command.newBuilder()
|
||||||
|
.setType(Type.SET_DISPLAY_TO_BIN_NUMBER)
|
||||||
|
.setSetDisplayToNumber(
|
||||||
|
SetDisplayToNumber.newBuilder()
|
||||||
|
.setNumber(number)
|
||||||
|
.setDots(dots)
|
||||||
|
.setFont(ByteString.copyFrom(font)).build()).build());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDisplayToDecNumber(int number, int dots, boolean leadingZeros) {
|
||||||
|
setDisplayToDecNumber(number, dots, leadingZeros, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setDisplayToDecNumber(int number, int dots, boolean leadingZeros, byte[] font) {
|
public void setDisplayToDecNumber(int number, int dots, boolean leadingZeros, byte[] font) {
|
||||||
|
tm1638.Tm1638.SetDisplayToNumber.Builder builder = SetDisplayToNumber.newBuilder()
|
||||||
|
.setNumber(number)
|
||||||
|
.setDots(dots)
|
||||||
|
.setLeadingZeros(leadingZeros);
|
||||||
|
boolean has_font = font != null;
|
||||||
|
builder.setHasFont(has_font);
|
||||||
|
if (has_font) {
|
||||||
|
builder.setFont(ByteString.copyFrom(font));
|
||||||
|
}
|
||||||
|
command(Command.newBuilder()
|
||||||
|
.setType(Type.SET_DISPLAY_TO_DEC_NUMBER)
|
||||||
|
.setSetDisplayToNumber(builder.build()).build());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDisplayToHexNumber(int number, int dots, boolean leadingZeros) {
|
||||||
|
setDisplayToHexNumber(number, dots, leadingZeros, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setDisplayToHexNumber(int number, int dots, boolean leadingZeros, byte[] font) {
|
public void setDisplayToHexNumber(int number, int dots, boolean leadingZeros, byte[] font) {
|
||||||
|
tm1638.Tm1638.SetDisplayToNumber.Builder builder = SetDisplayToNumber.newBuilder()
|
||||||
|
.setNumber(number)
|
||||||
|
.setDots(dots)
|
||||||
|
.setLeadingZeros(leadingZeros);
|
||||||
|
boolean has_font = font != null;
|
||||||
|
builder.setHasFont(has_font);
|
||||||
|
if (has_font) {
|
||||||
|
builder.setFont(ByteString.copyFrom(font));
|
||||||
|
}
|
||||||
|
command(Command.newBuilder()
|
||||||
|
.setType(Type.SET_DISPLAY_TO_HEX_NUMBER)
|
||||||
|
.setSetDisplayToNumber(
|
||||||
|
builder.build()).build());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setDisplayToError() {
|
public void setDisplayToError() {
|
||||||
|
command(Command.newBuilder()
|
||||||
|
.setType(Type.SET_DISPLAY_TO_ERROR).build());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDisplayToString(String string, int dots, int pos) {
|
||||||
|
setDisplayToString(string, dots, pos, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setDisplayToString(String string, int dots, int pos, byte[] font) {
|
public void setDisplayToString(String string, int dots, int pos, byte[] font) {
|
||||||
|
Builder builder = SetDisplayToString.newBuilder()
|
||||||
|
.setString(string)
|
||||||
|
.setDots(dots)
|
||||||
|
.setPos(pos);
|
||||||
|
boolean has_font = font != null;
|
||||||
|
builder.setHasFont(has_font);
|
||||||
|
if (has_font) {
|
||||||
|
builder.setFont(ByteString.copyFrom(font));
|
||||||
|
}
|
||||||
|
if (has_font) {
|
||||||
|
builder.setFont(ByteString.copyFrom(font));
|
||||||
|
}
|
||||||
|
command(Command.newBuilder()
|
||||||
|
.setType(Type.SET_DISPLAY_TO_STRING)
|
||||||
|
.setSetDisplayToString(
|
||||||
|
builder.build()).build());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setLED(Color color, int pos) {
|
public void setLED(Color color, int pos) {
|
||||||
@@ -104,6 +205,11 @@ public class AbstractTM1638 extends AbstractArduino implements TM1638 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void setLEDs(int led) {
|
public void setLEDs(int led) {
|
||||||
|
command(Command.newBuilder()
|
||||||
|
.setType(Type.SET_LEDS)
|
||||||
|
.setSetLEDs(
|
||||||
|
SetLEDs.newBuilder()
|
||||||
|
.setLed(led).build()).build());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setupDisplay(boolean active, int intensity) {
|
public void setupDisplay(boolean active, int intensity) {
|
||||||
@@ -114,13 +220,4 @@ public class AbstractTM1638 extends AbstractArduino implements TM1638 {
|
|||||||
.setActive(active)
|
.setActive(active)
|
||||||
.setIntensity(intensity).build()).build());
|
.setIntensity(intensity).build()).build());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void register(Listen<Object> listen) {
|
|
||||||
}
|
|
||||||
|
|
||||||
public void remove(Listen<Object> listen) {
|
|
||||||
}
|
|
||||||
|
|
||||||
public void send(byte[] buffer) throws ArduinoException {
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,11 +10,15 @@ public interface TM1638 extends Arduino {
|
|||||||
public void clearDisplay();
|
public void clearDisplay();
|
||||||
public void clearDisplayDigit(int pos, boolean dot);
|
public void clearDisplayDigit(int pos, boolean dot);
|
||||||
public void setDisplay(byte[] values);
|
public void setDisplay(byte[] values);
|
||||||
|
public void setDisplayDigit(int digit, int pos, boolean dot);
|
||||||
public void setDisplayDigit(int digit, int pos, boolean dot, byte[] font);
|
public void setDisplayDigit(int digit, int pos, boolean dot, byte[] font);
|
||||||
public void setDisplayToBinNumber(int number, int dots, byte[] font);
|
public void setDisplayToBinNumber(int number, int dots, byte[] font);
|
||||||
|
public void setDisplayToDecNumber(int number, int dots, boolean leadingZeros);
|
||||||
public void setDisplayToDecNumber(int number, int dots, boolean leadingZeros, byte[] font);
|
public void setDisplayToDecNumber(int number, int dots, boolean leadingZeros, byte[] font);
|
||||||
|
public void setDisplayToHexNumber(int number, int dots, boolean leadingZeros);
|
||||||
public void setDisplayToHexNumber(int number, int dots, boolean leadingZeros, byte[] font);
|
public void setDisplayToHexNumber(int number, int dots, boolean leadingZeros, byte[] font);
|
||||||
public void setDisplayToError();
|
public void setDisplayToError();
|
||||||
|
public void setDisplayToString(String string, int dots, int pos);
|
||||||
public void setDisplayToString(String string, int dots, int pos, byte[] font);
|
public void setDisplayToString(String string, int dots, int pos, byte[] font);
|
||||||
public void setLED(Color color, int pos);
|
public void setLED(Color color, int pos);
|
||||||
public void setLEDs(int led);
|
public void setLEDs(int led);
|
||||||
|
|||||||
@@ -44,6 +44,7 @@ public class Local extends AbstractTM1638 {
|
|||||||
try {
|
try {
|
||||||
outputStream.write(buffer);
|
outputStream.write(buffer);
|
||||||
outputStream.flush();
|
outputStream.flush();
|
||||||
|
sleep(100);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
throw new ArduinoException("Failed to write to arduino");
|
throw new ArduinoException("Failed to write to arduino");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -69,22 +69,25 @@ message SetDisplayDigit {
|
|||||||
required int32 digit = 1;
|
required int32 digit = 1;
|
||||||
required int32 pos = 2;
|
required int32 pos = 2;
|
||||||
required bool dot = 3;
|
required bool dot = 3;
|
||||||
optional bytes font = 4;
|
required bool has_font = 4;
|
||||||
|
optional bytes font = 5;
|
||||||
}
|
}
|
||||||
|
|
||||||
message SetDisplayToNumber {
|
message SetDisplayToNumber {
|
||||||
required int32 number = 1;
|
required sint32 number = 1;
|
||||||
required bool dots = 2;
|
required int32 dots = 2;
|
||||||
optional bytes font = 3;
|
required bool has_font = 3;
|
||||||
optional bool leadingZeros = 4 [default = false];
|
optional bytes font = 4;
|
||||||
optional bool sign = 5 [default = true];
|
optional bool leadingZeros = 5 [default = false];
|
||||||
|
optional bool sign = 6 [default = true];
|
||||||
}
|
}
|
||||||
|
|
||||||
message SetDisplayToString {
|
message SetDisplayToString {
|
||||||
required string string = 1;
|
required string string = 1;
|
||||||
required int32 dots = 2;
|
required int32 dots = 2;
|
||||||
required int32 pos = 3;
|
required int32 pos = 3;
|
||||||
optional bytes font = 4;
|
required bool has_font = 4;
|
||||||
|
optional bytes font = 5;
|
||||||
}
|
}
|
||||||
|
|
||||||
message SetLED {
|
message SetLED {
|
||||||
|
|||||||
@@ -1,40 +0,0 @@
|
|||||||
package test;
|
|
||||||
|
|
||||||
import java.io.ByteArrayInputStream;
|
|
||||||
import java.io.ByteArrayOutputStream;
|
|
||||||
import java.io.InputStream;
|
|
||||||
import java.lang.reflect.Method;
|
|
||||||
|
|
||||||
import tm1638.Tm1638.Buttons;
|
|
||||||
import tm1638.Tm1638.Message;
|
|
||||||
import tm1638.Tm1638.Ping;
|
|
||||||
import tm1638.Tm1638.Pong;
|
|
||||||
import tm1638.Tm1638.Text;
|
|
||||||
|
|
||||||
public class Test {
|
|
||||||
public static void main(String[] args) throws Exception {
|
|
||||||
Ping ping = Ping.newBuilder().setId(123).build();
|
|
||||||
ByteArrayOutputStream output = new ByteArrayOutputStream();
|
|
||||||
ping.writeDelimitedTo(output);
|
|
||||||
byte[] buffer = output.toByteArray();
|
|
||||||
ByteArrayInputStream input = new ByteArrayInputStream(buffer);
|
|
||||||
Class<?> messageClass = Message.class;
|
|
||||||
Method m = messageClass.getMethod("parseDelimitedFrom", InputStream.class);
|
|
||||||
Object object = m.invoke(null, input);
|
|
||||||
Message message = (Message) object;
|
|
||||||
switch (message.getType()) {
|
|
||||||
case PONG:
|
|
||||||
Pong pong = message.getPong();
|
|
||||||
System.out.println(pong.getId());
|
|
||||||
break;
|
|
||||||
case TEXT:
|
|
||||||
Text text = message.getText();
|
|
||||||
System.out.println(text.getText());
|
|
||||||
break;
|
|
||||||
case BUTTONS:
|
|
||||||
Buttons buttons = message.getButtons();
|
|
||||||
System.out.println(buttons.getButtons());
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,6 +1,5 @@
|
|||||||
package test;
|
package test;
|
||||||
|
|
||||||
import tm1638.Tm1638.Color;
|
|
||||||
import base.work.Listen;
|
import base.work.Listen;
|
||||||
|
|
||||||
import com.github.boukefalos.tm1638.TM1638;
|
import com.github.boukefalos.tm1638.TM1638;
|
||||||
@@ -15,8 +14,21 @@ public class TestLocal extends Listen<Object> {
|
|||||||
public static void main(TM1638 TM1638) throws InterruptedException {
|
public static void main(TM1638 TM1638) throws InterruptedException {
|
||||||
TM1638.register(new TestLocal());
|
TM1638.register(new TestLocal());
|
||||||
TM1638.start();
|
TM1638.start();
|
||||||
TM1638.construct(8, 9, 7);
|
|
||||||
|
/*TM1638.construct(8, 9, 7);
|
||||||
TM1638.setupDisplay(true, 1);
|
TM1638.setupDisplay(true, 1);
|
||||||
|
TM1638.setLEDs(0xff00);*/
|
||||||
|
|
||||||
|
// Light up all the green LEDs
|
||||||
|
TM1638.setLEDs(0x00ff);
|
||||||
|
Thread.sleep(2000);
|
||||||
|
//TM1638.setLEDs(0x0000);
|
||||||
|
|
||||||
|
// Light up all the red LEDs
|
||||||
|
TM1638.setLEDs(0xff00);
|
||||||
|
Thread.sleep(2000);
|
||||||
|
TM1638.setLEDs(0x0000);
|
||||||
|
|
||||||
int i = 0;
|
int i = 0;
|
||||||
while (i < 10000) {
|
while (i < 10000) {
|
||||||
//TM1638.setLED(i % 2 == 0 ? Color.GREEN : Color.RED, i % 8);
|
//TM1638.setLED(i % 2 == 0 ? Color.GREEN : Color.RED, i % 8);
|
||||||
|
|||||||
Reference in New Issue
Block a user