如何获取 AllJoyn byte[] 属性
How to get AllJoyn byte[] property
我有一个像这样的 AllJoyn 属性
<property name="DeviceAddresses" type="ay" access="read">
当我尝试阅读它时,我使用了 Windows 10 UWP 应用程序 - 我获得了成功 - 但我不知道如何从结果中获取值
代码如下所示:
var vProperty = pInterface.GetProperty(propertyName);
if (vProperty == null) return null;
var result = await vProperty.ReadValueAsync();
if (result.Status.IsSuccess)
{
if (vProperty.TypeInfo.Type == TypeId.Uint8Array)
{
byte[] Erg = result.Value ???
}
}
属性 值是通过
创建的
object o = Windows.Foundation.PropertyValue.CreateUInt8Array(value);
但我发现没有办法(强制转换)取出字节。
我使用 DeviceProviders 访问 AllJoyn 方法。它使用
IAsyncOperation<InvokeMethodResult> InvokeAsync(IList<object> @params);
获取服务器响应。它看起来与您的 ReadValueAsync()
returns 相似。但不完全一样。这就是我访问字节的方式。
InvokeMethodResult result = await MyAllJoynMethod.InvokeAsync(new List<object> { "parameter", 2 });
if (result.Status.IsSuccess)
{
var resultList = result.Values as IList<object>;
foreach (var resultListItem in resultList)
{
var pairs = resultListItem as IList<KeyValuePair<object, object>>;
foreach (var pair in pairs)
{
var key = pair.Key as string; //<- type string taken from MyAllJoynMethod definition
var variant = pair.Value as AllJoynMessageArgVariant;//<- type AllJoynMessageArgVariant taken from MyAllJoynMethod definition (variant)
if (variant.TypeDefinition.Type == TypeId.Uint8Array)
{
var array8 = j as IList<object>;
foreach (byte b in array8)
{
// do something with b
}
}
}
}
}
编辑:如果你不想自己编程,你可以使用OpenAlljoynExplorer。不确定是否真正支持字节数组。
我有一个像这样的 AllJoyn 属性
<property name="DeviceAddresses" type="ay" access="read">
当我尝试阅读它时,我使用了 Windows 10 UWP 应用程序 - 我获得了成功 - 但我不知道如何从结果中获取值 代码如下所示:
var vProperty = pInterface.GetProperty(propertyName);
if (vProperty == null) return null;
var result = await vProperty.ReadValueAsync();
if (result.Status.IsSuccess)
{
if (vProperty.TypeInfo.Type == TypeId.Uint8Array)
{
byte[] Erg = result.Value ???
}
}
属性 值是通过
创建的object o = Windows.Foundation.PropertyValue.CreateUInt8Array(value);
但我发现没有办法(强制转换)取出字节。
我使用 DeviceProviders 访问 AllJoyn 方法。它使用
IAsyncOperation<InvokeMethodResult> InvokeAsync(IList<object> @params);
获取服务器响应。它看起来与您的 ReadValueAsync()
returns 相似。但不完全一样。这就是我访问字节的方式。
InvokeMethodResult result = await MyAllJoynMethod.InvokeAsync(new List<object> { "parameter", 2 });
if (result.Status.IsSuccess)
{
var resultList = result.Values as IList<object>;
foreach (var resultListItem in resultList)
{
var pairs = resultListItem as IList<KeyValuePair<object, object>>;
foreach (var pair in pairs)
{
var key = pair.Key as string; //<- type string taken from MyAllJoynMethod definition
var variant = pair.Value as AllJoynMessageArgVariant;//<- type AllJoynMessageArgVariant taken from MyAllJoynMethod definition (variant)
if (variant.TypeDefinition.Type == TypeId.Uint8Array)
{
var array8 = j as IList<object>;
foreach (byte b in array8)
{
// do something with b
}
}
}
}
}
编辑:如果你不想自己编程,你可以使用OpenAlljoynExplorer。不确定是否真正支持字节数组。