SOP通讯格式规则
1.概述
通讯数据包由公共信息部分、交易数据部分
公共信息部分包括系统信息头和交易公共信息头。
交易数据部分包括交易数据头(可选)、业务数据和系统控制命令。
业务数据部分又包括数据单元、表格和对象。业务数据部分可以插入系统控制命令。
1.1系统信息头
部分是与系统相关的,包括目标服务代码、数据源代码、长度等系统信息,由系统配置文件(数据库表,下同)指定,每字段的个数、顺序、长度固定。
1.2交易公共信息头
部分是跟同一数据包中所包含的所有交易相关的信息,包括交易的终端,交易柜员,机构等信息,组织方式同系统信息头的格式。
1.3交易数据头
部分包括交易代码,交易模式,前台流水号,授权柜员等信息,组织方式同系统信息头的格式。
1.4业务数据部分
由长度+数据组成,长度用一个字节的二进制数表示,数据全部转换成字符串传送,字符串的最大长度由系统的BYTE_MAX_LEN宏定义指定(在本系统里,我们定义BYTE_MAX_LEN 为250(0xFA)),大于该长度的部分系统保留作为控制命令用。如果数据单元的长度超过
BYTE_MAX_LEN,则分段发送,0xFF作为超长数据的标志。例如要传768字节数据,由于系统定义BYTE_MAX_LEN为250,则该数据段为
0xFF+250字符+0xFF+250字符+0xFF+250字符+0x12+18字符;如要传250字节数据时,则该数据段为0xFA+250字符。
控制命令部分。在业务数据中,可以穿插控制命令,其格式为:控制字符标志+控制字符串长度+控制字符串。控制字符标志由系统保留的BYTE_MAX_LEN~0xFF之间的字符标识,在本系统中系统保留字符为0xFB,0xFC,0xFD,0xFE,目前仅使用0XFE作为打印相关的控制命令标识符。
整个通讯数据包的组成示意图如下:
下面将分几个部分详细描述整个系统的通讯格式。
2.单元定义
2.1数据单元(TRANFLD)
数据单元TRANFLD是COP和SOP中代表特定内容的基本数据项,一般对应一个应
用数据定义,在SOP平台中采用可自解包的通讯格式。数据单元通讯格式如下:
每一个数据单元在通讯格式中用两个部分表示——长度+内容。内容部分都以字符串方式传输,截掉前导和后续的空格,以减少冗余数据的传输。长度以一个字节的16进制数表示,可表示的最大长度为250(0XFA)字节,若数据单元长度超过250字节,则采用分解传送的方式,以0XFF表示数据单元超长,如上图中266字节数据单元。
长度定义中0XFB~0xFE保留,作为控制命令使用,见控制命令描述。
属性是可选项,可以包括多种属性,目前仅支持打印属性。对于一般数据单元不需要定义,对于其它对象一般需要定义相应属性。
打印属性定义格式如下:
本系统中,要求Y<=250 && X<=250。
打印模式的具体含义见打印模式定义。
打印:
row col mode
0xfe 0x01 0x0c
2.2表格单元(FORM)
表格单元FORM是指COP和SOP平台中由格式相同的多条记录组成的复合数据单元,其中每一条记录的数据又由多个数据单元组成。表格在通讯格式中以表格名+记录条数+多条记录数据组成,每一条记录又由多个数据单元(表示方法同数据单元)表示。
表格单元的通讯格式如下:
属性是可选项,在一般数据单元的定义中不使用。
在本系统中,记录条数不得大于250个。如果记录条数可能大于250条,必须采用文件传输的方式解决这一问题。
表格的打印属性定义如下:
模式M1~Mn为数字代码,含义同数据单元中的说明。
其它属性定义可以根据扩展对象的属性进行定义。
打印:
换页:0xfe 0x1 0x0c
换行:0xfe 0x1 0x0a
2.3对象单元
COP/SOP的对象代表一个具有特定属性的复合数据单元,是COP/SOP系统实现后台驱动前台的基础。
对象描述中必须包括对象名,其它属性如字段排列顺序等可在外部静态定义。对象的组成元素可以包括数据单元和表格单元等系统支持的各类单元。
在COP/SOP系统中,对象的类型可以根据需求进行扩展和定义,目前支持的对象类型包括窗口对象、打印对象等。
)+表格单元(可选项)组成。一个包含数据单元和表
对象一般由对象名+数据单元(可选项
窗口对象的对象内容中不包含数据单元和表格单元的可选属性,如行、列、模式等信息。
打印对象由对象名+[打印属性+数据单元](可选项)+[表格名称+记录条数+栏位数+打印属性+格数据](可选项)+打印控制命令码(可选项)组成。打印控制命令码见打印控制命令码介绍。
打印对象:
row + col + mode
2.4控制命令码
控制命令码可以穿插在数据单元之间,也可以穿插在表格单元的数据项之间。
COP/SOP系统中保留了0XFB~0XFE之间的取值作为控制命令标志用。目前仅使用控制命令标志0XFE,作为打印控制命令码传输标志。
在这里有一个换页打印的问题,本系统定义了0xFE为系统控制命令标志,换页符为
0x0c。因此,如果需要换页打印,该换页控制命令串为0xFE+0x01+0x0c;该串可以置于打印对象的数据单元或表格单元之前(如0xFE+0x01+0x0c+TRANFLD或FORM),也可以置于FORM数据中某一条记录之前(如FORM的第n-1条记录+0xFE+0x01+0x0c+FORM的第n条记录),其它地方一概予以忽略。
3输入信息格式
输入/输出是相对后台主机而言的。输入信息是指客户端发向后台主机的信息。输入信息包由系统信息头、交易公共头、交易数据头、业务数据组成。
其中系统信息头、交易公共头和交易数据头采用结构化的数据格式;业务数据采用长度加字符串的传输方式,在本系统中,除二进制数据外,其他数据都转换成字符串类型进行传输。
输入信息格式中不允许存在对象单元和控制命令码,业务数据由数据单元和表格单元组成。数据单元和表格单元的传输格式见单元定义。
下面将介绍系统信息头、交易公共头、交易数据头三个部分的数据格式。
3.1系统信息头
系统信息头的格式如下:(23bytes)
交易时间字符串是什么{
数据包长度(SHJBCD)unsigned short//转换成网络格式
目标地址(YNDIZH)unsigned char(4) //二进制方式存储
源地址(MBIODZ)unsigned char(4)//二进制方式存储
系统保留位(BOLIUW)unsigned char(1) //二进制方式存储
信息结束标志(XXJSBZ)unsigned char(1) //二进制方式存储
报文序号(SJBSXH)unsigned short//转换成网络格式
校验标志(JIOYBZ)unsigned char(1) //二进制方式存储
校验值(JIOYNZ)unsigned char(8) //二进制方式存储
}
字段说明
信息长度:表示整个数据包的长度,包括本数据项所占用的字节数。
目标地址:目标服务器的地址,以代码表示,包含目标服务器,服务端口等信息。具体表示方法见附录。
源地址:交易发起端地址,以代码表示,包含源设备,服务端口等信息。具体表示方法见附录。
系统保留位:暂不使用。默认设置为0
信息结束标志:为适应多包数据通讯保留,默认设置为1
报文序号:为了防止报文恶意重发设置,暂不使用,默认值为0
校验标志:是否需要MAC或其它校验
校验值:校验算法生成的数据项
3.2交易公共头
公共交易头格式如下:(21bytes)
{
终端号ZHNGDH char(5)String//字符串方式存储
城市代码CHSHDM char(4)String
机构代码YNGYJG char(4)String
交易柜员JIO1GY char(8)String
}
字段说明
终端号:交易发起端终端号,省略TTY,如21a表示终端tty21a。
城市代码:暂不使用,设置为空格
机构代码:银行机构代码。
交易柜员:交易柜员代码。
3.3交易数据头
交易数据头格式如下:(45bytes)
{
交易代码JIAOYM char(4)//String
交易子码JIOYZM char(2)//String
交易模式JIOYMS char(1)//String
交易序号JIOYXH int//int
本交易包长度COMMLN unsigned short//
系统偏移1PNYIL1unsigned short//0xFFFF为无效
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论