DAFTAR PUSTAKA
Abdillah, L.A. 2006. Perancangan Basis Data Sistem Informasi Penggajian. Skiripsi. Universitas Bina Darma Palembang.
Adil, R. 2009. Sistem Informasi Via SMS Gateway Antara Pihak Kepolisian Dengan Pengemudi. Skripsi. Polikteknik Elektronika Negeri Surabaya.
Beynon-Davies. P. 2004. Database System:Third Edition Palgrave, Basingstoke: United Kingdom.
Fikri, Azkal. 2010. Aplikasi Short Message Service (SMS) gateway untuk layanan informasi Registrasi administrasi mahasiswa. Skripsi. Ilmu Komputer, Universitas Pendidikan Indonesia.
Juanda, E.A. 2010. Rancang Bangun Mesin Penjawab SMS Otomatis Berbasis Mikrokontroler ATMega8535. Skripsi. Teknik Elektro Universitas Pendidikan Indonesia.
Lubis, E.E. 2010. Implementasi Pemesanan Makanan Dengan Menggunakan Short Message Service (SMS) Pada Rumah Makan Moro Tresno Binjai. Skripsi. Universitas Panca Budi Medan.
Munir, R. 2013. Fungsi Hash Satu-Arah dan Algoritma MD5. Skripsi. Institut Teknologi Bandung.
Parlindungan, M. 2012. Analisis dan Perancangan Perangkat Lunak Pemesanan Tiket Pesawat Berbasis SMS Gateway. Skripsi. Universitas Sumatra Utara.
Putra, S. & Wiharta, A. 2005. Perancangan dan Pembuatan Sistem Kontrol Dengan Memanfaatkan Layanan SMS Telepon Selular Berbasis Mikrokontroler AT89C51, Skirpsi. Teknik Elektro Universitas Udayana Bali.
Universitas Sumatera Utara
73
Rozidi, R.I. 2004. Membuat Sendiri SMS Gateway (ESME) Berbasis Protokol SMPP. Yogyakarta. Penerbit: ANDI.
Sadikin, R. 2012. Kriptografi Untuk Keamanan Jaringan. Andi Publisher : Indonesia.
Siregar, M.A. 2010. Analisis dan Perancangan Aplikasi Pelelangan Barang Berbasis Short Message Service (SMS) dengan J2ME pada Sisi Client, Skripsi. Universitas Sumatera Utara.
Setiawati, M. 2011. Multiple Intelligences Application Using With Visual C #. Net 2008 and Microsoft SQL Server 2005. Skiripsi. Universitas Gunadarma Jakarta.
Somantri, Yoyo & Kustiawan, Iwan. 2011. Rancangan Bangun Sistem Server Pulsa Elektrik Untuk Bisnis Pulsa Pada Tingkat Agen Berbasis Mikrokontroler ATMega8535. Seminar Internasional, ISSN 1907-2066, Peran LPTK Dalam Pengembangan Pendidikan di Indonesia.
Shao, D. Khurshid, S. and Perry, D. E. 2007. A Case for white-box Testing Using Declarative Specification Poster Abstract. In testing: Academic and Industrial Conferens Practice and Reasearch Tecniques, p. 137.
Tarigan, Edison Daud, 2012. Membangun SMS Gateway Berbasis Web Dengan Codeigniter. Yogyakarta: Lokomedi
Zoni, F. 2010. Custumer Relationship Management (CRM) Pada RSI Ibnu Sina Kabupaten Pasaman Barat Berbasis SMS Gateway. Skripsi. Teknologi Informatika, Fakultas Ilmu Komputer Universitas Putra Indonesia Padang.
Universitas Sumatera Utara
74
1.
SMS Background Process using using using using using using using using
System; System.Collections.Generic; System.Linq; System.Text; System.Threading; System.IO.Ports; System.Text.RegularExpressions; PemesananKeretaApiBerbasisSMSGateway.data;
namespace PemesananKeretaApiBerbasisSMSGateway.AppCode { public class SMSBackgroundProcess { public SerialPort port; PemesananKeretaApiDatabaseEntities _entities = new PemesananKeretaApiDatabaseEntities(); public SMSLib smsLib = new SMSLib(); public bool SIM_STORAGE = true; private const int CMD_JADWAL = 1; private const int CMD_PESAN = 2; private const int CMD_BOOKING = 3; public SMSBackgroundProcess() { } public void StartReadSMS() { Thread readSMS = new Thread(new ThreadStart(ReadSMS)); readSMS.IsBackground = true; readSMS.Start(); } private void ReadSMS() { while (true) { List<ShortMessage> messages = null; try { if (this.port != null) { // Check connection smsLib.ExecCommand(port, "AT", 300, "No phone connected"); // Use message format "Text mode" smsLib.ExecCommand(port, "AT+CMGF=1", 300, "Failed to set message format."); // Use character set "ISO 8859-1" //ExecCommand("AT+CSCS=\"8859-1\"", 300, "Failed to set character set."); // Select SIM storage if (SIM_STORAGE) { smsLib.ExecCommand(port, "AT+CPMS=\"SM\"", 300, "Failed to select message storage."); } else {
Universitas Sumatera Utara
75
smsLib.ExecCommand(port, "AT+CPMS=\"ME\"", 300, "Failed to select message storage."); } // Read the messages string input = smsLib.ExecCommand(port, "AT+CMGL=\"REC UNREAD\"", 5000, "Failed to read the messages."); messages = ParseMessages(input); if (messages.Count > 0) { foreach (ShortMessage msg in messages) { int cmd = 0; if (ValidateSMS(msg, ref cmd)) { if (cmd == CMD_JADWAL) { General.LogActivity("ReadSMS_", "Jadwal request"); Console.WriteLine("JADWAL"); string[] pesan = msg.Message.Split(new char[] { ' ' }); string kota = pesan[1].ToUpper(); var listJadwal = _entities.JadwalBerangkat.Where(j => j.KotaTujuan.ToUpper() == kota).ToList(); if (listJadwal.Count <= 0) { smsLib.sendMsg(port, msg.Sender, "Jadwal Tidak Tersedia"); } else { String sms = ""; int i = 1; foreach (var item in listJadwal) { if (item.KelasKereta.Count > 0) { foreach (var kelas in item.KelasKereta) { sms += String.Format("{0}. Kode : {1} Kereta: {2} Pukul : {3} Harga: {4}. ", i, item.KodeJadwal.Trim() + "." + kelas.IdKelas, item.Kereta.Nama.Trim(), item.JamBerangkat.Trim(), General.CurrencyFormat((int)item.Harga)); i++; } } else { sms += String.Format("{0}. Kode : {1} Kereta: {2} Pukul : {3} Harga: {4}.", i, item.KodeJadwal.Trim(), item.Kereta.Nama.Trim(), item.JamBerangkat.Trim(), General.CurrencyFormat((int)item.Harga)); i++; } } SendMultiPageSMS(msg.Sender, sms); } } SendMultiPageSMS(msg.Sender, sms); }
Universitas Sumatera Utara
76
}
2.
Short Massage using System; using System.Collections.Generic; using System.Text; namespace PemesananKeretaApiBerbasisSMSGateway.AppCode { class ShortMessage { private int index; private string status; private string sender; private string alphabet; private string sent; private string message; public int Index { get { return index; } set { index = value; } } public string Status { get { return status; } set { status = value; } } public string Sender { get { return sender; } set { sender = value; } } public string Alphabet { get { return alphabet; } set { alphabet = value; } } public string Sent { get { return sent; } set { sent = value; } } public string Message { get { return message; } set { message = value; } } } }
Universitas Sumatera Utara
77
3.
SMSlib using using using using using using
System; System.Collections.Generic; System.Linq; System.Text; System.IO.Ports; System.Threading;
namespace PemesananKeretaApiBerbasisSMSGateway.AppCode { public class SMSLib { public AutoResetEvent receiveNow; static AutoResetEvent readNow = new AutoResetEvent(false); public SMSLib() { //receiveNow = new AutoResetEvent(true); } public SerialPort OpenPort(string portName, int baudRate, int dataBits, int readTimeout, int writeTimeout) { receiveNow = new AutoResetEvent(true); SerialPort port = new SerialPort(); try { port.PortName = portName; port.BaudRate = baudRate; port.DataBits = dataBits; port.ReadTimeout = readTimeout; port.WriteTimeout = writeTimeout; port.StopBits = StopBits.One; port.Parity = Parity.None; port.Encoding = Encoding.GetEncoding("iso-8859-1"); port.DataReceived +=new SerialDataReceivedEventHandler(port_DataReceived); port.Open(); port.DtrEnable = true; port.RtsEnable = true; } catch (Exception ex) { General.ErrorLog(ex.Message); throw ex; } return port; }
4.
Hash using System; using System.Collections.Generic;
Universitas Sumatera Utara
78
using System.Linq; using System.Text; using System.Security.Cryptography; namespace PemesananKeretaApiBerbasisSMSGateway.AppCode { class Hash { string[] tableHash; public Hash() { tableHash = new string[36]; byte i = 48; int j = 0; while (i <= 90) { if ((i >= 48 && i <= 57) || (i >= 65 && i <= 90)) { tableHash[j] = Encoding.ASCII.GetString(new byte[] { i }); j++; } i++; } } public string Encrypt(string text) { MD5 md5Hasher = MD5.Create(); byte[] data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(text)); StringBuilder sb = new StringBuilder(); int[] temp = new int[8]; for (int i = 0; i < (data.Length/2); i++) { temp[i] = data[i] & data[data.Length - i - 1]; } for (int i = 0; i < temp.Length; i++) { int m = temp[i] % 36; sb.Append(tableHash[m]); } return sb.ToString(); } } }
Universitas Sumatera Utara