Arduino串行输出(COM7)不等于Visual Studio在COM7中读取的输出

时间:2016-05-15 17:45:47

标签: visual-studio arduino

情况就是这样:

我们有2个arduino通过收发器连接,Arduino A发送数字1,2或3,Arduino B只接收A的数据,由Visual Studio中的Web应用程序读取。

以下是我们的Arduino代码(其中Bin1被声明为初始值等于1 ):

sorts = [IntSort(), IntSort(), IntSort()]
return Function(fname, *sorts)

以下是我们的Visual Studio Web应用程序中的代码,用于读取COM中序列的输出:

void loop() {

rx_data = mySerial.read();

if(rx_data==1)
{
   bin1="1";
}
if(rx_data==2)
{
   bin1="2";
}
if(rx_data==3)
{
   bin1="3";
}

Serial.println(bin1);
}

这是程序在Visual Studio中启动的部分:

private string binStatus = " ";
private static SerialPort _sensorPort;

private static void OpenSerialPort()
{
    _sensorPort = new SerialPort
    {
       BaudRate = 9600,
       PortName = "COM7",
       DtrEnable = true,
       RtsEnable = true
    };
}

private static void CloseSerialPort()
{
   _sensorPort.Close();
}

情况如下:

Arduino A发送3到Arduino B.并通过arduino程序中的串行监视器进行检查,这是正确的。它读取由Arduino A发送的3。现在,Visual Studio程序通过访问COM7获取由Arduino程序打印的序列,其中它将被放置在binStatus字符串中。 visual studio读取的值是声明的值1 ,就像arduino没有执行void循环操作一样,它只是打印了声明。

我们已经被困24小时以上,我们无法解决问题。串行监视器打印正确但Visual Studio程序读错了。

1 个答案:

答案 0 :(得分:0)

请记住,串行通信以字符形式发送数据。

这意味着,你的逻辑if(rx_data==1)是错误的,因为你期望整数形式的值永远不会成真。

试试这个

if(rx_data=='1')

我希望这会有所帮助。