0

我有一个通过 USB 连接到我的 Raspberry Pi 2 的 Arduino,并在其上安装了 Windows 10 IOT。我在 Visual Studio 中制作了一个通用应用程序,它可以在 Pi 上运行。我需要包含哪些参考资料才能通过 USB 与 Arduino 通信?

4

3 回答 3

2

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

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

于 2016-04-16T11:31:39.537 回答
0

只需将您的 Arduino 连接到 Raspberry 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!");
        }
    }

将以下功能添加到您的 Package.appxmanifest 文件。

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

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

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

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

于 2017-07-14T12:20:25.510 回答
0

问题是在 win iot 上未检测到 Arduino,因此无法进行串行通信,因为从 iot 的角度来看不存在串行端口。任何在 windows iot 上正确检测 Arduino 的测试解决方案都将非常感激。

于 2018-01-15T16:08:40.717 回答