代码之家  ›  专栏  ›  技术社区  ›  DzAnej Mrvic

复盆子pi Windows IoT Arduino USB通信

  •  0
  • DzAnej Mrvic  · 技术社区  · 8 年前

    我有一个Arduino通过USB连接到我的复盆子Pi 2,并安装了Windows 10 IOT。我在VisualStudio中制作了一个通用应用程序,它在Pi上运行。为了通过USB与Arduino通信,我需要包括哪些参考资料?

    3 回复  |  直到 8 年前
        1
  •  2
  •   Richard210363    8 年前

    此代码允许PC通过USB与Arduino通信。 Arduino上的USB不是真正的USB。它是连续的。

    http://arduino.cc/playground/Csharp/SerialCommsCSharp .

        2
  •  0
  •   Roy Ben Shabat    7 年前

    只需将您的Arduino连接到树莓PI的USB端口之一。

    此方法将尝试找到一个连接的Arduino,并向串行端口写入内容。

        private async void ConnectToArduino()
        {
            //Enumerate devices.
            var devices = DeviceInformation.FindAllAsync(SerialDevice.GetDeviceSelector()).AsTask();
            devices.Wait();
    
            //This will probably get you the connected arduino. (You can also use vendor id to be more accurate).
            var serialDevice = devices.Result.FirstOrDefault(x => x.Name == "USB Serial Device");
    
            if (serialDevice != null)
            {
                Debug.WriteLine("Found Arduino: " + serialDevice.Name + " " + serialDevice.Id);
    
                // Create a serial port.
                var serialPort = await SerialDevice.FromIdAsync(serialDevice.Id);
                serialPort.WriteTimeout = TimeSpan.FromMilliseconds(1000);
                serialPort.ReadTimeout = TimeSpan.FromMilliseconds(1000);
                serialPort.BaudRate = 9600;
                serialPort.Parity = SerialParity.None;
                serialPort.StopBits = SerialStopBitCount.One;
                serialPort.DataBits = 8;
    
                //Write to serial port.
                DataWriter writer = new DataWriter(serialPort.OutputStream);
                writer.WriteString("Hello World!");
                await writer.StoreAsync();
    
                //Done.
                writer.DetachStream();
            }
            else
            {
                Debug.WriteLine("Arduino not found!");
            }
        }
    

    将以下功能添加到包中。appxmanifest文件。

      <Capabilities>
        <DeviceCapability Name="bluetooth" />
        <DeviceCapability Name="serialcommunication">
          <Device Id="any">
            <Function Type="name:serialPort" />
          </Device>
        </DeviceCapability>
      </Capabilities>
    

    此外,请查看此项目,了解如何使用Firmata协议在Windows IoT Core上轻松控制来自复盆子PI的Arduino。 我试过了,效果很好!

    https://www.arduino.cc/en/Reference/Firmata

    https://github.com/ms-iot/serial-wiring

        3
  •  0
  •   Mohamed Eissa    7 年前

    问题是在win-iot上没有检测到Arduino,因此无法进行串行通信,因为从物联网的角度来看,没有串行端口。 任何经过测试的解决方案,可以在windows iot上正确检测Arduino,我们将不胜感激。