//[NfcStarterKitWrap]サービスコード読み込み private static bool Read(nfc mFNS, ref byte[] buf, byte block_num, byte[] svc) { UInt16[] blocks = new UInt16[1]; blocks[0] = block_num; bool b = mFNS.NfcF_Read(ref buf, blocks, 1, svc); return(b); }
static void Main(string[] args) { #region FelicaLib try { Console.WriteLine("FelicaLib"); using (FelicaLib.Felica f = new FelicaLib.Felica()) { PrintSuicaNo(f); } Console.WriteLine("\n\n"); } catch (Exception ex) { Console.WriteLine(ex.Message); } #endregion #region NfcStarterKitWrap try { Console.WriteLine("NfcStarterKitWrap"); nfc mFNS = new nfc(); FelicaLite mLite = null; byte[] mWriteValue = new byte[nfc.BLOCK_SIZE]; if (!mFNS.init()) { Console.WriteLine("SDK for NFC Starter Kit fail"); Environment.Exit(0); return; } mLite = new FelicaLite(mFNS); bool ret; ret = mFNS.pollingF(); if (!ret) { Console.WriteLine("Polling fail"); return; } Console.WriteLine("IDm=" + BitConverter.ToString(mFNS.NfcId)); // 読み込み ReadSuica(mFNS); mFNS.unpoll(); Console.WriteLine("\n\n"); } catch (Exception ex) { Console.WriteLine(ex.Message); } #endregion Console.Read(); }
/// <summary> /// Assembles the map parts /// </summary>x private void AssembleMap() { this.zoomfactor = 6; this.minimx = 0; this.minimy = 0; this.mapx = 0; this.mapy = 0; this.error = false; this.statustext = ""; this.loaded_parts = ""; this.JPG = new MAPJPG(nfapath); this.NFA = new nfa(nfapath); this.NFC = new nfc(nfapath, this.strings); this.NFE = new nfe(nfapath); this.NFS = new nfs(nfapath, this.strings); this.QPF = new qpf(nfapath, this.strings); this.NFM = new nfm(nfapath); AssembleMap_image(); CheckMapForErrors(); }
//[NfcStarterKitWrap]Suica読み込み private static void ReadSuica(nfc mFNS) { int num = 1; //最大20ブロック[0~19] string _str = string.Empty; for (int i = 0; i < num; i++) { byte[] buf = new byte[nfc.BLOCK_SIZE]; var b = Read(mFNS, ref buf, (byte)i, new byte[2] { 0x0F, 0x09 }); if (!b) { break; } Console.WriteLine("Suica 乗降履歴情報 [" + i + "] " + BitConverter.ToString(buf)); _str += "[" + i + "] <090F>" + BitConverter.ToString(buf) + "\n"; //利用種別 //年月日 byte[] v2 = new byte[] { buf[5], buf[4] }; var val2 = BitConverter.ToInt16(v2, 0); //情報 byte[] v3_1 = new byte[] { buf[6], buf[7] }; var val3_1 = BitConverter.ToInt16(v3_1, 0); byte[] v3_2 = new byte[] { buf[8], buf[9] }; var val3_2 = BitConverter.ToInt16(v3_2, 0); //残高 byte[] v4 = new byte[] { buf[10], buf[11] }; var val4 = BitConverter.ToInt16(v4, 0); //履歴連番 byte[] v1 = new byte[] { buf[13], buf[14] }; var val1 = BitConverter.ToInt16(v4, 0); Console.WriteLine("機器種別 :" + buf[0].ToString("x2")); Console.WriteLine("利用種別 :" + (buf[1] >> 7) + " " + (buf[1] & 0x7F)); Console.WriteLine("決済種別 :" + buf[2].ToString("x2")); Console.WriteLine("入出場種別:" + buf[3].ToString("x2")); Console.WriteLine("年月日 :20" + (val2 >> 9) + "年" + ((val2 & 0x01FF) >> 5) + "月" + (val2 & 0x001F) + "日"); Console.WriteLine("情報 :" + val3_1 + " " + val3_2); Console.WriteLine("残額 :" + val4); Console.WriteLine("? :" + buf[12].ToString("x2")); Console.WriteLine("履歴連番 :" + val1); Console.WriteLine("地域コード:" + buf[15].ToString("x2")); _str += "機器種別 :" + buf[0].ToString("x2") + "\n"; _str += "利用種別 :" + (buf[1] >> 7) + " " + (buf[1] & 0x7F) + "\n"; _str += "決済種別 :" + buf[2].ToString("x2") + "\n"; _str += "入出場種別:" + buf[3].ToString("x2") + "\n"; _str += "年月日 :20" + (val2 >> 9) + "年" + ((val2 & 0x01FF) >> 5) + "月" + (val2 & 0x001F) + "日\n"; _str += "情報 :" + val3_1 + " " + val3_2 + "\n"; _str += "残額 :" + val4 + "\n"; _str += "? :" + buf[12].ToString("x2") + "\n"; _str += "履歴連番 :" + val1 + "\n"; _str += "地域コード:" + buf[15].ToString("x2") + "\n"; } Console.WriteLine(_str); }