每一个数据项包括3部分

组包类、解码器类和界面

一、界面

1、在“资源解决方案管理器”中右单击SetupUI目录。菜单“添加”->“用户控件”。

出现添加新项对话框,输入名称,这里假设叫C_F13_zyd。确定。

3、出现新建用户控件的设计视图,按下F7键转换到代码视图。引用的命名空间加上

using Zaxis.ControlBase;
using PkgBuilder.Foundation;

将这个控件的父类改为SetupCommonUI:

public partial class C_F13_zyd : SetupCommonUI

这时的设计视图已变为开发所需要的形式,在上半部分的区域中拖入需要的控件。

4、修改bin\stipulation.xml文件,加入

<AFN_0xC>
    <stext>F13每日0点综合数据</stext>
    <FunID>13</FunID>
    <fn>13</fn>
    <pn>0</pn>
    <UIClass>Zaxis.SetupUI.C_F13_zyd</UIClass>
</AFN_0xC>

注意类名要写全名Zaxis.SetupUI.C_F13_zyd。到这儿这个数据项的界面就新建完成了。

二、组包类

在Encode目录右键单击,选“添加”->“类”。输入类名。

先加入命名空间

using PkgBuilder;
using PkgBuilder.Foundation;

将此类继承自TerminalPackage。

A_F3_SetupPkg:TerminalPackage

在此文件中再写一个类封装此类数据所有的项目,继承自TerminalParameters。

加上对应TerminalParameters(MSA, TerminalAreaCode, TerminalID, AFN, Pn, Fn)的构造函数。

public A_F3_TerminalParameter(byte MSA, ushort TerminalAreaCode, ushort TerminalID, byte AFN, byte Pn, byte Fn,
                                                                                                                                string _mainIP, ushort _mainPort, string _bakIP, ushort _bakPort, string _netgateIP, ushort _netgatePort, string _proxyIP, ushort _proxyPort, string _APN)
            : base(MSA, TerminalAreaCode, TerminalID, AFN, Pn, Fn)
        {
            this.mainIP = _mainIP;
            this.mainPort = _mainPort;
            this.bakIP = _bakIP;
            this.bakPort = _bakPort;
            this.netgateIP = _netgateIP;
            this.netgatePort = _netgatePort;
            this.proxyIP = _proxyIP;
            this.proxyPort = _proxyPort;
            this.APN = _APN;

AppendParas = new ArrayList();
        }

**调用你写的类形成数据包

定义一个你定义的参数

A_F3_TerminalParameter tep = new A_F3_TerminalParameter(……)

A_F3_SetupPkg pkg = new A_F3_SetupPkg(tep, null, null);
byte[] byts= pkg.Buffer;

三、解码器

在Decryptor目录右键单击,选“添加”->“类”。输入类名。

加入Zaxis.Encode命名空间。

所有的解码类继承自DecryptorBase,重写DoDecrypt方法。

public override void DoDecrypt()
      {

先定义一个本数据类的参数,

A_F3_TerminalParameter p = new A_F3_TerminalParameter();

将_strAry数组的内容按编码规则翻译成p的各项数据

最后一定要 _TEParameter = p;

}

写个解码器

每一个数据项包括3部分

组包类、解码器类和界面

SetupCommonUI的属性QueryEncodeBytes当被子类重写时的显示问题。

TerminalParameters类的重要性

它是终端下发包的基类,包含MSA, TerminalAreaCode, TerminalID, AFN, Pn, Fn这些信息,可以继承它添加新的成员。

*******************************************************************

1、DecryptHandler负责查找解码器,利用正则表达式匹配特征码。

找到以后用Activator.CreateInstance创建实例。

2、解码器的抽象基类DecryptorBase 中3个成员变量,供子类解析出数据保存。

//要解析出的数据结构 用类表示(数据成员)抽象
    protected PackageParameters _TEParameter;
    protected PackageParameters _TRParameters;
    protected PackageParameters _CWParameters;

DecryptorBase类在构造函数中调用DoDecrypt方法。

DecryptorBase的子类必须实现DoDecrypt方法和ToString方法,

public override void DoDecrypt()    具体
        {

//定义自己的数据类的实例,这个类必须是上面3个之一的子类。
            A_F16_TerminalParameter A_F16_Parameter = new A_F16_TerminalParameter();

//进行解析,为各个数据项赋值
            A_F16_Parameter.xnzwUserName = _strAry[0];
            A_F16_Parameter.xnzwPasswd = _strAry[1];

//保存在_TEParameter变量中 抽象
            _TEParameter = A_F16_Parameter;
        }

调用事件程序

DecryptHandler.Decrypted(_decryptor, dmap.UIClassName, onepack, _decryptor.ToString());

主窗体中有Decrypted事件的代码,将解析的结果转给对应的窗体。先用UIClassName找到页签。

scui.Decrypt2UIAnsy(decryptor.TEParameter,OriginalPkgs); 抽象

实际是异步调用:

SetupCommonUI类中:

public virtual void Decrypt2UI(PackageParameters DecryptedPara, string OriginalPkgs)
        {
            ShowPkgInGrid((byte)1, OriginalPkgs);
            //this.Invoke(new ShowPkgInGridD(ShowPkgInGrid), new object[] { (byte)1, OriginalPkgs });
        }

子类中(也就是实际的界面)

