Последовательная связь с jSerialComm ничего не отправляет - PullRequest
1 голос
/ 10 февраля 2020

Я создал простое приложение Scala и простой скрипт Arduino для проверки последовательной связи в библиотеке jSerialComm. Программа находит только один активный порт (тот, к которому подключен Arduino), скорость передачи данных одинакова для порта и Arduino, и код не выдает никаких исключений при записи. Однако Arduino ничего не получает (светодиод RX выключен).

Код Scala:

import com.fazecast.jSerialComm._

object Test extends App {
  val ports = SerialPort.getCommPorts
  ports.foreach(println(_))
  val port: SerialPort = ports(0)

  var bytes = Array[Byte]()
  val toWrite: Long = 3
  var a = 0
  var b = 0
  var c = 0

  println(port.getBaudRate)

  while (true) {
    if (a < 3) a += 1 else a = 0
    bytes = Array[Byte](a.toByte, a.toByte, a.toByte)
    port.writeBytes(bytes, toWrite)
    println("Sent " + bytes(0) + " to " + port.toString)
    Thread.sleep(1000)
  }
}

Код Arduino:

const int R = 12;
const int G = 13;
const int B = 11;

void setup() {
  pinMode(R, OUTPUT);
  pinMode(G, OUTPUT);
  pinMode(B, OUTPUT);
  Serial.begin(9600);
  while(!Serial);
}

void loop() {
  byte buff[3] = {0, 0, 0};
  int numR = 0;

  bool cont1 = false;
  bool cont2 = false;
  bool cont3 = false;

  if(Serial.available()){
    Serial.print("Found stuff");
    Serial.readBytes(buff,3);
  }

  for(int i = 0; i < 3; i++){
    if(buff[i] == 1){
      cont1 = true;
    }
    if(buff[i] == 2){
      cont2 = true;
    }
    if(buff[i] == 3){
      cont3 = true;
    }
  }

  if(cont1) digitalWrite(R, HIGH); else digitalWrite(R, LOW);
  if(cont2) digitalWrite(G, HIGH); else digitalWrite(G, LOW);
  if(cont3) digitalWrite(B, HIGH); else digitalWrite(B, LOW);
  if(cont1 || cont2 || cont3) delay(1000);
}

1 Ответ

0 голосов
/ 27 февраля 2020

Я забыл открыть порт с

port.openPort()

Теперь он работает просто отлично

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...