这是我的问题。我使用这段代码通过serialport将字符串发送到我的arduino:
Arduino.Open();
Arduino.WriteLine("1.5,3.7,2");
之后我用我的arduino收到它:
char buffer[12];
String inc;
void setup()
{
Serial.begin(115200);
}
void loop()
{
if (Serial.available() >= 11)
{
for (int i=0; i<11 ; i++)
{
buffer[i] = Serial.read();
inc += buffer[i];
}
memset(buffer, 0, sizeof(buffer));
Serial.println(inc);
inc = "";
}
}
如果我使用串行监视器,arduino程序按预期运行,读取所有字符并将它们打印为一个字符串。但是,如果我尝试从我的c#programm中读取字符串inc,我会收到格式错误,看起来像这样“.7,2 ???? 1.5”。
我使用命令从 波特率相同,奇偶校验设置为无,默认值为stopbits。
我希望你能帮助我,我对此感到疯狂,我无法找到我的错误或为什么格式错误。GlobaleVariablen.Input = Arduino.ReadLine();
答案 0 :(得分:0)
这与兼容UNO的主板上的Arduino 1.6完美配合(请注意,此代码根本没有错误处理,因此仅将其用作起点)。
C#样本
using System;
using System.IO.Ports;
namespace SerialPortTest
{
class Program
{
static void Main(string[] args)
{
var p = new SerialPort(args[0], 9600, Parity.None, 8, StopBits.One);
p.Open();
Console.WriteLine("Sending ({1}) {0}", args[1], args[1].Length);
p.WriteLine(args[1]);
Console.WriteLine("Reading back");
Console.ForegroundColor = ConsoleColor.Yellow;
Console.WriteLine(p.ReadLine());
Console.ResetColor();
}
}
}
Arduino代码
void setup()
{
Serial.begin(9600);
}
char buffer[64];
char *p = buffer;
void loop()
{
char ch = ' ';
while (Serial.available() > 0)
{
ch = Serial.read();
*p++ = ch;
if (ch == '\n')
{
*p = 0;
Serial.print("got ");
Serial.println(buffer);
p = buffer;
break;
}
}
}