这是 BizTalk RFID 中间件我声明的一个函数
类型是PropertyProfile的
主要功能描述下:
向设备发了,读参数命令后,把返回的值,做处理,根据返回的值,向PropertyProfile里添加属性,最后在 BizTalk RFID 上显示出来。
这个函数的处理,没问题。 问题主要是下面代码部分。
internal PropertyProfile  ParseProperty(byte[] resultBytes)
        {
            PropertyProfile profile = new PropertyProfile();
PropertyKey rfModeContKey = new PropertyKey(StandardDevicePropertyGroups.RF, RFPropertyGroup.RFModeContinuous);
           
            PropertyKey Frequency = new PropertyKey(StandardDevicePropertyGroups.RF, RFPropertyGroup.Frequency);
           
if(resultBytes[7]==0)   // auto or continous
            profile[rfModeContKey] = true;
            else
            profile[rfModeContKey] = false ;
            profile[Frequency] = freValue(resultBytes[8]);            return profile;
           
        }问题在这里:
//spc.Property.Key.GroupName.XX;
//spc.Property.PropertyValue.
如何在这里把,BizTalk RFID 中间件的界面上的 属性 取出来??
if (command is SetPropertyCommand)
            {
                byte[] para = new byte[32];       
                SetPropertyCommand spc = (SetPropertyCommand)command;
                //spc.Property.Key.GroupName.XX;
                //spc.Property.PropertyValue.
                
                RfCmd.RfSetFactoryParameter(para);
                return null;
}

解决方案 »

  1.   

    namespace System.IO.SensorServices.Rfid.Client
    {
        [Serializable]
        public sealed class EntityProperty
        {
            public EntityProperty(PropertyKey propertyKey, object propertyValue);        public PropertyKey Key { get; }
            public object PropertyValue { get; }        public override string ToString();
        }
    }这是我看到有个内部类;
    他在设置时,是用下面的方法获得
    public override void SetProviderProperty(EntityProperty property)
            {
                PropertyKey pk = property.Key;
                
                if (!providerPropertyValues.ContainsKey(pk))
                {
                    throw new RfidProviderException(@"This {0} groupname/ {1} propertyname is not supported by the provider",
                                                            "", property.Key.GroupName, property.Key.PropertyName);
                }            providerPropertyValues[pk] = property.PropertyValue;
            }我该如何来搞呢??楞是看不懂,  这个中间件,就剩这个问题了,怎么把界面上的属性值给获取来,作为参数
    ,送给我们的设备了
      

  2.   

    private void InitProviderProperties(PropertyProfile providerInitParameters)
            {
                providerPropertyValues = new Dictionary<PropertyKey, object>();
                Dictionary<PropertyKey,RfidProviderPropertyMetadata> providerPropertyMetaData = AcmeProviderMetaData2.GetProviderPropertyMetadata();            foreach (PropertyKey pk in providerPropertyMetaData.Keys)
                {
                    if (providerPropertyMetaData[pk] != null)
                        providerPropertyValues.Add(pk, providerPropertyMetaData[pk].DefaultValue);
                    else
                        providerPropertyValues.Add(pk, null);
                }            if (providerInitParameters != null)
                {
                    foreach (PropertyKey pk in providerInitParameters.Keys)
                    {
                        providerPropertyValues[pk] = providerInitParameters[pk];
                    }
                }        }还有这么个函数,大家帮忙看看吧,给些建议。
      

  3.   

    我就是不明白这种声明方法providerPropertyValues = new Dictionary<PropertyKey, object>();
                Dictionary<PropertyKey,RfidProviderPropertyMetadata> providerPropertyMetaData = AcmeProviderMetaData2.GetProviderPropertyMetadata();
    如上面这个 等等