Я хотел бы получить массив байтов на моем Arduino, отправляемых Java. Я знаю, что код Java работает, потому что я уже пробовал его с другим проектом Arduino, но я потерял код Arduino для этого и не могу заставить его работать снова. Моя доска - Uno, если это поможет. Любой совет поможет, даже если это не полностью рабочая программа.
Я уже пробовал несколько способов его кодирования. Я знаю, что использовал SerialEvent ().
Вот код java и последняя итерация моей программы arduino. Проблема в том, что SerialEvent не срабатывает, потому что желтый светодиод никогда не включается, как должен.
public static void main(String[] args) throws IOException, InterruptedException{
SerialPort sp = SerialPort.getCommPort("COM3");
sp.setComPortParameters(9600, 8, 1, 0);
sp.setComPortTimeouts(SerialPort.TIMEOUT_WRITE_BLOCKING, 0, 0);
if(sp.openPort()) {
System.out.println("Port is open");
}else {
System.out.println("Port failed to open");
return;
}
byte[] message = {65, 66, 65};
sp.getOutputStream().write(125); //Triggers serialEvent on Arduino
sp.getOutputStream().flush();
Thread.sleep(2000); //Waits for serialEvent to Trigger
for(int i = 0; i < message.length; i++) {
sp.getOutputStream().write(message[i]); //Sends the message
sp.getOutputStream().flush();
Thread.sleep(100);
}
sp.getOutputStream().write(126); // Tells the Arduino the whole
message is sent
sp.getOutputStream().flush();
//I did everything needed to close the port etc, but didin't put it to
reduce the amount of code
// Код Arduino:
byte message[200];
int GREEN = 4;
int BLUE = 3;
int YELLOW = 2;
void setup() {
byte message[200];
Serial.begin(9600);
Serial.setTimeout(20000);
while(!Serial);
}
void loop() {
}
void SerialEvent(){
digitalWrite(YELLOW, HIGH);
int i = 0;
delay(2000);
while(Serial.available()){
byte tmpByte = (byte)Serial.read();
if(tmpByte != 126){
message[i] = tmpByte;
i++;
}else{
digitalWrite(YELLOW, LOW);
ExecuteAlg(message); //Function that works correctly
}
}
}
Arduino должен поместить полученные данные в байтовый массив.
Спасибо за любую помощь.
Если вам нужна дополнительная информация, пожалуйста, спросите, это мой первый вопрос, и я не знаю, что именно поставить