【问题标题】:Communicate between my UWP app and my rfxtrx433e在我的 UWP 应用和我的 rfxtrx433e 之间进行通信
【发布时间】:2016-03-17 14:45:23
【问题描述】:

我正在编写一个 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());
                }

有人知道这里发生了什么吗?

【问题讨论】:

    标签: usb win-universal-app communication


    【解决方案1】:

    这是最终的解决方案:

       using (DataWriter writer = new DataWriter(serialPort.OutputStream))
        {
             writer.WriteBuffer(reset.GetPacket().AsBuffer());
             await writer.StoreAsync();
             await writer.FlushAsync();
        }
    

    【讨论】:

    • 我在 FlushAsync 行中遇到一个未实现的异常。
    【解决方案2】:

    DataWriter 使用内部缓冲区来保留数据,直到您的数据包准备好。

    只有在调用DataWriter.StoreAsync() 方法时才会将数据提交到流中。也可以调用DataWriter.FlushAsync()完成写操作

    【讨论】:

    • 感谢您的重播,但是当我添加 await writer.FlushAsync();我得到以下异常:方法或操作未实现当我使用 await writer.StoreAsync();什么都没发生..
    • 解决方案是同时使用两者。首先我必须使用存储异步,然后使用 FlushAsync。
    猜你喜欢
    • 2017-08-28
    • 2021-07-08
    • 2013-10-02
    • 1970-01-01
    • 1970-01-01
    • 2020-03-18
    • 1970-01-01
    • 1970-01-01
    • 2018-06-18
    相关资源
    最近更新 更多