• Tidak ada hasil yang ditemukan

Perancangan Kendali Saklar On/Off Menggunakan SMS.

N/A
N/A
Protected

Academic year: 2017

Membagikan "Perancangan Kendali Saklar On/Off Menggunakan SMS."

Copied!
72
0
0

Teks penuh

(1)

PERANCANGAN KENDALI SAKLAR ON/OFF

MENGGUNAKAN SMS

Yonas Kurniawan / 0727029

Jurusan Sistem Komputer, Fakultas Teknik, Universitas Kristen Maranatha

Jalan Prof. Drg. Suria Sumantri 65

Bandung 40164, Indonesia

ABSTRAK

Semakin berkembangnya teknologi, maka layanan SMS yang disediakan

oleh

handphone

tidak lagi hanya digunakan untuk tukar menukar pesan data

dalam bentuk teks, tetapi dapat digunakan untuk mengontrol suatu sistem

perancangan untuk mengendalikan saklar

on/off

.

Sistem ini terdiri dari perangkat keras dan perangkat lunak. Perangkat

keras meliputi ULN, berfungsi sebagai penguat arus, Modem Huawei berfungsi

sebagai

handphone

receiver

dan

transmitter

yang terhubung dengan komputer

melalui port USB yang ada dikomputer, dan

handphone

berfungsi sebagai

pengirim pesan. Perangkat lunak pada sistem ini menggunakan bahasa

pemograman Microsoft Visual Basic.Net.

Pesan yang dikirim berupa suatu karakter. Pesan tersebut akan diterima

oleh

receiver

dan program akan memprosesnya, jika pesan benar maka program

akan mengontrol saklar sesuai dengan pesan yang dikirimkan. Namun jika pesan

yang dikirim salah maka program akan memberitahukan kesalahannya

(2)

THE DESIGN OF ON/OFF SWITCH CONTROL BY SMS

Yonas Kurniawan / 0727029

Computer Engineering, Technic Faculty, Christian Maranatha University

Prof. Drg. Suria Sumantri 65 Street

Bandung 40164, Indonesia

ABSTRACT

Technology development has increase in an advance way, so the Short

Messaging Service that usually used in text data trading is no longer the only way,

but it also can be a way to control a system designed for switching on/off button.

This system is consist of hardware and software. The hardware covers the

ULN which it's function is current amplifier. Huawei modem as the receiver, and

transmitter which is connect to the computer, and the handphone used as the

message deliver. The software in this system is using programmable language

Microsoft Visual Basic.Net.

The message, that consist in characters, was delivered to a receiver and the

program will process it, if the message is right the program will take over the the

control of the switch according to what the message will be. But if the message is

wrong then the program will give corrections.

(3)

DAFTAR ISI

ABSTRAK ... i

ABSTRACT ... ii

KATA PENGANTAR ... iii

DAFTAR ISI ... v

DAFTAR TABEL ... . ix

DAFTAR GAMBAR ... x

BAB I. PENDAHULUAN

1.1 Latar Belakang ... 1

1.2 Identifikasi Masalah ... 1

1.3 Tujuan ... 2

1.4 Pembatasan Masalah ... 2

1.5 Sistematika Pembahasan ... 2

BAB II. DASAR TEORI

2.1

Port

Paralel ... 4

2.1.1 Kegunaan

Port

Paralel ... 5

2.1.2 Fungsi dari 25 Pin DB 25 ... 6

2.1.3 Register-register dari

Port

Paralel ... 7

2.2 Motor

Stepper

... 8

2.3 ULN 2803 ... 11

2.4

Light Emmiting Diode

(LED) ... 12

2.4.1 Fungsi Fisikal ... 12

(4)

2.4.4 Sirkuit LED ... 14

2.4.5

Substrat

LED ... 14

2.4.6 LED Biru dan Putih ... 15

2.5

Modem

... 16

2.6

Handphone

... 17

2.6.1 Fungsi dan Fitur ... 18

2.6.2 Cara Kerja ... 19

2.7 Microsoft Visual Studio 2008 / Microsof Visual Basic. Net ... 20

2.8 Modul XSMSEngine.ocx dan AxmsCtrl.dll ... 21

2.9 Modul INPOUT32.dll ... 22

BAB III. PERANCANGAN DAN REALISASI

3.1 Perangkat Keras ... 24

3.1.1 Komputer Personal ... 24

3.1.2

Port

Paralel ... 24

3.1.3

Modem

... 24

3.1.4 Maket ... 26

3.1.5 Rangkaian Sistem Lampu ... 27

3.1.6 Rangkaian Sistem Pintu ... 28

3.2 Perangkat Lunak ... 29

3.2.1 Visual Studio.Net ... 29

3.3 Perancangan Tampilan Software Perancangan Pengendalian Saklar . 31

3.4 Database ... 32

3.5 Diagram Alir ... 35

(5)

4.1.1 Pengujian Pada Motor

Stepper

... 37

4.1.2 Pengujian Pada LED ... 39

4.1.3 Pengujian

Handphone

dan

Modem

... 40

4.2 Pengujian Perangkat Lunak ... 41

4.2.1 Pengujian

Form

Pintu Tanpa Menggunakan SMS ... 41

4.2.2 Pengujian

Form

Lampu Tanpa Menggunakan SMS ... 42

4.2.3 Pengujian

Form

Lampu dan Pintu Menggunakan SMS ... 44

BAB V. KESIMPULAN DAN SARAN

V.1 Kesimpulan ... 46

V.2 Saran ... 46

DAFTAR PUSTAKA ... 47

LAMPIRAN A

Program pada Visual Studio 2008

LAMPIRAN B

ULN 2803

LAMPIRAN C

(6)

DAFTAR TABEL

Tabel 2.1 Konfigurasi Pin ... 6

Tabel 2.2 Register-Register

Port

Paralel ... 8

Tabel 2.3 Motor

Stepper

Dengan Gerakan

Full Step

... 9

Tabel 2.4 Motor

Stepper

Dengan Gerakan

Half Step

... 10

Tabel 3.1 Definisi

Fields

untuk

Database

SMS ... 33

Tabel 3.2 Definisi

Field

untuk

Database

Status Pintu ... 33

Tabel 3.3 Definisi

Fields

untuk

Database

Status Lampu ... 34

Tabel 4.1 Pengujian Motor

Stepper

... 38

Tabel 4.2 Pengujian LED ... 39

Tabel 4.3 Pengujian

Handphone

... 40

Tabel 4.4 Pengujian

Modem

... 40

Tabel 4.5 Pengujian

Form

Pintu Tanpa Menggunakan SMS ... 42

Tabel 4.6 Pengujian

Form

Lampu Tanpa Menggunakan SMS ... 43

(7)

DAFTAR GAMBAR

Gambar 2.1

Port

paralel ... 4

Gambar 2.2 Motor

Stepper

... 9

Gambar 2.3 ULN 2803 ... 11

Gambar 2.4 LED ... 12

Gambar 2.5

Modem

... 17

Gambar 2.6

Handphone

... 18

Gambar 3.1 Blok Diagram Sistem ... 23

Gambar 3.2 Maket Perancangan Kendali Saklar ... 26

Gambar 3.3 Rangkaian Sistem Lampu ... 27

Gambar 3.4 Rangkaian Sistem Pintu ... 28

Gambar 3.5 Tampilan Awal Visual Basic.Net ... 29

Gambar 3.6 Hwinterface.ocx dan Inpout32.dll ... 30

Gambar 3.7 XSMSEngine.ocx dan AXmsCtrl.dll ... 30

(8)

Gambar 3.10 Diagram Alir Sistem ... 35

Gambar 4.1

Form

Pintu ... 41

Gambar 4.2

Form

Lampu ... 42

(9)

LAMPIRAN A

Listing Program

Program pada Visual Studio 2008

(10)

LISTING PROGRAM PADA VISUAL STUDIO 2008

Imports System.Data

Imports System.Data.SqlClient Imports AXmsCtrl

Public Class Receive

Inherits System.Windows.Forms.Form

Dim objSendOptionsForm As SendOptionsForm Dim objWapForm As SmsDataWapForm

Dim objRingtoneForm As SmsDataRingtoneForm Dim objPictureForm As SmsDataPictureForm

Dim objGsmReceiveOptionsForm As SmsGsmReceiveOptionsForm Dim objPincodeForm As PincodeForm

