gpt4 book ai didi

java - Arduino 获取串行数据时遇到问题

转载 作者:行者123 更新时间:2023-12-01 16:23:59 24 4
gpt4 key购买 nike

对于一个学校项目,我目前正在尝试构建一台自动售货机。操作的大脑将是我的笔记本电脑,使用 arduino 来控制硬件。

我使用以下代码来触发自动售货:

public class App {
public App() {

}

public static void main(String[] args) {
System.out.println("Hoi!");
SerialPort comPort = SerialPort.getCommPorts()[0];
comPort.openPort();
comPort.setComPortTimeouts(SerialPort.TIMEOUT_READ_SEMI_BLOCKING, 0, 0);
InputStream in = comPort.getInputStream();
OutputStream out = comPort.getOutputStream();

try {
out.write('g');
} catch (Exception e) {
e.printStackTrace();
}
try {
Thread.sleep(100);
} catch (InterruptedException ex) {
Thread.currentThread().interrupt();
}
}
}

在arduino中添加以下代码:

#include <Stepper.h>

const int stepsPerRev = 2048;
Stepper motor1(stepsPerRev, 8, 9, 10, 11);
char derp;
void setup() {
Serial.begin(9600);
Serial.println("Start");
motor1.setSpeed(6);
}

void loop() {
if (Serial.available() > 0) {
derp = Serial.read();
}
else {
derp = 'k';
}
if(derp == 'g'){
motor1.step(stepsPerRev);
}
delay(100);
}

不幸的是,这似乎不起作用。当我将 out.write 放在 while(true) block 中时,它似乎确实有效。但这会引发无限量的销售。

有什么想法可以做得更好吗?

最佳答案

我找到了自己的答案。

当串口打开时,Arduino 会自动重置。这意味着Java程序需要等待几秒钟才能尝试写入串行端口。

关于java - Arduino 获取串行数据时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62195908/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com