ADS相关+JSON

在使用ADS进行数据交互的时候,若出现新增变量则需要同时修改底层PLC与上位机控制程序,那样会相对麻烦,为了开发方便,我们可以选用Json格式来进行数据交互。

JSON的优势

  • JSON是纯文本。
  • JSON具有良好的自我描述性,便于阅读。
  • JSON具有层级结构(值中存在值)。
  • JSON数据可使用AJAX(异步JavaScript和XML)进行传输。

在实际应用中,经常使用ajax配合json来完成任务,比和XML配合容易的多,速度快,如果使用XML,需要读取XML文档,然后用XML DOM来遍历文档并读取值并存储在变量中。使用JSON,则只需读取JSON字符串。


JSON库下载

官网:http://json.codeplex.com/
源码地址:https://github.com/JamesNK/Newtonsoft.Json
Newtonsoft.Json.dll下载:https://github.com/JamesNK/Newtonsoft.Json/releases

找到适合自己的.net环境在项目中引用即可

需要注意的是在使用过程中 传递的JSON 数据的 Key 值的名称采用的是 Pascal 还是Camel命名法


UT

 public class ADSVariable : INotifyPropertyChanged
 {
        //使用了INotifyPropertyChanges interface接口
        //当值发生改变时,触发
        #region 字段
        private int handle;            //句柄
        private string adsVarName;     //变量名
        private string name;           
        private string typeName;
        private Type type;             //数据类型
        private string varValue;       //值
        private string description;
        #endregion
        #region 事件
        public event PropertyChangedEventHandler PropertyChanged;
        #endregion
        #region 属性
        public int Handle
        {
            get{return handle;}
            set{handle = value;}
        }
        *********************************
        AdsVarName
        Name
        TypeName
        Type
        Description
        *********************************

        public string TypeName
        {
            get{ return typeName;}
            set{
                try{
                    typeName = value;
                    this.type = Type.GetType(typeName, false, true);
                }catch(Exception ex){
                    throw ex;
                }
            }
        }


        public string VarValue
        {
            get{return varValue; }
            set{
                varValue = value;
                NotifyPropertyChanged();
            }
        }

        #endregion

        #region 构造函数
        /// <summary>
        /// <param name="handle"></param>
        /// <param name="adsVarName"></param>
        /// <param name="name"></param>
        /// <param name="typeName"></param>
        /// <param name="varValue"></param>
        /// <param name="description"></param>
        public ADSVariable(int handle, string adsVarName, string name, string typeName, string varValue,string description)
        {
            this.Handle = handle;
            this.AdsVarName = adsVarName;
            this.Name = name;
            this.TypeName = typeName;
            this.VarValue = varValue;
            this.Description = description;
        }
        #endregion


        private void NotifyPropertyChanged([CallerMemberName] string propertyName = "")
        {
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
        }

    }

ADS的常用接口

interface IADSAccessable
{
    /// <summary>
    /// 注册变量对象列表
    /// </summary>
    List<ADSVariable> LstADSVariable { get; set; }

    /// <summary>
    /// 通过配置文件导入注册变量对象列表
    /// </summary>
    /// <param name="filepath"></param>
    void RegeditADSVeriableByfile(string filepath);

    /// <summary>
    /// 清空LstADSVariable
    /// </summary>
    void ResetADSVeriable();

    /// <summary>
    /// 链接控制器
    /// </summary>
    /// <param name="netID"></param>
    /// <param name="srvPort"></param>
    void Connect(string netID, int srvPort);

    /// <summary>
    /// 通过同步方式读取注册在ADSHelper中的所有变量值,更新至字段LstADSVariable中
    /// </summary>
    void ReadAllADSVariables();

    /// <summary>
    /// 通过变量名称字符串从ADS设备中以同步方式读取变量值,存入object类型对象中。
    /// </summary>
    /// <param name="varName">变量名称</param>
    /// <returns>ADSVariable对象</returns>
    ADSVariable ReadAnyByVarName(string varName);

    /// <summary>
    /// 通过变量名写入变量值
    /// </summary>
    /// <typeparam name="T">变量类型</typeparam>
    /// <param name="name">变量名称</param>
    /// <param name="value">设定值</param>
    void WriteAnyByVarName<T>(string name, T value);
    //void WriteAnyByVarName(string name, string value);

    /// <summary>
    /// 断开与ADS设备的通讯连接
    /// </summary>
    void Disconnect();
}

ADS的相关接口实现

暂留 哈哈 一会儿再上传

UT测试相关也一会儿再上传

ending!


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值