在我的 UWP 应用程序和我的 rfxtrx433e 之间进行通信
Communicate between my UWP app and my rfxtrx433e
我正在编写一个 UWP(通用 Windows 平台)应用程序来与我的 RFXTRX433e 通信。我能够连接到正确的串行设备,但无法写入任何内容。实际上,写入方法看起来可行(我没有得到任何异常),但似乎我的 USB 设备没有获取信息(发送数据包时灯没有打开)。
var myDevices = await Windows.Devices.Enumeration.DeviceInformation.FindAllAsync(aqsFilter, null);
using (SerialDevice serialPort = await SerialDevice.FromIdAsync(myDevices.First(o => o.Name == "RFXtrx433").Id))
{
//Get the reset package
var reset = ProtocolManager.ResetPackage;
using (DataWriter writer = new DataWriter(serialPort.OutputStream))
{
writer.WriteBuffer(buffer.AsBuffer());
}
有人知道这里发生了什么吗?
DataWriter 正在使用内部缓冲区来保留数据,直到您的数据包准备就绪。
只有在调用DataWriter.StoreAsync() method. You can also call DataWriter.FlushAsync()完成写入操作时才会将数据提交到流
这是最终的解决方案:
using (DataWriter writer = new DataWriter(serialPort.OutputStream))
{
writer.WriteBuffer(reset.GetPacket().AsBuffer());
await writer.StoreAsync();
await writer.FlushAsync();
}
我正在编写一个 UWP(通用 Windows 平台)应用程序来与我的 RFXTRX433e 通信。我能够连接到正确的串行设备,但无法写入任何内容。实际上,写入方法看起来可行(我没有得到任何异常),但似乎我的 USB 设备没有获取信息(发送数据包时灯没有打开)。
var myDevices = await Windows.Devices.Enumeration.DeviceInformation.FindAllAsync(aqsFilter, null);
using (SerialDevice serialPort = await SerialDevice.FromIdAsync(myDevices.First(o => o.Name == "RFXtrx433").Id))
{
//Get the reset package
var reset = ProtocolManager.ResetPackage;
using (DataWriter writer = new DataWriter(serialPort.OutputStream))
{
writer.WriteBuffer(buffer.AsBuffer());
}
有人知道这里发生了什么吗?
DataWriter 正在使用内部缓冲区来保留数据,直到您的数据包准备就绪。
只有在调用DataWriter.StoreAsync() method. You can also call DataWriter.FlushAsync()完成写入操作时才会将数据提交到流
这是最终的解决方案:
using (DataWriter writer = new DataWriter(serialPort.OutputStream))
{
writer.WriteBuffer(reset.GetPacket().AsBuffer());
await writer.StoreAsync();
await writer.FlushAsync();
}