public override void Decrypt2UI(PackageParameters DecryptedPara, string OriginalPkgs)
{

//先将DecryptedPara还原成特定的数据类
    A_F16_TerminalParameter p = DecryptedPara as A_F16_TerminalParameter;  具体
    textBox1.Text = p.xnzwUserName.ToString();
    textBox2.Text = p.xnzwPasswd.ToString();

//一定要再调用父类的这个过程
    base.Decrypt2UI(DecryptedPara, OriginalPkgs);
}

**************************************************************

转载于:https://www.cnblogs.com/edong/archive/2010/05/18/1738494.html

Zaxis数据编程方法相关推荐

  1. 直播 | 复旦大学许燚:少量标注样本场景下基于数据编程的半监督分类

    「AI Drive」是由 PaperWeekly 和 biendata 共同发起的学术直播间,旨在帮助更多的青年学者宣传其最新科研成果.我们一直认为,单向地输出知识并不是一个最好的方式,而有效地反馈和 ...

  2. 调用实现天气预报功能android,Android编程实现获取新浪天气预报数据的方法

    本文实例讲述了Android编程实现获取新浪天气预报数据的方法.分享给大家供大家参考,具体如下: 新浪天气预报地址: http://php.weather.sina.com.cn/xml.php?ci ...

  3. matlab输出lccde_Matlab与Visual C++混合编程处理全站仪数据的方法

    Matlab 与 Visual C++ 混合编程处理全站仪数据的方法 胡加星,刘立龙,刘靖晔 [摘 要] 内业数据检核中经常要对点的外业实测坐标与内业成图后的坐标进行 比较,以此来发现是否出现造点或是 ...

  4. 雏凤清音——面向数据的前端编程方法

    1 名词解释 桐花万里丹山路,雏凤清于老凤声--唐·李商隐<韩冬郎既席为诗相送因成二绝> 作为一种有别传统的前端编程方法,雏风名之. 面向数据的编程方法,避开繁琐的ui代码,直接针对前端数 ...

  5. JavaScript异步编程:异步的数据收集方法

    我们先尝试在不借助任何工具函数的情况下来解决这个问题.笔者能想到的最简单的方法是:因前一个readFile的回调运行下一个readFile,同时跟踪记录迄今已触发的回调次数,并最终显示输出.下面是笔者 ...

  6. ASP.NET Core 实战:基于 Dapper 扩展你的数据访问方法

    ASP.NET Core 实战:基于 Dapper 扩展你的数据访问方法 一.前言 在非静态页面的项目开发中,必定会涉及到对于数据库的访问,最开始呢,我们使用 Ado.Net,通过编写 SQL 帮助类 ...

  7. android用于查询数据的方法,android: SQLite查询数据

    掌握了查询数据的方法之后,你也就将数据库的 CRUD 操 作全部学完了.不过千万不要因此而放松,因为查询数据也是在 CRUD 中最复杂的一种 操作. 我们都知道 SQL 的全称是 Structured ...

  8. pythonrequests发送数据_在python中使用requests 模拟浏览器发送请求数据的方法

    在python中使用requests 模拟浏览器发送请求数据的方法 如下所示: import requests url='http://####' proxy={'http':'http://#### ...

  9. oracle怎么将一列挪到另一列,详细讲解Oracle数据库的数据迁移方法

    <详细讲解Oracle数据库的数据迁移方法>由会员分享,可在线阅读,更多相关<详细讲解Oracle数据库的数据迁移方法(4页珍藏版)>请在人人文库网上搜索. 1.详细讲解 Or ...

最新文章

  1. 碰到Maven依赖冲突,想砸电脑?这个IDEA插件必须了解一下...
  2. boost::throw_exception的测试程序
  3. Qt学习笔记之项目管理(pro)文件
  4. OpenCL向量相加
  5. poj 2096 , zoj 3329 , hdu 4035 —— 期望DP
  6. oracle dataguard 日志 很多no,Oracle DataGuard主庫丟失歸檔日志后備庫的RMAN增量恢復一例...
  7. Android+usb+spi,Android设备如何使用USB的硬件接口
  8. 30096大学计算机应用基础,300道计算机应用基础试题(附答案)
  9. Java 对象数组的定义与用法详解
  10. 天翼网关密码忘记(猫密码忘记)
  11. Win10 重装系统 (iso方式)(超详细)
  12. Qt 中信号和槽机制
  13. linux gtx驱动程序,Nvidia 418.43 发布,支持GeForce GTX 1660 Ti的Linux图形驱动程序
  14. Java实现斗地主的发牌以及展示
  15. 分布式系统关注点——360°的全方位监控
  16. 使用Python转换PDF/Word/Html/PPT
  17. Event Loop 事件循环简介
  18. 微信小程序使用高德API获取位置信息
  19. word文档保存后闪退
  20. 人工智能入门书籍推荐,中小学人工智能编程什么书比较好?

热门文章

  1. Java如何获取系统cpu、内存、硬盘信息
  2. Spring4-@Configuration的使用
  3. Qt4连接mysql5数据库
  4. LSOF 安装与使用(功能强大)
  5. 聊聊数据挖掘竞赛中的套路与深度学习的局限
  6. Unicode 和 UTF-8关系
  7. thinkphp查询
  8. python bottle web框架简介
  9. Android开发:第五日番外——过时的函数和被横杠的函数
  10. .Net 引用命名空间