title: Why does GattCharacteristic.ReadValueAsync() return 20 zero bytes?
body: <p>I have the following code I'm using to connect to a TruConnect Bobcat bluetooth module (<a href="https://ack.me/FAQs/What_are_the_UUID_s_used_by_TruConnect" rel="nofollow">https://ack.me/FAQs/What_are_the_UUID_s_used_by_TruConnect</a>):</p>
  
  <pre><code>public async void Start()
      {           
          Guid RX_UUID = Guid.Parse("1cce1ea8-bd34-4813-a00a-c76e028fadcb");
          Guid TX_UUID = Guid.Parse("cacc07ff-ffff-4c48-8fae-a9ef71b75e26");
          Guid ServiceGuid = Guid.Parse("175f8f23-a570-49bd-9627-815a6a27de2a");
  
          var devices = await DeviceInformation.FindAllAsync(GattDeviceService.GetDeviceSelectorFromUuid(ServiceGuid));
          var service = await GattDeviceService.FromIdAsync(devices[0].Id);
  
          var TXCharacteristic = service.GetCharacteristics(TX_UUID)[0];
          GattReadResult result = await TXCharacteristic.ReadValueAsync(BluetoothCacheMode.Uncached);
          byte[] buffer = (result.Value.ToArray());
      }
  </code></pre>
  
  <p>The problem is that the buffer at the end always ends up with 20 zero bytes, even though my module is not sending anything. All this despite result.Status turns out to be Success.</p>
  
  <hr>
  
  <p>This is what I've boiled it down to after trying to make it run in a bigger app and getting the same result.</p>
  
  <hr>
  
  <p>Another interesting thing I've noticed is that I've tried the same approach on a WindowsHubApplication and it worked. Now, in a Universal App, it doesn't.</p>
  
  <hr>
  
  <p>I've also tried both Cached and Uncached modes.</p>
  
  <p>Thanks in advance</p>