private static void readNanaco(Felica f) { f.Polling((int)SystemCode.Common); byte[] data = f.ReadWithoutEncryption(0x558b, 0); if (data == null) { throw new Exception("nanaco ID が読み取れません"); } Console.Write("Nanaco ID = "); for (int i = 0; i < 8; i++) { Console.Write(data[i].ToString("X2")); } Console.Write("\n"); for (int i = 0; ; i++) { data = f.ReadWithoutEncryption(0x564f, i); if (data == null) { break; } switch (data[0]) { case 0x47: default: Console.Write("支払 "); break; case 0x6f: Console.Write("チャージ "); break; } int value = (data[9] << 24) + (data[10] << 16) + (data[11] << 8) + data[12]; int year = (value >> 21) + 2000; int month = (value >> 17) & 0xf; int date = (value >> 12) & 0x1f; int hour = (value >> 6) & 0x3f; int min = value & 0x3f; Console.Write("{0}/{1:D2}/{2:D2} {3:D2}:{4:D2}", year, month, date, hour, min); value = (data[1] << 24) + (data[2] << 16) + (data[3] << 8) + data[4]; Console.Write(" 金額 {0,6}円", value); value = (data[5] << 24) + (data[6] << 16) + (data[7] << 8) + data[8]; Console.Write(" 残高 {0,6}円", value); value = (data[13] << 8) + data[14]; Console.WriteLine(" 連番 {0}", value); } }
private static void readNanaco(Felica f) { f.Polling((int)SystemCode.Common); byte[] data = f.ReadWithoutEncryption(0x558b, 0); if (data == null) { throw new Exception("nanaco ID ���ǂݎ��܂���"); } Console.Write("Nanaco ID = "); for (int i = 0; i < 8; i++) { Console.Write(data[i].ToString("X2")); } Console.Write("\n"); for (int i = 0; ; i++) { data = f.ReadWithoutEncryption(0x564f, i); if (data == null) break; switch (data[0]) { case 0x47: default: Console.Write("�x�� "); break; case 0x6f: Console.Write("�`���[�W "); break; } int value = (data[9] << 24) + (data[10] << 16) + (data[11] << 8) + data[12]; int year = (value >> 21) + 2000; int month = (value >> 17) & 0xf; int date = (value >> 12) & 0x1f; int hour = (value >> 6) & 0x3f; int min = value & 0x3f; Console.Write("{0}/{1:D2}/{2:D2} {3:D2}:{4:D2}", year, month, date, hour, min); value = (data[1] << 24) + (data[2] << 16) + (data[3] << 8) + data[4]; Console.Write(" ��z {0,6}�~", value); value = (data[5] << 24) + (data[6] << 16) + (data[7] << 8) + data[8]; Console.Write(" �c�� {0,6}�~", value); value = (data[13] << 8) + data[14]; Console.WriteLine(" �A�� {0}", value); } }
/// <summary> /// IDm取得メソッド /// </summary> /// <returns></returns> public string getID() { try { using (Felica felica = new Felica()) { felica.Polling(0xFFFF); byte[] data = felica.IDm(); id = ""; for (int i = 0; i < data.Length; i++) { id += data[i].ToString("X2"); } } } catch(Exception) { //MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return null; } return id; }
//[FelicaLib]Suica読み込み private static void PrintSuicaNo(FelicaLib.Felica f) { // システムコード: 0003 (Suicaなどの領域) f.Polling((int)SystemCode.Suica); //f.Polling((int)SystemCode.Any); Console.WriteLine("IDm=" + BitConverter.ToString(f.IDm())); Console.WriteLine("PMm=" + BitConverter.ToString(f.PMm())); // Suica 各サービスコード for (int i = 0; ; i++) { // サービスコード 乗降履歴情報 byte[] data = f.ReadWithoutEncryption(0x090f, i); if (data == null) { break; } Console.WriteLine("Suica 乗降履歴情報 [" + i + "] " + BitConverter.ToString(data)); } for (int i = 0; ; i++) { Console.WriteLine("Suica カード種別およびカード残額情報 " + i); // サービスコード カード種別およびカード残額情報 byte[] data = f.ReadWithoutEncryption(0x008B, i); if (data == null) { break; } } for (int i = 0; ; i++) { Console.WriteLine("Suica 改札入出場履歴情報 " + i); // サービスコード 改札入出場履歴情報 byte[] data = f.ReadWithoutEncryption(0x108F, i); if (data == null) { break; } } for (int i = 0; ; i++) { Console.WriteLine("Suica SF入場情報 " + i); // サービスコード SF入場情報 byte[] data = f.ReadWithoutEncryption(0x10CB, i); if (data == null) { break; } } for (int i = 0; ; i++) { Console.WriteLine("Suica 料金券情報 " + i); // サービスコード 料金券情報 byte[] data = f.ReadWithoutEncryption(0x184B, i); if (data == null) { break; } } for (int i = 0; ; i++) { byte[] data = f.ReadWithoutEncryption(0x008B, i); if (data == null) { break; } } }