`
lgd_java2eye
  • 浏览: 189529 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

DP判断取多少字节根据银联

    博客分类:
  • java
 
阅读更多
/**
 * 
 */
package com.icitic.iccard.dp.test;

import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

/**
 * 运算规则和0x1f做与运算来确定是取得几个字节 用第一个字节和后面0x1f取值
        若和0x1f与操作后,还等于0x1f则取两个字节,取2个字节(4位)即可 ,数据都是16进制文件,取前(两位)做为一个字节
   template.dat的文件如下: 
   X00401|827C00|8701|9F360000|9F080020|9F5680|9F130000|9F4D0B0A|9F4F9A039F21039F02069F03069F1A025F2A029F4E149C019F3602|8C9F02069F03069F1A0295055F2A029A039C019F37049F21039F4E14|8D8A029F02069F03069F1A0295055F2A029A039C019F37049F21039F4E14|9F2700|9F0E0010980000|9F0FD86804F800|9F0DD86004A800|9F1007800103000000010A01|5F280156|5F2Dzh|9F510156|4FA000000333010101|50PBOC DEBIT|9F07FF00|8E000000000000000002031F00|9F499F3704|9F52C000|      |5F300220|      |X0035F24,5A,5F34,9F07,8E,9F0D,9F0E,9F0F,5F28,82|9F63|9F4A82&X00402|9F389F7A019F02065F2A02|8E00000000000000005E031F00|9F0E0010800000|9F0FD8683CF800|9F0DD8603CA800&X00403|827C00|9F389F66049F02069F03069F1A0295055F2A029A039C019F3704|9F6881400000|9F6C0000|9F1007800103000000010A01|
 * @author sandy
 * 
 */
public class FetchDPDataTag {

	//private static final String _FILENAME = "text.dat";
	
	/**
	 * text.dat(发卡行数据)文件的内容如下:
	 * X00401|5A6217661199000000814|5F3400|9F5300|9F54000000000000|9F5C000000000000|9F5800|9F5900|9F1400|9F2300|5F20|9F0B|9F61|9F6200|5F24161231|5F25110321|                |9F1F|57A2A2AC4DF6D286F91ED9A6961628D77093400DF06DA2A9CA8F01517F6690D849FB348F4B564D40C5&X00402|9F79000000000000|9F77000000100000|9F74ECC001|9F78000000100000|9F6D000000000000&X00403|9F6B000000999999|9F5D000000000001

	 */
	private static final String _TEMPLATEFILENAME = "template.dat";
	private static final String _SEPARATOR = "\\|";

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		start();
	}

	private static void start() {
		InputStream is = FetchDPDataTag.class.getClassLoader().getResourceAsStream(
				_TEMPLATEFILENAME);
		Scanner scanner = new Scanner(is, "utf-8");
		List<String> differents = new ArrayList<String>();
		List<String> sames = new ArrayList<String>();
		while (scanner.hasNextLine()) {
			parse(scanner, differents, sames);
		}
	}

	private static void parse(Scanner scanner, List<String> differents,
			List<String> sames) {
		String line = scanner.nextLine();
		String[] tagsAndValues = line.split(_SEPARATOR);
		for (String tagAndValus : tagsAndValues) {
			
			if (tagAndValus.trim()!=null&&tagAndValus.trim().length()!=0) {
				boolean b = tagAndValus.startsWith("X00");
				if (!b) {
					String he2 = tagAndValus.substring(0, 2);
					int i = Integer.parseInt(he2, 16);
					if ((i & 0x1f) == 0x1f) {
						String key = tagAndValus.substring(0, 4);
						distribute(differents, sames, key);
						System.out.println("2个字节key===" + key);
					} else {
						String key = tagAndValus.substring(0, 2);
						distribute(differents, sames, key);
						System.out.println("1个字节key===" + key);
					}
				}
			}
		}
		printrepeatTag(sames);
		print_unrepeatTag(differents);
	}

	/**
	 * 打印不重复的tag
	 * @param differents
	 */
	private static void print_unrepeatTag(List<String> differents) {
		for (String diff : differents) {
		//	System.out.println("不重复的tag==========="+diff);
			System.out.println(diff);
		}
	}

	/**
	 * 打印重复的tag
	 * @param sames
	 */
	private static void printrepeatTag(List<String> sames) {
		for (String sametag : sames) {
			System.out.println("重复的tag============="+sametag);
		}
	}

	/**
	 * 分发数据
	 * @param differents
	 * @param sames
	 * @param key
	 */
	private static void distribute(List<String> differents, List<String> sames,
			String key) {
		if(differents.contains(key)){
			sames.add(key);
		}else{
			differents.add(key);
		}
	}
}

 

分享到:
评论

相关推荐

    S7-1200 PROFIBUS DP 通信.doc

    5. 从站数据区:S7-1200 DP 从站数据区的大小输入区最大 240 字节,输出区最大 240 字节,每个 DP 从站的诊断数据区最大 240 字节。 6. 固件兼容性:CM1243-5 与 S7-1200 的固件兼容性,CM1243-5 固件版本博途软件...

    DP/DP COUPLE 快速使用教程

    DP/DP COUPLE,即DP/DPCoupler,是西门子推出的专门用于连接两个Profibus-DP主站网络的通讯耦合模块,它允许在两个独立的Profibus网络间进行高效的数据交换,最大可支持244字节的输入和244字节的输出数据传输。...

    DP-DP-Koppler_Rel3_www.44dpdp.com_www.44dpdp.con_EC1-DEB-DPM_GSD

    标题"DP-DP-Koppler_Rel3_www.44dpdp.com_www.44dpdp.con_EC1-DEB-DPM_GSD"中提到的"DP-DP-Koppler"可能指的是一个特定的软件或系统开发项目,其中"DP"可能是项目代号或者代表“Data Processing”的缩写,而"Koppler...

    cpu315-2dp与cpu244通过em277通讯问题.doc

    总结来说,CPU315-2DP与CPU244之间的通信关键在于正确配置硬件连接,特别是EM277模块的PROFIBUS地址,以及在编程时正确使用SFC67和SFC68,并根据分配的I/O地址进行数据交互。确保理解V存储器的映射关系,以及如何在...

    CPU315-2DP用集成DP端口做第三方DP从站的组态和编程

    CPU315-2DP 用集成 DP 端口做第三方 DP 从站的组态和编程 CPU315-2DP 是一种工业控制器,具有集成的 DP 端口,可以组态为 DP 主站或 DP 从站。本文将介绍如何使用 CPU315-2DP 的集成 DP 端口做第三方 DP 从站的组态...

    DP-600微软MCP ET.pdf

    根据提供的文件信息,我们可以推断出这是一份与微软MCP认证相关的学习资料,主要针对的是DP-600考试。下面将详细解读文件中的关键信息,并基于这些信息提炼出有关MCP认证的重要知识点。 ### 标题:“DP-600微软MCP ...

    DP1.4标准协议_VESAProposedDisplayPort(DP)Standard.7z

    DisplayPort(DP)1.4标准是视频电子标准协会(VESA)发布的一种高级数字接口规范,用于在显示设备和视频源之间传输未压缩的音频和视频数据。DP1.4标准是DP接口的一个重要升级,它在DP1.3的基础上引入了多项技术创新...

    区间DP概率DP树形DP插头DP

    区间DP概率DP树形DP插头DP,每种DP一道典型例题,有助于初学者

    西门子DP耦合器GDS文件

    西门子DP耦合器(DP-DP Koppler)是西门子S7-300和S7-400系列PLC系统中的一个重要组件,用于实现PROFIBUS DP现场总线网络中的主站与主站或者主站与从站之间的通信连接。GDS(Generic Device Services)文件则是这种...

    西门子DP组建动画演示

    - 从站的配置涉及选择合适的DP设备,根据设备手册配置其地址、输入/输出映射等。每个从站可以有独立的地址,方便在主站程序中进行访问。 4. **DP总线连接**: - DP总线连接主站和从站,采用屏蔽双绞线(DP cable...

    DP 1.2a标准协议

    2. **字节序**:为了确保数据包在不同设备间传输时能够被正确解析,标准中规定了字节序的规则。 #### 六、总结 DP 1.2a标准协议是DisplayPort系列标准中的一个重要版本,它不仅继承了前代版本的优点,还在许多方面...

    DPDP适配器在PROFIBUS总线网络中的应用

    ### DPDP适配器在PROFIBUS总线网络中的应用 #### 引言与背景 在现代工业自动化领域,PROFIBUS总线技术因其卓越的性能和可靠性,在众多工业场景中得到了广泛的应用。天津华泰科信科技有限公司在其直缝钢管生产线中...

    android dx和dp 像素和dp之间转换的工具类

    `dx`和`dp`(Density-independent Pixels)是Android系统中处理像素单位的关键概念,它们对于创建跨设备一致的用户体验至关重要。本文将详细探讨`dx`、`dp`以及如何在像素和`dp`之间进行转换。 `dp`,全称为密度...

    DP1.4标准——VESA Proposed DisplayPort (DP) Standard.pdf

    DP1.4标准——VESA Proposed DisplayPort (DP) Standard 标题:DP1.4标准——VESA Proposed DisplayPort (DP) Standard 描述:该文档定义了一个灵活的系统和设备,能够在Source设备和Sink设备之间通过数字通信接口...

    DP接口介绍+原理图与PCB layout资料总结汇总

    DisplayPort (DP) 接口是一种数字视频接口技术,由Video Electronics Standards Association (VESA) 制定,用于连接显示器和其他设备,如显卡、电视、笔记本电脑等。DP接口以其高带宽、多通道传输和对音频的支持而受...

    DP1.4标准——VESA Proposed DisplayPort (DP) Standard

    ### DP1.4标准——VESA Proposed DisplayPort (DP) Standard #### 概述 DisplayPort(简称DP)是由视频电子标准协会(VESA)制定的一种数字显示接口标准,旨在提供一种灵活、高效的数字通信接口,用于源设备...

    S7-1500 如何使用 DP 通信模块作为 DP 从站连接到 S7-300 CPU(STEP7).pdf

    S7-1500 如何使用 DP 通信模块作为 DP 从站连接到 S7-300 CPU(STEP7) Profibus DP 通信是一种广泛应用于工业自动化领域的现场总线技术。它规定了串行现场总线系统的技术和功能特性,通过这个系统,从底层...

Global site tag (gtag.js) - Google Analytics