Raspberry pi Windows IoT Arduino USB 通信
Raspberry pi Windows IoT Arduino USB communication
我有一个 Arduino 通过 USB 连接到我的 Raspberry Pi 2 并在其上安装了 Windows 10 IOT。我在 Visual Studio 中制作了一个通用应用程序,它可以在 Pi 上运行。我需要包含哪个参考资料才能通过 USB 与 Arduino 通信?
此代码允许 PC 通过 USB 与 Arduino 通信。
Arduino 上的 USB 并不是真正的 USB。是连续的。
只需将您的 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 协议从 Raspberry PI 在 Windows IoT Core 上轻松控制 Arduino。
我试过了,效果很好!
问题是 Arduino 没有在 win iot 上被检测到,所以串行通信是不可能的,因为从物联网的角度来看不存在串行端口。
任何在 windows 物联网上正确检测 Arduino 的测试解决方案将不胜感激。
我有一个 Arduino 通过 USB 连接到我的 Raspberry Pi 2 并在其上安装了 Windows 10 IOT。我在 Visual Studio 中制作了一个通用应用程序,它可以在 Pi 上运行。我需要包含哪个参考资料才能通过 USB 与 Arduino 通信?
此代码允许 PC 通过 USB 与 Arduino 通信。 Arduino 上的 USB 并不是真正的 USB。是连续的。
只需将您的 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 协议从 Raspberry PI 在 Windows IoT Core 上轻松控制 Arduino。 我试过了,效果很好!
问题是 Arduino 没有在 win iot 上被检测到,所以串行通信是不可能的,因为从物联网的角度来看不存在串行端口。 任何在 windows 物联网上正确检测 Arduino 的测试解决方案将不胜感激。