Private objGsmProtocol As SmsProtocolGsm Private objConstants As SmsConstants Public conn As New SqlConnection("Data

Source=.\SQLEXPRESS;Initial Catalog=dbSaklar;Integrated Security=True")

Public owner As String = "YONAS" Public pintuOwner As String = "PINTU" Public lampStat1 As String

(11)

Private Sub Query(ByVal sender As String, ByVal text As String, ByVal status As String)

Dim cmd As New SqlCommand()

Dim da As New SqlDataAdapter(cmd) cmd.Connection = conn

conn.Open()

cmd.CommandText = "insert into tbInbox VALUES('" + sender + "','" + text + "','" + status + "')"

cmd.CommandType = CommandType.Text cmd.ExecuteNonQuery()

conn.Close() End Sub

Private Sub Receive_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Dim numDeviceCount, l As System.Int32 Dim strDevice As String

objGsmProtocol = New SmsProtocolGsm objConstants = New SmsConstants

objSendOptionsForm = New SendOptionsForm objWapForm = New SmsDataWapForm

objRingtoneForm = New SmsDataRingtoneForm objPictureForm = New SmsDataPictureForm

objGsmReceiveOptionsForm = New SmsGsmReceiveOptionsForm objPincodeForm = New PincodeForm

' Fill devices combo

ctlDevices.Items.Clear()

numDeviceCount = objGsmProtocol.GetDeviceCount() For l = 0 To numDeviceCount - 1

strDevice = objGsmProtocol.GetDevice(l) ctlDevices.Items.Add(strDevice)

Next

ctlDevices.Items.Add("COM1") ctlDevices.Items.Add("COM2") ctlDevices.Items.Add("COM3") ctlDevices.Items.Add("COM4") ctlDevices.Items.Add("COM5") ctlDevices.Items.Add("COM6") ctlDevices.Items.Add("COM7") ctlDevices.Items.Add("COM8") ctlDevices.SelectedIndex = 0 ' Fill devicespeed combo

ctlDeviceSpeed.Items.Clear()

(12)

ctlDeviceSpeed.Items.Add("4800") ctlDeviceSpeed.Items.Add("9600") ctlDeviceSpeed.Items.Add("19200") ctlDeviceSpeed.Items.Add("38400") ctlDeviceSpeed.Items.Add("57600") ctlDeviceSpeed.Items.Add("115200") ctlDeviceSpeed.SelectedIndex = 0 ' Set log file

ctlLogFile.Text = System.IO.Path.GetTempPath() & "GsmLog.txt"

ctlRecipient.Text = "<Recipients mobile number>" ctlMessage.Text = "<type your message here>" ctlSentMessages.Columns.Clear()

ctlSentMessages.Columns.Add("Reference", 60, HorizontalAlignment.Left)

ctlSentMessages.Columns.Add("Recipient", 80, HorizontalAlignment.Left)

ctlSentMessages.Columns.Add("Time", 80, HorizontalAlignment.Left)

ctlSentMessages.Columns.Add("Status", 100, HorizontalAlignment.Left)

ctlReceivedMessages.Items.Clear() ctlReceivedMessages.Columns.Clear()

ctlReceivedMessages.Columns.Add("Sender", 150, HorizontalAlignment.Left)

ctlReceivedMessages.Columns.Add("Message", 300, HorizontalAlignment.Left)

UpdateControls() Timer1.Enabled = True End Sub

Private Sub UpdateControls() Dim strDevice As String

strDevice = ctlDevices.SelectedItem.ToString()

If (String.Compare(strDevice, 0, "COM", 0, 3, True) = 0) Then

ctlDeviceSpeed.Enabled = True Else

ctlDeviceSpeed.Enabled = False End If

(13)

Private Sub Refreshs()

Dim numMessageType, i As System.Int32 Dim strByte As String

Dim objSmsMessage As SmsMessage ' Clear all items in list

ctlReceivedMessages.Items.Clear() ' Device(pilih alat/modem)

objGsmProtocol.Clear()

objGsmProtocol.Device = ctlDevices.SelectedItem.ToString() ' Device speed(tdk muncul)

If ctlDeviceSpeed.SelectedIndex = 0 Then objGsmProtocol.DeviceSpeed = 0

Else

objGsmProtocol.DeviceSpeed =

System.Int32.Parse(ctlDeviceSpeed.SelectedItem.ToString()) End If

' Set Logfile (optonal, for debugging purposes)()tdk muncul

objGsmProtocol.LogFile = ctlLogFile.Text ' Set Storage

objGsmProtocol.MessageStorage = objGsmReceiveOptionsForm.numMessageStorage

' Set Delete on/off(otomatis ceklist status)

objGsmProtocol.DeleteAfterReceive = objGsmReceiveOptionsForm.bDeleteAfterReceive ' Set Cursor

System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.WaitCursor

' Read Items from storage (baca sms dri SIM)

objGsmProtocol.Receive() 'ambil sms dri SIM from plugin .Receive()

UpdateResult(objGsmProtocol.LastError) ' ambil sms dri SIM, klo success 0, failed 1

If (objGsmProtocol.LastError = 0) Then

Dim str(2) As String ' dimulai dri 0 , str(0) dan str(1)

Dim itm As ListViewItem ' deklarasi list view from plugin

objSmsMessage = objGsmProtocol.GetFirstMessage()

'ambil sms pertama,,obj sms penampung sms

(14)

str(0) = objSmsMessage.Sender ' ambil pengirim sms

If (numMessageType <> objConstants.asMESSAGEFORMAT_DATA) Then

str(1) = objSmsMessage.Data ' data = isi sms dri SIM

Else

str(1) = "<DATA>" End If

itm = New ListViewItem(str) 'str(0) dan Str(1) udah terisi

ctlReceivedMessages.Items.Add(itm)

'sms berhasil ditampilkan di list view success tp blom ke database

'executeOrder(0856xxx,isiSMs) masuk ke execute order!!!

If (executeOrder(objSmsMessage.Sender, objSmsMessage.Data)) Then

Query(objSmsMessage.Sender.ToString(), objSmsMessage.Data.ToString(), "success")

If objSmsMessage.Data.Contains("YONAS") Then testsms(objSmsMessage.Sender.ToString(), "berhasil")

End If

Else

Query(objSmsMessage.Sender.ToString(), objSmsMessage.Data.ToString(), "failed")

testsms(objSmsMessage.Sender.ToString(), "formatsalah")

End If

objSmsMessage = objGsmProtocol.GetNextMessage()

'get next buat baca sms selanjutnya

End While End If

'ctlReceivedMessages.Items.RemoveAt(1)

'Reset Cursor

(15)

Function executeOrder(ByVal sender As String, ByVal text As String)

'sender -> 0856xxx

'text -> isi SMS

Dim order(2) As String Dim lampu(5) As String 'YONAS 1111'

'order(0) = yonas

'order(1) = 1111

'pisahkan spasi dri sms .split

order = text.Split(CChar(" ")) If order(0) = "YONAS" Then

If order.Length = 2 Then 'Cthnya YONAS 1111

lampu(1) = Mid(order(1), 1, 1).ToString() lampu(2) = Mid(order(1), 2, 1).ToString() lampu(3) = Mid(order(1), 3, 1).ToString() lampu(4) = Mid(order(1), 4, 1).ToString()

If order(0) = "YONAS" Then

If (lampu(1) = "0" Or lampu(1) = "1") And

(lampu(2) = "0" Or lampu(2) = "1") And (lampu(3) = "0" Or lampu(3) = "1") And (lampu(4) = "0" Or lampu(4) = "1") Then

Form1.GenLamp(lampu(1), lampu(2), lampu(3), lampu(4))

'sendSMS(sender, "berhasil")

Return True Else

'sendSMS(sender, "formatlampu salah")

Return False End If

Else

'sendSMS(sender, "formatsalah")

Return False End If

ElseIf order.Length = 1 Then ' CEK

If order(0) = "CEK" Then

testsms(sender, "cekstatus") Return True

Else

Return False End If

Else

Return False End If

ElseIf order(0) = "PINTU" Then

(16)

frmPintu.genPintu(sender, order(1)) Return True

Else

testsms(sender, "gagalPintu") Return False

End If End If

'1111

End Function

Public Sub testsms(ByVal recipient As String, ByVal status As String)

If (Mid(recipient, 1, 1) = "0") Then

recipient = "+62" + (Mid(recipient, 2, recipient.Length))

End If

Dim objSmsMessage As SmsMessage = New SmsMessage Dim strMessageReference As String

objSmsMessage.Clear()

If status = "formatsalah" Then 'nomer penerima

objSmsMessage.Recipient = recipient 'pesan

objSmsMessage.Data = "Format SMS salah. Ketik OWNER_NAME<spasi>status atau CEK utk status"

ElseIf status = "formatlampusalah" Then 'nomer penerima

objSmsMessage.Recipient = recipient 'pesan

objSmsMessage.Data = "Format Status Lampu Salah. Contoh : 1111"

ElseIf status = "nomorunknown" Then 'nomer penerima

objSmsMessage.Recipient = recipient 'pesan

objSmsMessage.Data = "No Anda Tidak Terdaftar" ElseIf status = "berhasil" Then

'nomer penerima

(17)

objSmsMessage.Data = "Perintah Behasil Dilaksanakan" ElseIf status = "gagalPintu" Then

'nomer penerima

objSmsMessage.Recipient = recipient 'pesan

objSmsMessage.Data = "Format Salah. Cth PINTU BUKA" ElseIf status = "berhasilTutup" Then

'nomer penerima

objSmsMessage.Recipient = recipient 'pesan

objSmsMessage.Data = "Pintu Berhasil Ditutup" ElseIf status = "berhasilBuka" Then

'nomer penerima

objSmsMessage.Recipient = recipient 'pesan

objSmsMessage.Data = "Pintu Berhasil Dibuka" ElseIf status = "gagalBuka" Then

'nomer penerima

objSmsMessage.Recipient = recipient 'pesan

objSmsMessage.Data = "Pintu Gagal Dibuka Karena Pintu Dalam Keadaan Terbuka"

ElseIf status = "gagalTutup" Then 'nomer penerima

objSmsMessage.Recipient = recipient 'pesan

objSmsMessage.Data = "Pintu Gagal Ditutup Karena Pintu Dalam Keadaan Tertutup"

ElseIf status = "cekstatus" Then 'nomer penerima

objSmsMessage.Recipient = recipient Dim cmd As New SqlCommand()

Dim da As New SqlDataAdapter(cmd) Dim dReader As SqlDataReader Dim ds As New DataSet

cmd.Connection = conn conn.Open()

cmd.CommandText = "SELECT * FROM TbStatLamp" cmd.CommandType = CommandType.Text

cmd.ExecuteNonQuery()

da.Fill(ds, "statlamp")

(18)

If (dReader.Read) Then lampStat1 = dReader(0) lampStat2 = dReader(1) lampStat3 = dReader(2) lampStat4 = dReader(3) End If

dReader.Close() conn.Close() 'pesan ngirim sms

objSmsMessage.Data = "Lampu 1 = " + lampStat1 + ", Lampu 2 = " + lampStat2 + ", Lampu 3 = " + lampStat3 + ", Lampu 4 = " + lampStat4 + ""

End If

objSmsMessage.Format = objConstants.asMESSAGEFORMAT_TEXT If (objSendOptionsForm.bDeliveryReport) Then

objSmsMessage.RequestDeliveryStatus = -1 Else

objSmsMessage.RequestDeliveryStatus = 0 End If

If (ctlUnicode.Checked) Then objSmsMessage.Format = objConstants.asMESSAGEFORMAT_UNICODE

If (objSendOptionsForm.bImmediateDisplay) Then objSmsMessage.Format =

objConstants.asMESSAGEFORMAT_UNICODE_FLASH End If

If (objSendOptionsForm.bMultipart) Then objSmsMessage.Format =

objConstants.asMESSAGEFORMAT_UNICODE_MULTIPART End If

Else

objSmsMessage.Format = objConstants.asMESSAGEFORMAT_TEXT

If (objSendOptionsForm.bImmediateDisplay) Then objSmsMessage.Format =

objConstants.asMESSAGEFORMAT_TEXT_FLASH End If

If (objSendOptionsForm.bMultipart) Then objSmsMessage.Format =

objConstants.asMESSAGEFORMAT_TEXT_MULTIPART End If

End If

If (objSendOptionsForm.bUDH) Then objSmsMessage.Format =

objConstants.asMESSAGEFORMAT_DATA_UDH End If

objGsmProtocol.Clear()

(19)

objGsmProtocol.DeviceSpeed = 0 Else

objGsmProtocol.DeviceSpeed =

System.Int32.Parse(ctlDeviceSpeed.SelectedItem.ToString()) End If

' Set Logfile (optonal, for debugging purposes)

' objGsmProtocol.LogFile = ctlLogFile.Text

' Set Cursor

System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.WaitCursor

' Send the message !

strMessageReference = objGsmProtocol.Send(objSmsMessage) UpdateResult(objGsmProtocol.LastError)

If (objGsmProtocol.LastError = 0) Then Dim str(4) As String

Dim itm As ListViewItem str(0) = strMessageReference str(1) = objSmsMessage.Recipient str(2) = "n/a"

str(3) = "Submitted"

itm = New ListViewItem(str) itm.Tag = 0

ctlSentMessages.Items.Insert(0, itm) End If

' Reset Cursor

System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.Default

End Sub

Public Sub sendSMS(ByVal recipient As String, ByVal status As String)

Dim objSmsMessage As SmsMessage = New SmsMessage Dim strMessageReference As String

objSmsMessage.Clear()

If status = "formatsalah" Then 'nomer penerima

objSmsMessage.Recipient = recipient 'pesan

objSmsMessage.Data = "Format SMS salah. Ketik OWNER_NAME<spasi>status"

ElseIf status = "formatlampusalah" Then 'nomer penerima

(20)

objSmsMessage.Data = "Format Status Lampu Salah. Contoh : 1111"

ElseIf status = "nomorunknown" Then 'nomer penerima

objSmsMessage.Recipient = recipient 'pesan

objSmsMessage.Data = "No Anda Tidak Terdaftar" ElseIf status = "berhasil" Then

'nomer penerima

objSmsMessage.Recipient = recipient 'pesan

objSmsMessage.Data = "Perintah Behasil Dilaksanakan" ElseIf status = "cekstatus" Then

objSmsMessage.Recipient = recipient

objSmsMessage.Data = "Lampu 1 = " + lampStat1 + ", Lampu 2 = " + lampStat2 + ", Lampu 3 = " + lampStat3 + ", Lampu 4 = " + lampStat4 + ""

End If

objSmsMessage.Format = objConstants.asMESSAGEFORMAT_TEXT If (objSendOptionsForm.bDeliveryReport) Then

objSmsMessage.RequestDeliveryStatus = -1 Else

objSmsMessage.RequestDeliveryStatus = 0 End If

If (ctlUnicode.Checked) Then objSmsMessage.Format = objConstants.asMESSAGEFORMAT_UNICODE

If (objSendOptionsForm.bImmediateDisplay) Then objSmsMessage.Format =

objConstants.asMESSAGEFORMAT_UNICODE_FLASH End If

If (objSendOptionsForm.bMultipart) Then objSmsMessage.Format =

objConstants.asMESSAGEFORMAT_UNICODE_MULTIPART End If

Else

objSmsMessage.Format = objConstants.asMESSAGEFORMAT_TEXT

If (objSendOptionsForm.bImmediateDisplay) Then objSmsMessage.Format =

objConstants.asMESSAGEFORMAT_TEXT_FLASH End If

If (objSendOptionsForm.bMultipart) Then objSmsMessage.Format =

objConstants.asMESSAGEFORMAT_TEXT_MULTIPART End If

End If

If (objSendOptionsForm.bUDH) Then objSmsMessage.Format =

(21)

objGsmProtocol.Clear()

objGsmProtocol.Device = ctlDevices.SelectedItem.ToString() If ctlDeviceSpeed.SelectedIndex = 0 Then

objGsmProtocol.DeviceSpeed = 0 Else

objGsmProtocol.DeviceSpeed =

System.Int32.Parse(ctlDeviceSpeed.SelectedItem.ToString()) End If

' Set Logfile (optonal, for debugging purposes)

' objGsmProtocol.LogFile = ctlLogFile.Text

' Set Cursor

System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.WaitCursor

' Send the message !

strMessageReference = objGsmProtocol.Send(objSmsMessage) UpdateResult(objGsmProtocol.LastError)

If (objGsmProtocol.LastError = 0) Then Dim str(4) As String

Dim itm As ListViewItem str(0) = strMessageReference str(1) = objSmsMessage.Recipient str(2) = "n/a"

str(3) = "Submitted"

itm = New ListViewItem(str) itm.Tag = 0

ctlSentMessages.Items.Insert(0, itm) End If

' Reset Cursor

System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.Default

End Sub

Private Sub ctlReceive_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ctlReceive.Click

Refreshs() End Sub

Private Sub ctlReceiveOptions_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ctlReceiveOptions.Click

objGsmReceiveOptionsForm.ShowDialog() End Sub

Private Sub UpdateResult(ByVal numResult As System.Int32) ctlResult.Text = numResult.ToString() & ": " &

(22)

Private Sub ctlView_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ctlView.Click

If (System.IO.File.Exists(ctlLogFile.Text)) Then System.Diagnostics.Process.Start(ctlLogFile.Text) End If

End Sub

Private Sub ctlPincode_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ctlPincode.Click

If (objPincodeForm.ShowDialog() = DialogResult.OK And objPincodeForm.strPincode <> "") Then

' Device

objGsmProtocol.Device = ctlDevices.SelectedItem.ToString() ' Device speed

If ctlDeviceSpeed.SelectedIndex = 0 Then objGsmProtocol.DeviceSpeed = 0

Else

objGsmProtocol.DeviceSpeed =

System.Int32.Parse(ctlDeviceSpeed.SelectedItem.ToString()) End If

' Set Logfile (optonal, for debugging purposes)

objGsmProtocol.LogFile = ctlLogFile.Text ' Set Cursor

System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.WaitCursor

objGsmProtocol.EnterPin(objPincodeForm.strPincode) UpdateResult(objGsmProtocol.LastError)

' Reset Cursor

System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.Default

End If End Sub

Private Sub ctlSend_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ctlSend.Click

Dim objSmsMessage As SmsMessage = New SmsMessage Dim strMessageReference As String

objSmsMessage.Clear() 'nomer penerima

objSmsMessage.Recipient = ctlRecipient.Text 'pesan

(23)

objSmsMessage.Format = objConstants.asMESSAGEFORMAT_TEXT If (objSendOptionsForm.bDeliveryReport) Then

objSmsMessage.RequestDeliveryStatus = -1 Else

objSmsMessage.RequestDeliveryStatus = 0 End If

If (ctlUnicode.Checked) Then objSmsMessage.Format = objConstants.asMESSAGEFORMAT_UNICODE

If (objSendOptionsForm.bImmediateDisplay) Then objSmsMessage.Format =

objConstants.asMESSAGEFORMAT_UNICODE_FLASH End If

If (objSendOptionsForm.bMultipart) Then objSmsMessage.Format =

objConstants.asMESSAGEFORMAT_UNICODE_MULTIPART End If

Else

objSmsMessage.Format = objConstants.asMESSAGEFORMAT_TEXT

If (objSendOptionsForm.bImmediateDisplay) Then objSmsMessage.Format =

objConstants.asMESSAGEFORMAT_TEXT_FLASH End If

If (objSendOptionsForm.bMultipart) Then objSmsMessage.Format =

objConstants.asMESSAGEFORMAT_TEXT_MULTIPART End If

End If

If (objSendOptionsForm.bUDH) Then objSmsMessage.Format =

objConstants.asMESSAGEFORMAT_DATA_UDH End If

objGsmProtocol.Clear()

objGsmProtocol.Device = ctlDevices.SelectedItem.ToString() If ctlDeviceSpeed.SelectedIndex = 0 Then

objGsmProtocol.DeviceSpeed = 0 Else

objGsmProtocol.DeviceSpeed =

System.Int32.Parse(ctlDeviceSpeed.SelectedItem.ToString()) End If

' Set Logfile (optonal, for debugging purposes)

' objGsmProtocol.LogFile = ctlLogFile.Text

' Set Cursor

System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.WaitCursor

' Send the message !

strMessageReference = objGsmProtocol.Send(objSmsMessage) UpdateResult(objGsmProtocol.LastError)

(24)

Dim itm As ListViewItem str(0) = strMessageReference str(1) = objSmsMessage.Recipient str(2) = "n/a"

str(3) = "Submitted"

itm = New ListViewItem(str) itm.Tag = 0

ctlSentMessages.Items.Insert(0, itm) End If

' Reset Cursor

System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.Default

End Sub

Private Sub ctlSendOptions_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ctlSendOptions.Click

objSendOptionsForm.ShowDialog() End Sub

Private Sub ctlWapPush_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ctlWapPush.Click

If (objWapForm.ShowDialog() = DialogResult.OK) Then ctlMessage.Text = objWapForm.strWAPCoding

objSendOptionsForm.bUDH = True End If

End Sub

Private Sub ctlRingTone_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ctlRingTone.Click

If (objRingtoneForm.ShowDialog() = DialogResult.OK) Then ctlMessage.Text = objRingtoneForm.strHexRingtoneCoding objSendOptionsForm.bUDH = True

End If End Sub

Private Sub ctlPicture_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ctlPicture.Click

If (objPictureForm.ShowDialog() = DialogResult.OK) Then ctlMessage.Text = objPictureForm.strPictureCoding objSendOptionsForm.bUDH = True

End If End Sub

Private Sub test2(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

loadHistory End Sub

Public Sub loadHistory()

Dim cmd As New SqlCommand()

(25)

Dim dReader As SqlDataReader Dim ds As New DataSet

cmd.Connection = conn conn.Open()

cmd.CommandText = "select * from tbInbox" cmd.CommandType = CommandType.Text

da.Fill(ds, "inbox")

DataGridView1.DataSource = ds.Tables(0) conn.Close()

End Sub

Private Sub time_tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

TrackBar1.Value = TrackBar1.Value - 1 If (TrackBar1.Value <= 0) Then

Refreshs() loadHistory() loadStatLamp() TrackBar1.Value = 1 End If

End Sub

Private Sub ceklampu(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles viewLampu.Click

loadStatLamp() End Sub

Public Sub loadStatLamp()

Dim cmd As New SqlCommand()

Dim da As New SqlDataAdapter(cmd) Dim dReader As SqlDataReader Dim ds As New DataSet

cmd.Connection = conn conn.Open()

cmd.CommandText = "SELECT * FROM TbStatLamp" cmd.CommandType = CommandType.Text

cmd.ExecuteNonQuery()

da.Fill(ds, "statlamp")

(26)

If (dReader.Read) Then lampStat1 = dReader(0) lampStat2 = dReader(1) lampStat3 = dReader(2) lampStat4 = dReader(3) End If

dReader.Close() conn.Close() End Sub

(27)

Option Strict On Option Explicit On Imports System.Data

Imports System.Data.SqlClient Imports AXmsCtrl

Module InpOut32_declarations

Public Declare Function Inp Lib "inpout32.dll" Alias "Inp32" (ByVal PortAddress As Short) As Short

Public Declare Sub out Lib "inpout32.dll" Alias "Out32" (ByVal PortAddress As Short, ByVal value As Short)

End Module

Public Class Form1

Dim l1 As Boolean = False Dim l2 As Boolean = False Dim l3 As Boolean = False Dim l4 As Boolean = False Dim port As Short = "&H378"

Public conn As New SqlConnection("Data

Source=.\SQLEXPRESS;Initial Catalog=dbSaklar;Integrated Security=True")

Private Sub Query(ByVal lampu1 As String, ByVal lampu2 As String, ByVal lampu3 As String, ByVal lampu4 As String) Dim cmd As New SqlCommand()

Dim da As New SqlDataAdapter(cmd) Dim dReader As SqlDataReader cmd.Connection = conn

conn.Open()

cmd.CommandText = "UPDATE TbStatLamp SET Lampu1 = '" + lampu1 + "', Lampu2 = '" + lampu2 + "', Lampu3 = '" + lampu3 + "', Lampu4 = '" + lampu4 + "'"

(28)

Dim rows As Integer

rows = cmd.ExecuteNonQuery() conn.Close()

End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

out(port, 0) l1 = False l2 = False l3 = False l4 = False End Sub

Private Sub onLamp1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLamp1.Click

'1 1 1 1

'8 4 2 1

If l4 = False And l3 = False And l2 = False And l1 = False Then

'0 0 0 0 --> 0

'-->

'0 0 0 1 --> 1

out(port, 1)

Query("off", "off", "off", "on")

ElseIf l4 = False And l3 = False And l2 = False And l1 = True Then

'0 0 0 1 --> 1

'-->

'0 0 0 1 --> 1

out(port, 1)

Query("off", "off", "off", "on")

ElseIf l4 = False And l3 = False And l2 = True And l1 = False Then

'0 0 1 0 --> 2

'-->

'0 0 1 1 --> 3

out(port, 3)

Query("off", "off", "on", "on")

ElseIf l4 = False And l3 = False And l2 = True And l1 = True Then

'0 0 1 1 --> 3

'-->

'0 0 1 1 --> 3

out(port, 3)

Query("off", "off", "on", "on")

ElseIf l4 = False And l3 = True And l2 = False And l1 = False Then

'0 1 0 0 --> 4

'-->

'0 1 0 1 --> 5

(29)

Query("off", "on", "off", "on")

ElseIf l4 = False And l3 = True And l2 = False And l1 = True Then

'0 1 0 1 --> 5

'-->

'0 1 0 1 --> 5

out(port, 5)

Query("off", "on", "off", "on")

ElseIf l4 = False And l3 = True And l2 = True And l1 = False Then

'0 1 1 0 --> 6

'-->

'0 1 1 1 --> 7

out(port, 7)

Query("off", "on", "on", "on")

ElseIf l4 = False And l3 = True And l2 = True And l1 = True Then

'0 1 1 1 --> 7

'-->

'0 1 1 1 --> 7

out(port, 7)

Query("off", "on", "on", "on")

ElseIf l4 = True And l3 = False And l2 = False And l1 = False Then

'1 0 0 0 --> 8

'-->

'1 0 0 1 --> 9

out(port, 9)

Query("on", "off", "off", "on")

ElseIf l4 = True And l3 = False And l2 = False And l1 = True Then

'1 0 0 1 --> 9

'-->

'1 0 0 1 --> 9

out(port, 9)

Query("on", "off", "off", "on")

ElseIf l4 = True And l3 = False And l2 = True And l1 = False Then

'1 0 1 0 --> 10

'-->

'1 0 1 1 --> 11

out(port, 11)

Query("on", "off", "on", "on")

ElseIf l4 = True And l3 = False And l2 = True And l1 = True Then

'1 0 1 1 --> 11

'-->

'1 0 1 1 --> 11

out(port, 11)

Query("on", "off", "on", "on")

ElseIf l4 = True And l3 = True And l2 = False And l1 = False Then

'1 1 0 0 --> 12

'-->

(30)

out(port, 13)

Query("on", "on", "off", "on")

ElseIf l4 = True And l3 = True And l2 = False And l1 = True Then

'1 1 0 1 --> 13

'-->

'1 1 0 1 --> 13

out(port, 13)

Query("on", "on", "off", "on")

ElseIf l4 = True And l3 = True And l2 = True And l1 = False Then

'1 1 1 0 --> 14

'-->

'1 1 1 1 --> 15

out(port, 15)

Query("on", "on", "on", "on")

ElseIf l4 = True And l3 = True And l2 = True And l1 = True Then

'1 1 1 1 --> 15

'-->

'1 1 1 1 --> 15

out(port, 15)

Query("on", "on", "on", "on") End If

l1 = True End Sub

Private Sub onLamp2(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLamp2.Click

If l4 = False And l3 = False And l2 = False And l1 = False Then

'0 0 0 0 --> 0

'-->

'0 0 1 0 --> 2

out(port, 2)

ElseIf l4 = False And l3 = False And l2 = False And l1 = True Then

'0 0 0 1 --> 1

'-->

'0 0 1 1 --> 3

out(port, 3)

ElseIf l4 = False And l3 = False And l2 = True And l1 = False Then

'0 0 1 0 --> 2

'-->

'0 0 1 0 --> 2

out(port, 2)

ElseIf l4 = False And l3 = False And l2 = True And l1 = True Then

'0 0 1 1 --> 3

'-->

'0 0 1 1 --> 3

out(port, 3)

(31)

'0 1 0 0 --> 4

'-->

'0 1 1 0 --> 6

out(port, 6)

ElseIf l4 = False And l3 = True And l2 = False And l1 = True Then

'0 1 0 1 --> 5

'-->

'0 1 1 1 --> 7

out(port, 7)

ElseIf l4 = False And l3 = True And l2 = True And l1 = False Then

'0 1 1 0 --> 6

'-->

'0 1 1 0 --> 6

out(port, 6)

ElseIf l4 = False And l3 = True And l2 = True And l1 = True Then

'0 1 1 1 --> 7

'-->

'0 1 1 1 --> 7

out(port, 7)

ElseIf l4 = True And l3 = False And l2 = False And l1 = False Then

'1 0 0 0 --> 8

'-->

'1 0 1 0 --> 10

out(port, 10)

ElseIf l4 = True And l3 = False And l2 = False And l1 = True Then

'1 0 0 1 --> 9

'-->

'1 0 1 1 --> 11

out(port, 11)

ElseIf l4 = True And l3 = False And l2 = True And l1 = False Then

'1 0 1 0 --> 10

'-->

'1 0 1 0 --> 10

out(port, 10)

ElseIf l4 = True And l3 = False And l2 = True And l1 = True Then

'1 0 1 1 --> 11

'-->

'1 0 1 1 --> 11

out(port, 11)

ElseIf l4 = True And l3 = True And l2 = False And l1 = False Then

'1 1 0 0 --> 12

'-->

'1 1 1 0 --> 14

out(port, 14)

ElseIf l4 = True And l3 = True And l2 = False And l1 = True Then

(32)

'-->

'1 1 1 1 --> 15

out(port, 15)

ElseIf l4 = True And l3 = True And l2 = True And l1 = False Then

'1 1 1 0 --> 14

'-->

'1 1 1 0 --> 14

out(port, 14)

ElseIf l4 = True And l3 = True And l2 = True And l1 = True Then

'1 1 1 1 --> 15

'-->

'1 1 1 1 --> 15

out(port, 15) End If

l2 = True End Sub

Private Sub onLamp3(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLamp3.Click

If l4 = False And l3 = False And l2 = False And l1 = False Then

'0 0 0 0 --> 0

'-->

'0 1 0 0 --> 4

out(port, 4)

ElseIf l4 = False And l3 = False And l2 = False And l1 = True Then

'0 0 0 1 --> 1

'-->

'0 1 0 1 --> 5

out(port, 5)

ElseIf l4 = False And l3 = False And l2 = True And l1 = False Then

'0 0 1 0 --> 2

'-->

'0 1 1 0 --> 6

out(port, 6)

ElseIf l4 = False And l3 = False And l2 = True And l1 = True Then

'0 0 1 1 --> 3

'-->

'0 1 1 1 --> 7

out(port, 7)

ElseIf l4 = False And l3 = True And l2 = False And l1 = False Then

'0 1 0 0 --> 4

'-->

'0 1 0 0 --> 4

out(port, 4)

ElseIf l4 = False And l3 = True And l2 = False And l1 = True Then

'0 1 0 1 --> 5

(33)

'0 1 0 1 --> 5

out(port, 5)

ElseIf l4 = False And l3 = True And l2 = True And l1 = False Then

'0 1 1 0 --> 6

'-->

'0 1 1 0 --> 6

out(port, 6)

ElseIf l4 = False And l3 = True And l2 = True And l1 = True Then

'0 1 1 1 --> 7

'-->

'0 1 1 1 --> 7

out(port, 7)

ElseIf l4 = True And l3 = False And l2 = False And l1 = False Then

'1 0 0 0 --> 8

'-->

'1 1 0 0 --> 12

out(port, 12)

ElseIf l4 = True And l3 = False And l2 = False And l1 = True Then

'1 0 0 1 --> 9

'-->

'1 1 0 1 --> 13

out(port, 13)

ElseIf l4 = True And l3 = False And l2 = True And l1 = False Then

'1 0 1 0 --> 10

'-->

'1 1 1 0 --> 14

out(port, 14)

ElseIf l4 = True And l3 = False And l2 = True And l1 = True Then

'1 0 1 1 --> 11

'-->

'1 1 1 1 --> 15

out(port, 15)

ElseIf l4 = True And l3 = True And l2 = False And l1 = False Then

'1 1 0 0 --> 12

'-->

'1 1 0 0 --> 12

out(port, 12)

ElseIf l4 = True And l3 = True And l2 = False And l1 = True Then

'1 1 0 1 --> 13

'-->

'1 1 0 1 --> 13

out(port, 13)

ElseIf l4 = True And l3 = True And l2 = True And l1 = False Then

'1 1 1 0 --> 14

'-->

(34)

out(port, 14)

ElseIf l4 = True And l3 = True And l2 = True And l1 = True Then

'1 1 1 1 --> 15

'-->

'1 1 1 1 --> 15

out(port, 15) End If

l3 = True End Sub

Private Sub onLamp4(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLamp4.Click

If l4 = False And l3 = False And l2 = False And l1 = False Then

'0 0 0 0 --> 0

'-->

'1 0 0 0 --> 8

out(port, 8)

ElseIf l4 = False And l3 = False And l2 = False And l1 = True Then

'0 0 0 1 --> 1

'-->

'1 0 0 1 --> 9

out(port, 9)

ElseIf l4 = False And l3 = False And l2 = True And l1 = False Then

'0 0 1 0 --> 2

'-->

'1 0 1 0 --> 10

out(port, 10)

ElseIf l4 = False And l3 = False And l2 = True And l1 = True Then

'0 0 1 1 --> 3

'-->

'1 0 1 1 --> 11

out(port, 11)

ElseIf l4 = False And l3 = True And l2 = False And l1 = False Then

'0 1 0 0 --> 4

'-->

'1 1 0 0 --> 12

out(port, 12)

ElseIf l4 = False And l3 = True And l2 = False And l1 = True Then

'0 1 0 1 --> 5

'-->

'1 1 0 1 --> 13

out(port, 13)

ElseIf l4 = False And l3 = True And l2 = True And l1 = False Then

'0 1 1 0 --> 6

'-->

'1 1 1 0 --> 14

(35)

ElseIf l4 = False And l3 = True And l2 = True And l1 = True Then

'0 1 1 1 --> 7

'-->

'1 1 1 1 --> 15

out(port, 15)

ElseIf l4 = True And l3 = False And l2 = False And l1 = False Then

'1 0 0 0 --> 8

'-->

'1 0 0 0 --> 8

out(port, 8)

ElseIf l4 = True And l3 = False And l2 = False And l1 = True Then

'1 0 0 1 --> 9

'-->

'1 0 0 1 --> 9

out(port, 9)

ElseIf l4 = True And l3 = False And l2 = True And l1 = False Then

'1 0 1 0 --> 10

'-->

'1 0 1 0 --> 10

out(port, 10)

ElseIf l4 = True And l3 = False And l2 = True And l1 = True Then

'1 0 1 1 --> 11

'-->

'1 0 1 1 --> 11

out(port, 11)

ElseIf l4 = True And l3 = True And l2 = False And l1 = False Then

'1 1 0 0 --> 12

'-->

'1 1 0 0 --> 12

out(port, 12)

ElseIf l4 = True And l3 = True And l2 = False And l1 = True Then

'1 1 0 1 --> 13

'-->

'1 1 0 1 --> 13

out(port, 13)

ElseIf l4 = True And l3 = True And l2 = True And l1 = False Then

'1 1 1 0 --> 14

'-->

'1 1 1 0 --> 14

out(port, 14)

ElseIf l4 = True And l3 = True And l2 = True And l1 = True Then

'1 1 1 1 --> 15

'-->

'1 1 1 1 --> 15

(36)

l4 = True End Sub

Private Sub onAll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

out(port, 15) l1 = True l2 = True l3 = True l4 = True End Sub

Private Sub offLamp1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOff1.Click

If l4 = False And l3 = False And l2 = False And l1 = False Then

'0 0 0 0 --> 0

'-->

'0 0 0 0 --> 0

out(port, 0)

ElseIf l4 = False And l3 = False And l2 = False And l1 = True Then

'0 0 0 1 --> 1

'-->

'0 0 0 0 --> 0

out(port, 0)

ElseIf l4 = False And l3 = False And l2 = True And l1 = False Then

'0 0 1 0 --> 2

'-->

'0 0 1 0 --> 2

out(port, 2)

ElseIf l4 = False And l3 = False And l2 = True And l1 = True Then

'0 0 1 1 --> 3

'-->

'0 0 1 0 --> 2

out(port, 2)

ElseIf l4 = False And l3 = True And l2 = False And l1 = False Then

'0 1 0 0 --> 4

'-->

'0 1 0 0 --> 4

out(port, 4)

ElseIf l4 = False And l3 = True And l2 = False And l1 = True Then

'0 1 0 1 --> 5

'-->

'0 1 0 0 --> 4

out(port, 4)

ElseIf l4 = False And l3 = True And l2 = True And l1 = False Then

'0 1 1 0 --> 6

(37)

'0 1 1 0 --> 6

out(port, 6)

ElseIf l4 = False And l3 = True And l2 = True And l1 = True Then

'0 1 1 1 --> 7

'-->

'0 1 1 0 --> 6

out(port, 6)

ElseIf l4 = True And l3 = False And l2 = False And l1 = False Then

'1 0 0 0 --> 8

'-->

'1 0 0 0 --> 8

out(port, 8)

ElseIf l4 = True And l3 = False And l2 = False And l1 = True Then

'1 0 0 1 --> 9

'-->

'1 0 0 0 --> 8

out(port, 8)

ElseIf l4 = True And l3 = False And l2 = True And l1 = False Then

'1 0 1 0 --> 10

'-->

'1 0 1 0 --> 10

out(port, 10)

ElseIf l4 = True And l3 = False And l2 = True And l1 = True Then

'1 0 1 1 --> 11

'-->

'1 0 1 0 --> 10

out(port, 10)

ElseIf l4 = True And l3 = True And l2 = False And l1 = False Then

'1 1 0 0 --> 12

'-->

'1 1 0 0 --> 12

out(port, 12)

ElseIf l4 = True And l3 = True And l2 = False And l1 = True Then

'1 1 0 1 --> 13

'-->

'1 1 0 0 --> 12

out(port, 12)

ElseIf l4 = True And l3 = True And l2 = True And l1 = False Then

'1 1 1 0 --> 14

'-->

'1 1 1 0 --> 14

out(port, 14)

ElseIf l4 = True And l3 = True And l2 = True And l1 = True Then

'1 1 1 1 --> 15

'-->

(38)

out(port, 14) End If

l1 = False End Sub

Private Sub offLamp2(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOff2.Click

If l4 = False And l3 = False And l2 = False And l1 = False Then

'0 0 0 0 --> 0

'-->

'0 0 0 0 --> 0

out(port, 0)

ElseIf l4 = False And l3 = False And l2 = False And l1 = True Then

'0 0 0 1 --> 1

'-->

'0 0 0 1 --> 1

out(port, 1)

ElseIf l4 = False And l3 = False And l2 = True And l1 = False Then

'0 0 1 0 --> 2

'-->

'0 0 0 0 --> 0

out(port, 0)

ElseIf l4 = False And l3 = False And l2 = True And l1 = True Then

'0 0 1 1 --> 3

'-->

'0 0 0 1 --> 1

out(port, 1)

ElseIf l4 = False And l3 = True And l2 = False And l1 = False Then

'0 1 0 0 --> 4

'-->

'0 1 0 0 --> 4

out(port, 4)

ElseIf l4 = False And l3 = True And l2 = False And l1 = True Then

'0 1 0 1 --> 5

'-->

'0 1 0 1 --> 5

out(port, 5)

ElseIf l4 = False And l3 = True And l2 = True And l1 = False Then

'0 1 1 0 --> 6

'-->

'0 1 0 0 --> 4

out(port, 4)

ElseIf l4 = False And l3 = True And l2 = True And l1 = True Then

'0 1 1 1 --> 7

'-->

'0 1 0 1 --> 5

(39)

ElseIf l4 = True And l3 = False And l2 = False And l1 = False Then

'1 0 0 0 --> 8

'-->

'1 0 0 0 --> 8

out(port, 8)

ElseIf l4 = True And l3 = False And l2 = False And l1 = True Then

'1 0 0 1 --> 9

'-->

'1 0 0 1 --> 9

out(port, 9)

ElseIf l4 = True And l3 = False And l2 = True And l1 = False Then

'1 0 1 0 --> 10

'-->

'1 0 0 0 --> 8

out(port, 8)

ElseIf l4 = True And l3 = False And l2 = True And l1 = True Then

'1 0 1 1 --> 11

'-->

'1 0 0 1 --> 9

out(port, 9)

ElseIf l4 = True And l3 = True And l2 = False And l1 = False Then

'1 1 0 0 --> 12

'-->

'1 1 0 0 --> 12

out(port, 12)

ElseIf l4 = True And l3 = True And l2 = False And l1 = True Then

'1 1 0 1 --> 13

'-->

'1 1 0 1 --> 13

out(port, 13)

ElseIf l4 = True And l3 = True And l2 = True And l1 = False Then

'1 1 1 0 --> 14

'-->

'1 1 0 0 --> 12

out(port, 12)

ElseIf l4 = True And l3 = True And l2 = True And l1 = True Then

'1 1 1 1 --> 15

'-->

'1 1 0 1 --> 13

out(port, 13) End If

(40)

Private Sub offLamp3(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOff3.Click

If l4 = False And l3 = False And l2 = False And l1 = False Then

'0 0 0 0 --> 0

'-->

'0 0 0 0 --> 0

out(port, 0)

ElseIf l4 = False And l3 = False And l2 = False And l1 = True Then

'0 0 0 1 --> 1

'-->

'0 0 0 1 --> 1

out(port, 1)

ElseIf l4 = False And l3 = False And l2 = True And l1 = False Then

'0 0 1 0 --> 2

'-->

'0 0 1 0 --> 2

out(port, 2)

ElseIf l4 = False And l3 = False And l2 = True And l1 = True Then

'0 0 1 1 --> 3

'-->

'0 0 1 1 --> 3

out(port, 3)

ElseIf l4 = False And l3 = True And l2 = False And l1 = False Then

'0 1 0 0 --> 4

'-->

'0 0 0 0 --> 0

out(port, 0)

ElseIf l4 = False And l3 = True And l2 = False And l1 = True Then

'0 1 0 1 --> 5

'-->

'0 0 0 1 --> 1

out(port, 1)

ElseIf l4 = False And l3 = True And l2 = True And l1 = False Then

'0 1 1 0 --> 6

'-->

'0 0 1 0 --> 2

out(port, 2)

ElseIf l4 = False And l3 = True And l2 = True And l1 = True Then

'0 1 1 1 --> 7

'-->

'0 0 1 1 --> 3

out(port, 3)

ElseIf l4 = True And l3 = False And l2 = False And l1 = False Then

'1 0 0 0 --> 8

'-->

(41)

out(port, 8)

ElseIf l4 = True And l3 = False And l2 = False And l1 = True Then

'1 0 0 1 --> 9

'-->

'1 0 0 1 --> 9

out(port, 9)

ElseIf l4 = True And l3 = False And l2 = True And l1 = False Then

'1 0 1 0 --> 10

'-->

'1 0 1 0 --> 10

out(port, 10)

ElseIf l4 = True And l3 = False And l2 = True And l1 = True Then

'1 0 1 1 --> 11

'-->

'1 0 1 1 --> 11

out(port, 11)

ElseIf l4 = True And l3 = True And l2 = False And l1 = False Then

'1 1 0 0 --> 12

'-->

'1 0 0 0 --> 8

out(port, 8)

ElseIf l4 = True And l3 = True And l2 = False And l1 = True Then

'1 1 0 1 --> 13

'-->

'1 0 0 1 --> 9

out(port, 9)

ElseIf l4 = True And l3 = True And l2 = True And l1 = False Then

'1 1 1 0 --> 14

'-->

'1 0 1 0 --> 10

out(port, 10)

ElseIf l4 = True And l3 = True And l2 = True And l1 = True Then

'1 1 1 1 --> 15

'-->

'1 0 1 1 --> 11

out(port, 11) End If

l3 = False End Sub

Private Sub offLamp4(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOff4.Click

If l4 = False And l3 = False And l2 = False And l1 = False Then

'0 0 0 0 --> 0

'-->

'0 0 0 0 --> 0

(42)

ElseIf l4 = False And l3 = False And l2 = False And l1 = True Then

'0 0 0 1 --> 1

'-->

'0 0 0 1 --> 1

out(port, 1)

ElseIf l4 = False And l3 = False And l2 = True And l1 = False Then

'0 0 1 0 --> 2

'-->

'0 0 1 0 --> 2

out(port, 2)

ElseIf l4 = False And l3 = False And l2 = True And l1 = True Then

'0 0 1 1 --> 3

'-->

'0 0 1 1 --> 3

out(port, 3)

ElseIf l4 = False And l3 = True And l2 = False And l1 = False Then

'0 1 0 0 --> 4

'-->

'0 1 0 0 --> 4

out(port, 4)

ElseIf l4 = False And l3 = True And l2 = False And l1 = True Then

'0 1 0 1 --> 5

'-->

'0 1 0 1 --> 5

out(port, 5)

ElseIf l4 = False And l3 = True And l2 = True And l1 = False Then

'0 1 1 0 --> 6

'-->

'0 1 1 0 --> 6

out(port, 6)

ElseIf l4 = False And l3 = True And l2 = True And l1 = True Then

'0 1 1 1 --> 7

'-->

'0 1 1 1 --> 7

out(port, 7)

ElseIf l4 = True And l3 = False And l2 = False And l1 = False Then

'1 0 0 0 --> 8

'-->

'0 0 0 0 --> 0

out(port, 0)

ElseIf l4 = True And l3 = False And l2 = False And l1 = True Then

'1 0 0 1 --> 9

'-->

'0 0 0 1 --> 1

(43)

ElseIf l4 = True And l3 = False And l2 = True And l1 = False Then

'1 0 1 0 --> 10

'-->

'0 0 1 0 --> 2

out(port, 2)

ElseIf l4 = True And l3 = False And l2 = True And l1 = True Then

'1 0 1 1 --> 11

'-->

'0 0 1 1 --> 3

out(port, 3)

ElseIf l4 = True And l3 = True And l2 = False And l1 = False Then

'1 1 0 0 --> 12

'-->

'0 1 0 0 --> 4

out(port, 4)

ElseIf l4 = True And l3 = True And l2 = False And l1 = True Then

'1 1 0 1 --> 13

'-->

'0 1 0 1 --> 5

out(port, 5)

ElseIf l4 = True And l3 = True And l2 = True And l1 = False Then

'1 1 1 0 --> 14

'-->

'0 1 1 0 --> 6

out(port, 6)

ElseIf l4 = True And l3 = True And l2 = True And l1 = True Then

'1 1 1 1 --> 15

'-->

'0 1 1 1 -->7

out(port, 7) End If

l4 = False End Sub

Private Sub generateOn(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnON.Click

'MessageBox.Show(l1.ToString() + " " + l2.ToString() + " " + l3.ToString() + " " + l4.ToString())

Dim lamp1 As String = txtLamp1.Text Dim lamp2 As String = txtLamp2.Text Dim statusSplit(3) As String

Dim statusLamp(3) As Integer Dim portNew As Integer

portNew = 0

(44)

statusSplit(2) = l3.ToString() statusSplit(3) = l4.ToString() If lamp1 = "1" And lamp2 = "1" Then statusSplit(0) = "True"

statusSplit(0) = "True" l1 = True

l1 = True

ElseIf lamp1 = "1" And lamp2 = "2" Then statusSplit(0) = "True"

statusSplit(1) = "True" l1 = True

l2 = True

ElseIf lamp1 = "1" And lamp2 = "3" Then statusSplit(0) = "True"

statusSplit(2) = "True" l1 = True

l3 = True

ElseIf lamp1 = "1" And lamp2 = "4" Then statusSplit(0) = "True"

statusSplit(3) = "True" l1 = True

l4 = True End If

If lamp1 = "2" And lamp2 = "1" Then statusSplit(1) = "True"

statusSplit(0) = "True" l2 = True

l1 = True

ElseIf lamp1 = "2" And lamp2 = "2" Then statusSplit(1) = "True"

statusSplit(1) = "True" l2 = True

l2 = True

ElseIf lamp1 = "2" And lamp2 = "3" Then statusSplit(1) = "True"

statusSplit(2) = "True" l2 = True

l3 = True

(45)

statusSplit(3) = "True" l2 = True

l4 = True End If

If lamp1 = "3" And lamp2 = "1" Then statusSplit(2) = "True"

statusSplit(0) = "True" l3 = True

l1 = True

ElseIf lamp1 = "3" And lamp2 = "2" Then statusSplit(2) = "True"

statusSplit(1) = "True" l3 = True

l2 = True

ElseIf lamp1 = "3" And lamp2 = "3" Then statusSplit(2) = "True"

statusSplit(2) = "True" l3 = True

l3 = True

ElseIf lamp1 = "3" And lamp2 = "4" Then statusSplit(2) = "True"

statusSplit(3) = "True" l3 = True

l4 = True End If

If lamp1 = "4" And lamp2 = "1" Then statusSplit(3) = "True"

statusSplit(0) = "True" l4 = True

l1 = True

ElseIf lamp1 = "4" And lamp2 = "2" Then statusSplit(3) = "True"

statusSplit(1) = "True" l4 = True

l2 = True

ElseIf lamp1 = "4" And lamp2 = "3" Then statusSplit(3) = "True"

statusSplit(2) = "True" l4 = True

l3 = True

(46)

statusSplit(3) = "True" statusSplit(3) = "True" l4 = True

l4 = True End If

'/////////////////////////////

If statusSplit(0) = "True" Then statusLamp(0) = 1

ElseIf statusSplit(0) = "False" Then statusLamp(0) = 0

End If

If statusSplit(1) = "True" Then statusLamp(1) = 2

ElseIf statusSplit(1) = "False" Then statusLamp(1) = 0

End If

If statusSplit(2) = "True" Then statusLamp(2) = 4

ElseIf statusSplit(2) = "False" Then statusLamp(2) = 0

End If

If statusSplit(3) = "True" Then statusLamp(3) = 8

ElseIf statusSplit(3) = "False" Then statusLamp(3) = 0

End If

portNew = statusLamp(0) + statusLamp(1) + statusLamp(2) + statusLamp(3)

out(port, CShort(portNew))

'MessageBox.Show(portNew.ToString())

End Sub

Private Sub onLoadLamp(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

out(port, 0) End Sub

Private Sub onThreeLamp(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOn3.Click

(47)

Dim statusLamp(3) As Integer Dim portNew As Integer = 0 statusSplit(0) = l1.ToString() statusSplit(1) = l2.ToString() statusSplit(2) = l3.ToString() statusSplit(3) = l4.ToString()

If lamp1 = "0" And lamp2 = "0" And lamp3 = "0" And lamp4 = "0" Then

statusSplit(0) = "False" statusSplit(1) = "False" statusSplit(2) = "False" statusSplit(3) = "False" l1 = False

l2 = False l3 = False l4 = False

Query("off", "off", "off", "off")

ElseIf lamp1 = "0" And lamp2 = "0" And lamp3 = "0" And lamp4 = "1" Then

statusSplit(0) = "False" statusSplit(1) = "False" statusSplit(2) = "False" statusSplit(3) = "True" l1 = False

l2 = False l3 = False l4 = True

Query("off", "off", "off", "on")

ElseIf lamp1 = "0" And lamp2 = "0" And lamp3 = "1" And lamp4 = "0" Then

statusSplit(0) = "False" statusSplit(1) = "False" statusSplit(2) = "True" statusSplit(3) = "False" l1 = False

l2 = False l3 = True l4 = False

Query("off", "off", "on", "off")

ElseIf lamp1 = "0" And lamp2 = "0" And lamp3 = "1" And lamp4 = "1" Then

statusSplit(0) = "False" statusSplit(1) = "False" statusSplit(2) = "True" statusSplit(3) = "True" l1 = False

(48)

l4 = True

Query("off", "off", "on", "on")

ElseIf lamp1 = "0" And lamp2 = "1" And lamp3 = "0" And lamp4 = "0" Then

statusSplit(0) = "False" statusSplit(1) = "True" statusSplit(2) = "False" statusSplit(3) = "False" l1 = False

l2 = True l3 = False l4 = False

Query("off", "on", "off", "off")

ElseIf lamp1 = "0" And lamp2 = "1" And lamp3 = "0" And lamp4 = "1" Then

statusSplit(0) = "False" statusSplit(1) = "True" statusSplit(2) = "False" statusSplit(3) = "True" l1 = False

l2 = True l3 = False l4 = True

Query("off", "on", "off", "on")

ElseIf lamp1 = "0" And lamp2 = "1" And lamp3 = "1" And lamp4 = "0" Then

statusSplit(0) = "False" statusSplit(1) = "True" statusSplit(2) = "True" statusSplit(3) = "False" l1 = False

l2 = True l3 = True l4 = False

Query("off", "on", "on", "off")

ElseIf lamp1 = "0" And lamp2 = "1" And lamp3 = "1" And lamp4 = "1" Then

statusSplit(0) = "False" statusSplit(1) = "True" statusSplit(2) = "True" statusSplit(3) = "True" l1 = False

l2 = True l3 = True l4 = True

Query("off", "on", "on", "on")

ElseIf lamp1 = "1" And lamp2 = "0" And lamp3 = "0" And lamp4 = "0" Then

(49)

l1 = True l2 = False l3 = False l4 = False

Query("on", "off", "off", "off")

ElseIf lamp1 = "1" And lamp2 = "0" And lamp3 = "0" And lamp4 = "1" Then

statusSplit(0) = "True" statusSplit(1) = "False" statusSplit(2) = "False" statusSplit(3) = "True" l1 = True

l2 = False l3 = False l4 = True

Query("on", "off", "off", "on")

ElseIf lamp1 = "1" And lamp2 = "0" And lamp3 = "1" And lamp4 = "0" Then

statusSplit(0) = "True" statusSplit(1) = "False" statusSplit(2) = "True" statusSplit(3) = "False" l1 = True

l2 = False l3 = True l4 = False

Query("on", "off", "on", "off")

ElseIf lamp1 = "1" And lamp2 = "0" And lamp3 = "1" And lamp4 = "1" Then

statusSplit(0) = "True" statusSplit(1) = "False" statusSplit(2) = "True" statusSplit(3) = "True" l1 = True

l2 = False l3 = True l4 = True

Query("on", "off", "on", "on")

ElseIf lamp1 = "1" And lamp2 = "1" And lamp3 = "0" And lamp4 = "0" Then

statusSplit(0) = "True" statusSplit(1) = "True" statusSplit(2) = "False" statusSplit(3) = "False" l1 = True

l2 = True l3 = False l4 = False

Query("on", "on", "off", "off")

(50)

statusSplit(0) = "True" statusSplit(1) = "True" statusSplit(2) = "False" statusSplit(3) = "True" l1 = True

l2 = True l3 = False l4 = True

Query("on", "on", "off", "on")

ElseIf lamp1 = "1" And lamp2 = "1" And lamp3 = "1" And lamp4 = "0" Then

statusSplit(0) = "True" statusSplit(1) = "True" statusSplit(2) = "True" statusSplit(3) = "False" l1 = True

l2 = True l3 = True l4 = False

Query("on", "on", "on", "off")

ElseIf lamp1 = "1" And lamp2 = "1" And lamp3 = "1" And lamp4 = "1" Then

statusSplit(0) = "True" statusSplit(1) = "True" statusSplit(2) = "True" statusSplit(3) = "True" l1 = True

l2 = True l3 = True l4 = True

Query("on", "on", "on", "on") End If

'/////////////

If statusSplit(0) = "True" Then statusLamp(0) = 1

ElseIf statusSplit(0) = "False" Then statusLamp(0) = 0

End If

If statusSplit(1) = "True" Then statusLamp(1) = 2

ElseIf statusSplit(1) = "False" Then statusLamp(1) = 0

End If

If statusSplit(2) = "True" Then statusLamp(2) = 4

ElseIf statusSplit(2) = "False" Then statusLamp(2) = 0

End If

(51)

statusLamp(3) = 8

ElseIf statusSplit(3) = "False" Then statusLamp(3) = 0

End If

portNew = statusLamp(0) + statusLamp(1) + statusLamp(2) + statusLamp(3)

out(port, CShort(portNew))

'GenLamp(txtOnn1.Text, txtOnn2.Text, txtOnn3.Text, txtOnn4.Text)

End Sub

Public Sub GenLamp(ByVal lp1 As String, ByVal lp2 As String, ByVal lp3 As String, ByVal lp4 As String)

Dim lamp1 As String = lp1 Dim lamp2 As String = lp2 Dim lamp3 As String = lp3 Dim lamp4 As String = lp4 Dim statusSplit(3) As String Dim statusLamp(3) As Integer Dim portNew As Integer = 0 statusSplit(0) = l1.ToString() statusSplit(1) = l2.ToString() statusSplit(2) = l3.ToString() statusSplit(

Gambar

Gambar C.1 Gambar Alat dan Rangkaian
Gambar C.3 Gambar Maket

Referensi

Dokumen terkait

Penelitian yang menggunakan lingkungan authoring telah dilakukan sebelumnya, salah satunya untuk melatihkan berpikir kreatif menurut (Liu, 1998) menyimpulkan bahwa

Ke depan, diharapkan adanya pendanaan dari swasta (dalam bentuk CSR) dan/atau pendanaan dari masyarakat. Oleh karena itu, keterlibatan swasta dan masyarakat dalam kegiatan

Hasil penelitian ini diharapkan dapat menjadi bahan pertimbangan bagi para pengambil keputusan di bank, terutama dalam meningkatkan kepuasan dan loyalitas pelanggan /

3 Dr. Hiroko Horikoshi, Kyai dan Perubahan Sosial , Jakarta 1987, hlm.. 4 berbagai aspek yaitu pertama, masyarakat yang ingin memperdalam ilmu agama atau ada

adanya atau tidak adanya satu atau lebih stressor yang jelas dan; suatu onset pasca persalinan. Walaupun adanyagejala psikotik mungkin jelas, informasi mengenai

Pada tahap perencanaan ini, yang dilakukan peneliti yaitumerencanakan dan melakukan tindakan-tindakan awal, yaitu (1) melakukan perizinan kepada kepala sekolah yang

Inovasi karya seni dan menjelaskan kegiatan yang akan dilakukan peserta didik untuk menyelesaikan permasalahan atau tugas tentang pengertian secara umum

– Pelatihan dan kesadaran – Kebijakan perencanaan dan panduan – SDM pendukung KEBIJAKAN, PEREN CANAAN, DAN PANDUAN 14% SUMBERDAYA MANUSIA DAN PENDUKUNG 12% KOMUNIKASI, KOO