Raspberry pi Windows IoT Arduino USB通信

时间:2016-04-16 08:57:10

标签: arduino raspberry-pi usb communication windowsiot

我有一个Arduino连接到我的Raspberry Pi 2,通过USB和Windows 10 IOT安装在它上面。我在Visual Studio中制作了一个通用应用程序,它适用于Pi。我需要包含哪些参考,以便我可以通过USB与Arduino进行通信?

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分: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

答案 2 :(得分:0)

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