当前位置: 首页 > 知识库问答 >
问题:

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

方波娃
2023-03-14

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

我是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的Im。版本:RXTX-2.2-20081207

共有1个答案

谭奕
2023-03-14

它被解决了。我在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("<-");
          }
     }
}
 类似资料:
  • 本文向大家介绍C#简单实现发送socket字符串,包括了C#简单实现发送socket字符串的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了C#简单发送socket字符串的实现方法,供大家参考,具体内容如下 1 打开VS,新建一个C#窗口程序 2 添加按钮 3 写按钮的事件代码 双击这个按钮 进入代码界面 输入如下内容,注意IP和端口 如果你是复制的,会发现有标红的地方,这些需要使用u

  • 问题内容: 我正在构建Android应用程序的项目的C 方面。我需要一些信息(通过字符串和字符串数组)传递给Java应用程序(通过JNI)。我以前从未做过,相反方向的人没有C 的经验,并承认他们不能真正提供帮助。 我确实找到了以下代码(从这里开始) 但这对我来说毫无意义。通常,我不确定如何将其合并到程序的C ++端,而且我无法确切了解其工作原理。代码是否在执行该行时发出消息?还是在for循环中执行

  • 我试图让Arduino在串口读取字符“s”时触发一个中继。该字符“s”由python根据从屏幕读取的图像发送。 我的问题是arduino似乎无法从串行端口读取数据,因为它从不执行if条件。我的猜测是这两者之间存在某种死锁(这就是为什么我将ardu.close()放在函数foo中) 这是我的arduino代码: 这是我的python代码:

  • 我成功地将一个整数从处理发送到Arduino,但现在我想发送一个由三个整数组成的数组,但我无法让它工作。我想使用Arduino创建一个蜂鸣器反馈,哪个处理将控制激活哪个蜂鸣器。例如,从处理发送的数据应该是[1,0,1],这意味着传感器1和3应该开始工作。蜂鸣器应该能够同时激活,以防[1,1,1]通过。 这是我到目前为止的代码:我试图理解什么数据被发送回Arduino,以了解如何使用它,我不断得到一

  • 字符串用于存储文本。 它们可用于在LCD或Arduino IDE串行监视器窗口中显示文本。 字符串对于存储用户输入也很有用。 例如,用户在连接到Arduino的键盘上键入的字符。 Arduino编程中有两种类型的字符串 - 字符数组,与C编程中使用的字符串相同。 Arduino String,它允许我们在草图中使用字符串对象。 在本章中,我们将学习字符串,对象以及Arduino草图中字符串的使用。

  • 我有PHP知识,我想学习C#语言,但我甚至不做简单的加法。 我想得到一个组合框的值,将这个值转换为int,并能够添加另一个值 尽管已完成转换,但我有一个错误:无法将类型“int”转换为“string”。 我的代码: 谢谢你