情况就是这样:
我们有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程序读错了。
答案 0 :(得分:0)
请记住,串行通信以字符形式发送数据。
这意味着,你的逻辑if(rx_data==1)
是错误的,因为你期望整数形式的值永远不会成真。
试试这个
if(rx_data=='1')
我希望这会有所帮助。