/* 表内剩余气量回写区 * 存储区地址:3DH—3FH(61 – 63)数据说明:此存储区数据为燃气表对用户卡回写的表内剩余气量值。 * 剩余气量 = (3DH单元数值) X 100 + (3EH单元数值) X 1+ (3FH单元数值) X 0.1。 * 表内剩余气量最大数值为999.9立方米,其中,3DH单元数值范围为:0—9,3EH单元数值范围为:0—99,3FH单元数值范围为0 -- 9。 * 例如:若用户表内剩余气量为123.4立方米,则IC卡3DH—3FH存储单元应为:01H,17H,04H。*/ public static string ReadRemainQL() { string s = ""; byte[] data = new byte[3]; byte[] databuff = new byte[6]; int[] sum = new int[8]; string lbResult; icdev = IC.ic_init(port, baud); st = IC4442.srd_4442(icdev, 61, 3, data); if (st == 0) { st = IC.hex_asc(data, databuff, 3); lbResult = System.Text.Encoding.ASCII.GetString(databuff); s = LConvert.hex_int(lbResult); int lll = s.Length; byte[] intbuff = new byte[lll]; byte[] key = new byte[2]; int k = 0; double d = 0; intbuff = System.Text.Encoding.ASCII.GetBytes(s); for (int j = 0; j < 6; j = j + 2) { key[0] = intbuff[j]; key[1] = intbuff[j + 1]; string x = System.Text.Encoding.ASCII.GetString(key); sum[k] = Convert.ToInt32(x); k++; } d = 100 * sum[0] + sum[1] + 0.1 * sum[2]; lbResult = "剩余气量" + d.ToString() + lbResult; } else { lbResult = "读数据失败!"; } return(lbResult); }
//用户编号区 21H—24H(33 – 36)当存储在IC卡上时,8位数从低位到高位,每两位为1组,每组存入1个字节中。 //例如:若从卡上用户编号区读出的数据为:0CH,22H,38H,4EH,则用户编号为12345678。 public static string ReadUserId() { string s = ""; byte[] data = new byte[4]; byte[] databuff = new byte[8]; string lbResult; icdev = IC.ic_init(port, baud); st = IC4442.srd_4442(icdev, 33, 4, data); if (st == 0) { st = IC.hex_asc(data, databuff, 4); lbResult = System.Text.Encoding.ASCII.GetString(databuff); s = LConvert.hex_int(lbResult); s += LConvert.int_hex(s); lbResult = s + lbResult; } else { lbResult = "读数据失败!"; } return(lbResult); }