【发布时间】: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