gpt4 book ai didi

java - 将字符串从 Java 发送到 Arduino(简单示例)

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:59:15 31 4
gpt4 key购买 nike

It is solved. I put a Thread.sleep(4000); after opening the port in the java code and now it works. The problem was that the arduino is reset everytime the port is opened. When i was sending the data, the arduino wasn't ready to listen.

我是 arduino 和 Java 的新手,但我编写的程序非常简单,以至于我不明白为什么不起作用。

我向arduino(COM5)对应的串口发送一个字符串:

import java.io.*;
import java.util.*;
import gnu.io.*;

public class SimpleWrite {

static Enumeration portList;
static CommPortIdentifier portId;
static String messageString = "color FF00FFEND";
static SerialPort serialPort;
static OutputStream outputStream;

public static void main(String[] args) {
portList = CommPortIdentifier.getPortIdentifiers();


while (portList.hasMoreElements()) {

portId = (CommPortIdentifier) portList.nextElement();
if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) {

if (portId.getName().equals("COM5")) {

try {
serialPort = (SerialPort)
portId.open("SimpleWriteApp", 2000);

outputStream = serialPort.getOutputStream();

serialPort.setSerialPortParams(9600,
SerialPort.DATABITS_8,
SerialPort.STOPBITS_1,
SerialPort.PARITY_NONE);

outputStream.write(messageString.getBytes());
System.out.println(messageString);

outputStream.close();
serialPort.close();
}
catch (IOException e) {System.out.println("err3");}
catch (PortInUseException e) {System.out.println("err");}
catch (IOException e) {System.out.println("err1");}
catch (UnsupportedCommOperationException e) {System.out.println("err2");}
}
}
}
}
}

和 arduino 中获取该字符串的代码:

char inputBuffer[10];   

void setup() {
Serial.begin(9600);
}

void loop() {
while (true)
{
if (Serial.available() > 0) {
Serial.readBytes(inputBuffer, Serial.available());
delay(5000);
Serial.print("I got this ->");
Serial.print(inputBuffer);
Serial.println("<-");
}
}
}

while(true) 用于测试目的。我没有打印任何东西,我也不知道问题出在哪里。我在这里看到了所有关于 arduino 和 java 的帖子,但我没有找到任何有用的东西。感谢您的帮助,如果这是一个愚蠢的问题,我很抱歉,我是这个问题的新手

我正在使用 RXTXcomm.jar。版本:RXTX-2.2-20081207

最佳答案

解决了。在 java 代码中打开端口后,我放了一个 Thread.sleep(4000),现在它可以工作了。问题是每次打开端口时 Arduino 都会重置,所以我在 Arduino 还没有准备好收听时发送数据。

char inputBuffer[10];   

void setup()
{
Serial.begin(9600);
}

void loop()
{
while (true)
{
if (Serial.available() > 0)
{
Serial.readBytes(inputBuffer, 10);
delay(5000);
Serial.print("I got this ->");
Serial.print(inputBuffer);
Serial.println("<-");
}
}
}

关于java - 将字符串从 Java 发送到 Arduino(简单示例),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25502517/

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