【问题标题】:Sending numbers via Serialport from C# to Java通过 Serialport 从 C# 向 Java 发送数字
【发布时间】:2015-05-21 11:35:47
【问题描述】:

我正在使用 Arduino 制作蓝牙四轴飞行器。寄信没问题,但我似乎不会写或读数字。

我不太擅长编程,所以请耐心等待。

C#代码:

    private void button1_Click(object sender, EventArgs e)
        {
            int testInt = 35;
            byte[] testByte = BitConverter.GetBytes(testInt);
            serialPort1.Write(testByte, 0, 0);

            int i = BitConverter.ToInt32(testByte,0);
            label5.Text = i.ToString();
        }

这里我尝试转换为发送一个字节,起初我只是直接将它作为字符串发送。我从这两种方式得到相同的结果。

Arduino 代码:

 <code>void loop() 
{
  // put your main code here, to run repeatedly:
  if(Serial.available())
  {
    int data = Serial.read();
    if(data=='35')
     {
        digitalWrite(13, HIGH);
     }
  }
}

为什么 LED 不亮?如何从串口读取数字?

【问题讨论】:

  • 很难说为什么它不起作用。你有没有检查过arduino是否有任何东西到达?由于'35' 是无效的表达式,Java 代码也不会编译。
  • serialPort1.Write(testByte, 0, 0); 您从偏移量 0 发送 0 个字节。我假设您想发送所有字节。所以第二个参数应该是 testByte.Length 。你在发送 13 的 arduino 代码时发送值 35。
  • @Ralf:arduino 代码不通过串行发送任何东西,只接收。 digitalWrite 语句应该使 LED 亮起。
  • @f1sh 啊,好的。在这种情况下,c# 代码根本不会发送任何内容。
  • @Ralf: serialPort1.Write(testByte, 0,testByte.Length ) 成功了,谢谢 :) 浪费了很多时间

标签: java c# serial-port arduino


【解决方案1】:

这会发送一个字节(0 到 255):

private void button1_Click(object sender, EventArgs e) {
    // set up to send only one byte
    byte[] testByte = {35};
    // send one byte
    serialPort1.Write(testByte, 0, 1);
}

这会在 Arduino 上接收并解释它:

void loop() {
    if (Serial.available()) {
        byte data = Serial.read();
        if (data == 35) {
            digitalWrite(13, HIGH);
        }
    }
}

如果您认为您可能会发送一个大于 255 的数字,那么发送一个字符串可能同样容易。在字符串末尾添加一个换行符:

String testString = "35\n";

并使用新行让 Arduino 知道您已完成发送代码,如下所示:

#define MAX_SIZE 5;
char button[MAX_SIZE+1];

if (Serial.available()) {
    int bytesRead = Serial.readBytesUntil ('\n', button, MAX_SIZE);
    if (bytesRead > 0) {
        button[bytesRead] = '\0';
        int result = atoi(button);
        if (result == 35) {
            digitalWrite(13, HIGH);
        } else {
            digitalWrite(13, LOW);
        }
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-31
    • 2014-08-03
    • 1970-01-01
    • 2018-07-15
    • 2023-04-03
    相关资源
    最近更新 更多