Mengontrol Relay melalui Rs-485 dgn vb6
Aplikasi ini digunakan untuk menyalakan dan mematikan sejumlah Ac (air condition) diruang produksi dengan cara mengganti switch dengan relay yang dikontrol dari PC. aplikasi ini juga bisa digunakan untuk keperluan lain.
Tampilan Menu Aplikasi:
Code program dalam Visual basic 6:
Option Explicit
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Declare Function GetTickCount Lib "kernel32" () As Long
Dim status As Boolean
Dim responseText As String
'========================================
Public Intmax As Integer
Private lMinHeight As Long
Private lMinWidth As Long
Private bResizeOff As Boolean
'Private colMessages As String
Private Declare Function SetForegroundWindow Lib "user32" _
      (ByVal hWnd As Long) As Long
Private Declare Function Shell_NotifyIcon Lib "shell32" _
      Alias "Shell_NotifyIconA" _
      (ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Boolean
'constants required by Shell_NotifyIcon API call:
Const NIM_ADD = &H0
Const NIM_MODIFY = &H1
Const NIM_DELETE = &H2
Const NIF_MESSAGE = &H1
Const NIF_ICON = &H2
Const NIF_TIP = &H4
Const WM_MOUSEMOVE = &H200
Const WM_RBUTTONDBLCLK = &H206
Const WM_RBUTTONDOWN = &H204
Const WM_RBUTTONUP = &H205
Const WM_LBUTTONDBLCLK = &H203
Const WM_LBUTTONDOWN = &H201
Const WM_LBUTTONUP = &H202
Const WM_MBUTTONDBLCLK = &H209
Const WM_MBUTTONDOWN = &H207
Const WM_MBUTTONUP = &H208
Private Type NOTIFYICONDATA
    cbSize As Long
    hWnd As Long
    uID As Long
    uFlags As Long
    uCallbackMessage As Long
    hIcon As Long
    szTip As String * 64
End Type
Dim tar As Integer
Private nid As NOTIFYICONDATA
'========================================
Private Sub AC2_Click()
MSComm1.Output = "cC"
End Sub
Private Sub AC1of_Click()
MSComm1.Output = "bC"
lbStatus.Caption = "AC 1 OFF"
End Sub
Private Sub AC1ON_Click()
MSComm1.Output = "bB"
lbStatus.Caption = "AC 1 ON"
End Sub
Private Sub AC2of_Click()
MSComm1.Output = "cC"
lbStatus.Caption = "AC 2 OFF"
End Sub
Private Sub AC2ON_Click()
MSComm1.Output = "cB"
lbStatus.Caption = "AC 2 ON"
End Sub
Private Sub ACOFF_Click()
btnFan_Click
Sleep (3000)
MSComm1.Output = "bC"
lbStatus.Caption = "AC 2 MATI"
status = False
End Sub
Private Sub btnFan_Click()
MSComm1.Output = "bA"
lbStatus.Caption = "FAN  AC 2 HIDUP"
End Sub
Private Sub btnOn_Click()
btnFan_Click
Sleep (3000)
MSComm1.Output = "bB"
lbStatus.Caption = "AC 2 HIDUP"
status = True
End Sub
Private Sub chk41_Click()
If chk41.Value = 0 Then
MSComm1.Output = "1C"
lbStatus.Caption = "AC FINAL COMP. MATI"
cmdac1on.BackColor = &H8000000F
cmdac1fan.BackColor = &H8000000F
End If
End Sub
Private Sub chk4E_Click()
If chk4E.Value = 0 Then
MSComm1.Output = "EC"
lbStatus.Caption = "AC 4E Mati"
cmd4eon.BackColor = &H8000000F
cmd4Efan.BackColor = &H8000000F
End If
End Sub
Private Sub chk4F_Click()
If chk4F.Value = 0 Then
MSComm1.Output = "FC"
lbStatus.Caption = "AC 4F Mati"
cmd4fon.BackColor = &H8000000F
cmd4ffan.BackColor = &H8000000F
End If
End Sub
Private Sub chk4G_Click()
If chk4G.Value = 0 Then
MSComm1.Output = "GC"
lbStatus.Caption = "AC G Mati"
cmd4gon.BackColor = &H8000000F
cmd4gfan.BackColor = &H8000000F
End If
End Sub
Private Sub chk4H_Click()
If chk4H.Value = 0 Then
MSComm1.Output = "HC"
lbStatus.Caption = "AC DE STORAGE MATI"
cmd4hon.BackColor = &H8000000F
cmd4hfan.BackColor = &H8000000F
Else
lbStatus.Caption = "AC DE STORAGE AUTO"
End If
End Sub
Private Sub chk4I_Click()
If chk4I.Value = 0 Then
MSComm1.Output = "IC"
lbStatus.Caption = "AC 4I Mati"
cmd4ion.BackColor = &H8000000F
 cmd4ifan.BackColor = &H8000000F
End If
End Sub
Private Sub chk4J_Click()
If chk4J.Value = 0 Then
MsgBox "ac akan dimatikan"
MSComm1.Output = "JC"
lbStatus.Caption = "AC 4J Mati"
cmdac5on.BackColor = &H8000000F
cmdac5fan.BackColor = &H8000000F
End If
End Sub
Private Sub chk4K_Click()
If chk4K.Value = 0 Then
MSComm1.Output = "KC"
lbStatus.Caption = "AC 4K Mati"
cmdac4on.BackColor = &H8000000F
cmdac4fan.BackColor = &H8000000F
End If
End Sub
Private Sub chk4L_Click()
If chk4L.Value = 0 Then
 MSComm1.Output = "LC"
 lbStatus.Caption = "AC OFFICE MATI"
 cmdacLon.BackColor = &H8000000F
 cmdacLfan.BackColor = &H8000000F
 End If
End Sub
Private Sub chk4M_Click()
If chk4M.Value = 0 Then
MSComm1.Output = "MC"
lbStatus.Caption = "AC PCB MATERIAL MATI"
cmdacMon.BackColor = &H8000000F
cmdacMfan.BackColor = &H8000000F
End If
End Sub
Private Sub chk4N_Click()
If chk4N.Value = 0 Then
MSComm1.Output = "NC"
lbStatus.Caption = "AC PART CONTROL MATI"
cmdacNon.BackColor = &H8000000F
cmdacNfan.BackColor = &H8000000F
End If
End Sub
Private Sub chk4O_Click()
If chk4O.Value = 0 Then
MSComm1.Output = "OC"
lbStatus.Caption = "AC B/C PREP. MATI"
cmd4oon.BackColor = &H8000000F
cmd4ofan.BackColor = &H8000000F
End If
End Sub
Private Sub chk4P_Click()
If chk4P.Value = 0 Then
MSComm1.Output = "PC"
lbStatus.Caption = "AC B/C PREP. MATI"
cmd4pon.BackColor = &H8000000F
cmd4pfan.BackColor = &H8000000F
End If
End Sub
Private Sub chk4Q_Click()
If chk4Q.Value = 0 Then
MSComm1.Output = "QC"
lbStatus.Caption = "AC B/C PREP. MATI"
cmd4qon.BackColor = &H8000000F
cmd4qfan.BackColor = &H8000000F
End If
End Sub
Private Sub chk4R_Click()
If chk4R.Value = 0 Then
MSComm1.Output = "RC"
lbStatus.Caption = "AC 4R Mati"
cmd4ron.BackColor = &H8000000F
cmd4rfan.BackColor = &H8000000F
End If
End Sub
Private Sub chk4S_Click()
If chk4S.Value = 0 Then
MSComm1.Output = "SC"
lbStatus.Caption = "AC REST AREA COMP. MATI"
cmd4son.BackColor = &H8000000F
cmd4Sfan.BackColor = &H8000000F
End If
End Sub
Private Sub chk4T_Click()
If chk4T.Value = 0 Then
MSComm1.Output = "TC"
lbStatus.Caption = "AC REST AREA COMP. MATI"
cmd4Ton.BackColor = &H8000000F
cmd4TFan.BackColor = &H8000000F
End If
End Sub
Private Sub chk4U_Click()
If chk4U.Value = 0 Then
MSComm1.Output = "UC"
lbStatus.Caption = "AC LINE D COMP. MATI"
cmd4uon.BackColor = &H8000000F
cmd4UFan.BackColor = &H8000000F
End If
End Sub
Private Sub chk4V_Click()
If chk4V.Value = 0 Then
MSComm1.Output = "VC"
lbStatus.Caption = "AC LINE D COMP. MATI"
cmd4Von.BackColor = &H8000000F
cmd4VFan.BackColor = &H8000000F
End If
End Sub
Private Sub closePort_Click()
   If MSComm1.PortOpen Then
      MSComm1.PortOpen = False
      closePort.Enabled = False
      openPort.Enabled = True
      enableChoice (True)
   End If
End Sub
Private Sub enableChoice(state As Boolean)
    portChoice.Enabled = state
    baudChoice.Enabled = state
    dataBitChoice.Enabled = state
    stopBitChoice.Enabled = state
    parityChoice.Enabled = state
    timeOutBox.Enabled = state
End Sub
Private Sub Command1_Click()
responseBox = CStr(commandString)
End Sub
Private Sub cmd4Efan_Click()
MSComm1.Output = "EA"
lbStatus.Caption = "FAN AC 4E HIDUP"
cmd4eon.BackColor = &H8000000F
cmd4Efan.BackColor = vbGreen
End Sub
Private Sub cmd4eoff_Click()
MSComm1.Output = "EC"
lbStatus.Caption = "AC 4E Mati"
cmd4eon.BackColor = &H8000000F
cmd4Efan.BackColor = &H8000000F
If Val(txtacqty.Text) > 0 Then
txtacqty = Val(txtacqty) - 1
End If
End Sub
Private Sub cmd4eon_Click()
If Val(txtacqty.Text) < 20 Then
txtacqty.Text = Val(txtacqty.Text) + 1
End If
MSComm1.Output = "EB"
lbStatus.Caption = "AC 4E HIDUP"
cmd4eon.BackColor = vbGreen
cmd4Efan.BackColor = &H8000000F
If chk4E.Value = 0 Then
 chk4E.Value = 1
End If
End Sub
Private Sub cmd4ffan_Click()
Sleep (1000)
'MSComm1.Output = "FA"
lbStatus.Caption = "FAN AC 4F HIDUP"
cmd4fon.BackColor = &H8000000F
cmd4ffan.BackColor = vbGreen
End Sub
Private Sub cmd4foff_Click()
If Val(txtacqty.Text) > 0 Then
txtacqty = Val(txtacqty) - 1
End If
MSComm1.Output = "FC"
lbStatus.Caption = "AC 4F Mati"
cmd4fon.BackColor = &H8000000F
cmd4ffan.BackColor = &H8000000F
End Sub
Private Sub cmd4fon_Click()
If Val(txtacqty.Text) < 20 Then
txtacqty.Text = Val(txtacqty.Text) + 1
End If
MSComm1.Output = "FB"
lbStatus.Caption = "AC 4F HIDUP"
cmd4fon.BackColor = vbGreen
cmd4ffan.BackColor = &H8000000F
If chk4F.Value = 0 Then
 chk4F.Value = 1
End If
End Sub
Private Sub cmd4gfan_Click()
Sleep (1000)
MSComm1.Output = "GA"
lbStatus.Caption = "FAN 4G HIDUP"
cmd4gon.BackColor = &H8000000F
cmd4gfan.BackColor = vbGreen
End Sub
Private Sub cmd4goff_Click()
If Val(txtacqty.Text) > 0 Then
txtacqty = Val(txtacqty) - 1
End If
MSComm1.Output = "GC"
lbStatus.Caption = "AC G Mati"
cmd4gon.BackColor = &H8000000F
cmd4gfan.BackColor = &H8000000F
End Sub
Private Sub cmd4gon_Click()
If Val(txtacqty.Text) < 20 Then
txtacqty.Text = Val(txtacqty.Text) + 1
End If
MSComm1.Output = "GB"   'cool
lbStatus.Caption = "AC 4G HIDUP"
cmd4gon.BackColor = vbGreen
cmd4gfan.BackColor = &H8000000F
If chk4G.Value = 0 Then
chk4G.Value = 1
End If
End Sub
Private Sub cmd4hfan_Click()
Sleep (1000)
MSComm1.Output = "HA"
lbStatus.Caption = "FAN AC DE STORAGE HIDUP"
cmd4hon.BackColor = &H8000000F
cmd4hfan.BackColor = vbGreen
End Sub
Private Sub cmd4hoff_Click()
If Val(txtacqty.Text) > 0 Then
txtacqty = Val(txtacqty) - 1
End If
MSComm1.Output = "HC"
lbStatus.Caption = "AC DE STORAGE MATI"
cmd4hon.BackColor = &H8000000F
cmd4hfan.BackColor = &H8000000F
End Sub
Private Sub cmd4hon_Click()
If Val(txtacqty.Text) < 20 Then
txtacqty.Text = Val(txtacqty.Text) + 1
End If
MSComm1.Output = "HB"
lbStatus.Caption = "AC DE STORAGE HIDUP"
cmd4hon.BackColor = vbGreen
cmd4hfan.BackColor = &H8000000F
If chk4H.Value = 0 Then
 chk4H.Value = 1
End If
End Sub
Private Sub cmd4ifan_Click()
Sleep (1000)
MSComm1.Output = "IA"
lbStatus.Caption = "FAN AC OFFICE HIDUP"
 cmd4ion.BackColor = &H8000000F
 cmd4ifan.BackColor = vbGreen
End Sub
Private Sub cmd4ioff_Click()
MSComm1.RTSEnable = True
If Val(txtacqty.Text) > 0 Then
txtacqty = Val(txtacqty) - 1
End If
MSComm1.Output = "IC"
lbStatus.Caption = "AC 4I Mati"
cmd4ion.BackColor = &H8000000F
 cmd4ifan.BackColor = &H8000000F
 MSComm1.RTSEnable = False
End Sub
Private Sub cmd4ion_Click()
If Val(txtacqty.Text) < 20 Then
txtacqty.Text = Val(txtacqty.Text) + 1
End If
MSComm1.Output = "IB"
lbStatus.Caption = "AC 4I HIDUP"
cmd4ion.BackColor = vbGreen
 cmd4ifan.BackColor = &H8000000F
 If chk4I.Value = 0 Then
  chk4I.Value = 1
End If
End Sub
Private Sub cmd4ofan_Click()
MSComm1.Output = "OA"
lbStatus.Caption = "FAN AC 4E HIDUP"
cmd4oon.BackColor = &H8000000F
cmd4ofan.BackColor = vbGreen
End Sub
Private Sub cmd4ooff_Click()
If Val(txtacqty.Text) > 0 Then
txtacqty = Val(txtacqty) - 1
End If
MSComm1.Output = "OC"
lbStatus.Caption = "AC B/C PREP. MATI"
cmd4oon.BackColor = &H8000000F
cmd4ofan.BackColor = &H8000000F
End Sub
Private Sub cmd4oon_Click()
If Val(txtacqty.Text) < 20 Then
txtacqty.Text = Val(txtacqty.Text) + 1
End If
MSComm1.Output = "OB"
lbStatus.Caption = "AC B/C PREP. HIDUP"
cmd4oon.BackColor = vbGreen
cmd4ofan.BackColor = &H8000000F
If chk4O.Value = 0 Then
 chk4O.Value = 1
End If
End Sub
Private Sub cmd4pfan_Click()
MSComm1.Output = "PA"
lbStatus.Caption = "FAN B/C PREP. HIDUP"
cmd4pon.BackColor = &H8000000F
cmd4pfan.BackColor = vbGreen
End Sub
Private Sub cmd4poff_Click()
If Val(txtacqty.Text) > 0 Then
txtacqty = Val(txtacqty) - 1
End If
MSComm1.Output = "PC"
lbStatus.Caption = "AC B/C PREP. MATI"
cmd4pon.BackColor = &H8000000F
cmd4pfan.BackColor = &H8000000F
End Sub
Private Sub cmd4pon_Click()
If Val(txtacqty.Text) < 20 Then
txtacqty.Text = Val(txtacqty.Text) + 1
End If
MSComm1.Output = "PB"
lbStatus.Caption = "AC B/C PREP. HIDUP"
cmd4pon.BackColor = vbGreen
cmd4pfan.BackColor = &H8000000F
If chk4P.Value = 0 Then
 chk4P.Value = 1
End If
End Sub
Private Sub cmd4qfan_Click()
MSComm1.Output = "QA"
lbStatus.Caption = "FAN B/C PREP. HIDUP"
cmd4qon.BackColor = &H8000000F
cmd4qfan.BackColor = vbGreen
End Sub
Private Sub cmd4Qoff_Click()
If Val(txtacqty.Text) > 0 Then
txtacqty = Val(txtacqty) - 1
End If
MSComm1.Output = "QC"
lbStatus.Caption = "AC B/C PREP. MATI"
cmd4qon.BackColor = &H8000000F
cmd4qfan.BackColor = &H8000000F
End Sub
Private Sub cmd4qon_Click()
If Val(txtacqty.Text) < 20 Then
txtacqty.Text = Val(txtacqty.Text) + 1
End If
MSComm1.Output = "QB"
lbStatus.Caption = "AC B/C PREP. HIDUP"
cmd4qon.BackColor = vbGreen
cmd4qfan.BackColor = &H8000000F
If chk4Q.Value = 0 Then
 chk4Q.Value = 1
End If
End Sub
Private Sub cmd4rfan_Click()
MSComm1.Output = "RA"
lbStatus.Caption = "FAN AC 4R HIDUP"
cmd4rfan.BackColor = vbGreen
cmd4ron.BackColor = &H8000000F
End Sub
Private Sub cmd4roff_Click()
If Val(txtacqty.Text) > 0 Then
txtacqty = Val(txtacqty) - 1
End If
MSComm1.Output = "RC"
lbStatus.Caption = "AC 4R Mati"
cmd4ron.BackColor = &H8000000F
cmd4rfan.BackColor = &H8000000F
End Sub
Private Sub cmd4ron_Click()
If Val(txtacqty.Text) < 20 Then
txtacqty.Text = Val(txtacqty.Text) + 1
End If
MSComm1.Output = "RB"
lbStatus.Caption = "AC 4R HIDUP"
cmd4ron.BackColor = vbGreen
cmd4rfan.BackColor = &H8000000F
If chk4R.Value = 0 Then
 chk4R.Value = 1
End If
End Sub
Private Sub cmd4Sfan_Click()
MSComm1.Output = "SA"
lbStatus.Caption = "FAN REST AREA COMP. HIDUP"
cmd4son.BackColor = &H8000000F
cmd4Sfan.BackColor = vbGreen
End Sub
Private Sub cmd4Soff_Click()
If Val(txtacqty.Text) > 0 Then
txtacqty = Val(txtacqty) - 1
End If
MSComm1.Output = "SC"
lbStatus.Caption = "AC REST AREA COMP. MATI"
cmd4son.BackColor = &H8000000F
cmd4Sfan.BackColor = &H8000000F
End Sub
Private Sub cmd4son_Click()
If Val(txtacqty.Text) < 20 Then
txtacqty.Text = Val(txtacqty.Text) + 1
End If
MSComm1.Output = "SB"
lbStatus.Caption = "AC REST AREA COMP. HIDUP"
cmd4son.BackColor = vbGreen
cmd4Sfan.BackColor = &H8000000F
If chk4S.Value = 0 Then
 chk4S.Value = 1
End If
End Sub
Private Sub cmd4TFan_Click()
MSComm1.Output = "TA"
lbStatus.Caption = "FAN REST AREA COMP. HIDUP"
cmd4Ton.BackColor = &H8000000F
cmd4TFan.BackColor = vbGreen
End Sub
Private Sub cmd4Toff_Click()
If Val(txtacqty.Text) > 0 Then
txtacqty = Val(txtacqty) - 1
End If
MSComm1.Output = "TC"
lbStatus.Caption = "AC REST AREA COMP. MATI"
cmd4Ton.BackColor = &H8000000F
cmd4TFan.BackColor = &H8000000F
'&H8000000F
End Sub
Private Sub cmd4Ton_Click()
If Val(txtacqty.Text) < 20 Then
txtacqty.Text = Val(txtacqty.Text) + 1
End If
MSComm1.Output = "TB"
lbStatus.Caption = "AC REST AREA COMP. HIDUP"
cmd4Ton.BackColor = vbGreen
cmd4TFan.BackColor = &H8000000F
If chk4T.Value = 0 Then
chk4T.Value = 1
End If
End Sub
Private Sub cmd4UFan_Click()
MSComm1.Output = "UA"
lbStatus.Caption = "FAN LINE D COMP. HIDUP"
'&H8000000F
cmd4uon.BackColor = &H8000000F
cmd4UFan.BackColor = vbGreen
End Sub
Private Sub cmd4Uoff_Click()
If Val(txtacqty.Text) > 0 Then
txtacqty = Val(txtacqty) - 1
End If
MSComm1.Output = "UC"
lbStatus.Caption = "AC LINE D COMP. MATI"
cmd4uon.BackColor = &H8000000F
cmd4UFan.BackColor = &H8000000F
End Sub
Private Sub cmd4uon_Click()
If Val(txtacqty.Text) < 20 Then
txtacqty.Text = Val(txtacqty.Text) + 1
End If
MSComm1.Output = "UB"
lbStatus.Caption = "AC LINE D COMP. HIDUP"
'&H8000000F
cmd4uon.BackColor = vbGreen
cmd4UFan.BackColor = &H8000000F
If chk4U.Value = 0 Then
 chk4U.Value = 1
 End If
End Sub
Private Sub cmd4VFan_Click()
Sleep (1000)
MSComm1.Output = "VA"
lbStatus.Caption = "FAN LINE D COMP. HIDUP"
cmd4Von.BackColor = &H8000000F
cmd4VFan.BackColor = vbGreen
End Sub
Private Sub cmd4Voff_Click()
If Val(txtacqty.Text) > 0 Then
txtacqty = Val(txtacqty) - 1
End If
MSComm1.Output = "VC"
lbStatus.Caption = "AC LINE D COMP. MATI"
cmd4Von.BackColor = &H8000000F
cmd4VFan.BackColor = &H8000000F
End Sub
Private Sub cmd4Von_Click()
'  &H8000000F
If Val(txtacqty.Text) < 20 Then
txtacqty.Text = Val(txtacqty.Text) + 1
End If
MSComm1.Output = "VB"
lbStatus.Caption = "AC LINE D COMP. HIDUP"
cmd4Von.BackColor = vbGreen
cmd4VFan.BackColor = &H8000000F
If chk4V.Value = 0 Then
chk4V.Value = 1
End If
End Sub
Private Sub cmdac1fan_Click()
MSComm1.Output = "1A"
lbStatus.Caption = "FAN FINAL COMP.HIDUP"
cmdac1on.BackColor = &H8000000F
cmdac1fan.BackColor = vbGreen
End Sub
Private Sub cmdac1off_Click()
If Val(txtacqty.Text) > 0 Then
txtacqty = Val(txtacqty) - 1
End If
MSComm1.Output = "1C"
lbStatus.Caption = "AC FINAL COMP. MATI"
cmdac1on.BackColor = &H8000000F
cmdac1fan.BackColor = &H8000000F
End Sub
Private Sub cmdac1on_Click()
If Val(txtacqty.Text) < 20 Then
txtacqty.Text = Val(txtacqty.Text) + 1
End If
MSComm1.Output = "1B"
lbStatus.Caption = "AC FINAL COMP. HIDUP"
cmdac1on.BackColor = vbGreen
cmdac1fan.BackColor = &H8000000F
If chk41.Value = 0 Then
chk41.Value = 1
End If
End Sub
Private Sub cmdac4Bon_Click()
'MSComm1.Output = "AA"
'Sleep (2000)
MSComm1.Output = "AB"
lbStatus.Caption = "AC CABINET DEPAN HIDUP"
cmdac1on.BackColor = vbGreen
cmdac1on.Enabled = False
cmdac1off.Enabled = True
End Sub
Private Sub cmdac4fan_Click()
Sleep (1000)
MSComm1.Output = "KA"
cmdac4on.BackColor = &H8000000F
cmdac4fan.BackColor = vbGreen
End Sub
Private Sub cmdac4off_Click()
If Val(txtacqty.Text) > 0 Then
txtacqty = Val(txtacqty) - 1
End If
MSComm1.Output = "KC"
lbStatus.Caption = "AC 4K Mati"
cmdac4on.BackColor = &H8000000F
cmdac4fan.BackColor = &H8000000F
End Sub
Private Sub cmdac4on_Click()
If Val(txtacqty.Text) < 20 Then
txtacqty.Text = Val(txtacqty.Text) + 1
End If
MSComm1.Output = "KB"
lbStatus.Caption = "AC 4K HIDUP"
cmdac4on.BackColor = vbGreen
cmdac4fan.BackColor = &H8000000F
If chk4K.Value = 0 Then
 chk4K.Value = 1
End If
End Sub
Private Sub cmdac5fan_Click()
Sleep (1000)
MSComm1.Output = "JA"
cmdac5on.BackColor = &H8000000F
cmdac5fan.BackColor = vbGreen
End Sub
Private Sub cmdac5off_Click()
If Val(txtacqty.Text) > 0 Then
txtacqty = Val(txtacqty) - 1
End If
MSComm1.Output = "JC"
lbStatus.Caption = "AC 4J Mati"
cmdac5on.BackColor = &H8000000F
cmdac5fan.BackColor = &H8000000F
End Sub
Private Sub cmdac5on_Click()
If Val(txtacqty.Text) < 20 Then
txtacqty.Text = Val(txtacqty.Text) + 1
End If
MSComm1.Output = "JB"
lbStatus.Caption = "AC 4J HIDUP"
cmdac5on.BackColor = vbGreen
cmdac5fan.BackColor = &H8000000F
If chk4J.Value = 0 Then
chk4J.Value = 1
End If
End Sub
Private Sub cmdacAfan_Click()
MSComm1.Output = "fA"
lbStatus.Caption = "FAN CABINET DEPAN HIDUP"
End Sub
Private Sub cmdacAon_Click()
'MSComm1.Output = "fA"
'Sleep (2000)
MSComm1.Output = "fB"
lbStatus.Caption = "AC FINAL COMP. HIDUP"
cmdac1on.BackColor = vbGreen
cmdac1on.Enabled = False
cmdac1off.Enabled = True
End Sub
Private Sub cmdacLfan_Click()
Sleep (1000)
MSComm1.Output = "LA"
lbStatus.Caption = "FAN AC OFFICE HIDUP"
cmdacLon.BackColor = &H8000000F
cmdacLfan.BackColor = vbGreen
txtpowerinput.Text = "12"
End Sub
Private Sub cmdacLoff_Click()
If Val(txtacqty.Text) < 20 Then
 txtacqty.Text = Val(txtacqty.Text) + 1
  End If
 MSComm1.Output = "LC"
 lbStatus.Caption = "AC OFFICE MATI"
 cmdacLon.BackColor = &H8000000F
 cmdacLfan.BackColor = &H8000000F
End Sub
Private Sub cmdacLon_Click()
 If Val(txtacqty.Text) < 20 Then
 txtacqty.Text = Val(txtacqty.Text) + 1
  End If
 MSComm1.Output = "LB"
 lbStatus.Caption = "AC OFFICE HIDUP"
 cmdacLon.BackColor = vbGreen
 cmdacLfan.BackColor = &H8000000F
 If chk4L.Value = 0 Then
 chk4L.Value = 1
 End If
End Sub
Private Sub cmdacMfan_Click()
MSComm1.Output = "MA"
lbStatus.Caption = "FAN AC PCB MATERIAL HIDUP"
cmdacMon.BackColor = &H8000000F
cmdacMfan.BackColor = vbGreen
End Sub
Private Sub cmdacMoff_Click()
If Val(txtacqty.Text) > 0 Then
txtacqty = Val(txtacqty) - 1
End If
MSComm1.Output = "MC"
lbStatus.Caption = "AC PCB MATERIAL MATI"
cmdacMon.BackColor = &H8000000F
cmdacMfan.BackColor = &H8000000F
End Sub
Private Sub cmdacMon_Click()
If Val(txtacqty.Text) < 20 Then
txtacqty.Text = Val(txtacqty.Text) + 1
End If
MSComm1.Output = "MB"
lbStatus.Caption = "AC PCB MATERIAL HIDUP"
cmdacMon.BackColor = vbGreen
cmdacMfan.BackColor = &H8000000F
If chk4M.Value = 0 Then
chk4M.Value = 0
End If
chk4M.Value = 1
End Sub
Private Sub cmdacNfan_Click()
MSComm1.Output = "NA"
lbStatus.Caption = "FAN AC PART CONTROL HIDUP"
cmdacNon.BackColor = &H8000000F
cmdacNfan.BackColor = vbGreen
End Sub
Private Sub cmdacNoff_Click()
If Val(txtacqty.Text) > 0 Then
txtacqty = Val(txtacqty) - 1
End If
MSComm1.Output = "NC"
lbStatus.Caption = "AC PART CONTROL MATI"
cmdacNon.BackColor = &H8000000F
cmdacNfan.BackColor = &H8000000F
End Sub
Private Sub cmdacNon_Click()
If Val(txtacqty.Text) < 20 Then
txtacqty.Text = Val(txtacqty.Text) + 1
End If
MSComm1.Output = "NB"
lbStatus.Caption = "AC PART CONTROL HIDUP"
cmdacNon.BackColor = vbGreen
cmdacNfan.BackColor = &H8000000F
If chk4N.Value = 0 Then
chk4N.Value = 1
End If
End Sub
Private Sub cmdcompletefan_Click()
Sleep (1500)
MSComm1.Output = "1A"
Sleep (1500)
MSComm1.Output = "VA"
'=========================
Sleep (1500)
MSComm1.Output = "UA"
'========================
Sleep (1500)
MSComm1.Output = "TA"
'=========================
Sleep (1500)
MSComm1.Output = "SA"
'=========================
Sleep (1500)
MSComm1.Output = "RA"
'========================
Sleep (1500)
MSComm1.Output = "QA"
'=========================
Sleep (1500)
MSComm1.Output = "EA"
'=========================
Sleep (1500)
MSComm1.Output = "PA"
'=========================
Sleep (1500)
MSComm1.Output = "OA"
'=========================
lbcomplete.Caption = "SEMUA AC complete FAN"
End Sub
Private Sub cmdcompleteoff_Click()
Call complete_group1_off
Call complete_group2_off
If Val(txtacqty.Text) > 0 Then
txtacqty = Val(txtacqty) - 7
End If
cmd4Von.BackColor = &H8000000F
cmd4uon.BackColor = &H8000000F
cmd4Ton.BackColor = &H8000000F
cmd4son.BackColor = &H8000000F
cmd4ron.BackColor = &H8000000F
cmd4qon.BackColor = &H8000000F
cmd4pon.BackColor = &H8000000F
cmd4oon.BackColor = &H8000000F
cmd4eon.BackColor = &H8000000F
cmdac1on.BackColor = &H8000000F
lbcomplete.Caption = "SEMUA AC complete MATI"
End Sub
Private Sub cmdcompleteon_Click()
If Val(txtacqty.Text) < 20 Then
txtacqty.Text = Val(txtacqty.Text) + 7
End If
Call complete_group1_on
Call complete_group2_on
cmd4Von.BackColor = vbGreen
cmd4uon.BackColor = vbGreen
cmd4Ton.BackColor = vbGreen
cmd4son.BackColor = vbGreen
cmd4ron.BackColor = vbGreen
cmd4qon.BackColor = vbGreen
cmd4pon.BackColor = vbGreen
cmd4oon.BackColor = vbGreen
cmdac1on.BackColor = vbGreen
cmd4eon.BackColor = vbGreen
lbcomplete.Caption = "SEMUA AC complete HIDUP"
End Sub
Private Sub cmdDEfan_Click()
Sleep (300)
MSComm1.Output = Trim(txttest.Text)
lbStatus.Caption = "FAN AC DE HIDUP"
cmdDEon.BackColor = &H8000000F
cmdDEfan.BackColor = vbGreen
End Sub
Private Sub cmdDEoff_Click()
If Val(txtacqty.Text) > 0 Then
txtacqty = Val(txtacqty) - 1
End If
MSComm1.Output = Trim(txttest.Text)
lbStatus.Caption = "AC DE Mati"
cmdDEon.BackColor = &H8000000F
cmdDEfan.BackColor = &H8000000F
End Sub
Private Sub cmdDEon_Click()
If Val(txtacqty.Text) < 20 Then
txtacqty.Text = Val(txtacqty.Text) + 1
End If
MSComm1.Output = Trim(txttest.Text)
lbStatus.Caption = "AC DE HIDUP"
cmdDEon.BackColor = vbGreen
cmdDEfan.BackColor = &H8000000F
End Sub
Private Sub cmdlokasi_Click()
'peta.Show
End Sub
Private Sub cmdsemuafanon_Click()
cmdsemuaon.Enabled = True
Sleep (1500)
MSComm1.Output = "NA"
'==================
Sleep (1500)
MSComm1.Output = "MA"
'==================
Sleep (1500)
MSComm1.Output = "LA"
'=========================
Sleep (1500)
MSComm1.Output = "KA"
'=========================
Sleep (1500)
MSComm1.Output = "JA"
'=========================
Sleep (1500)
MSComm1.Output = "IA"
'==================
Sleep (1500)
MSComm1.Output = "HA"
'=========================
'Sleep (1500)
'MSComm1.Output = "GA"
'==================
Sleep (1500)
MSComm1.Output = "FA"
'=========================
'MSComm1.Output = "XA"
lbStatus.Caption = "SEMUA  FAN AC PCB HIDUP"
cmdsemuaon.Enabled = True
cmd4eon.BackColor = &H8000000F
cmd4Efan.BackColor = vbGreen
cmd4fon.BackColor = &H8000000F
cmd4ffan.BackColor = vbGreen
cmd4gon.BackColor = &H8000000F
cmd4gfan.BackColor = vbGreen
cmd4hon.BackColor = &H8000000F
cmd4hfan.BackColor = vbGreen
cmd4ion.BackColor = &H8000000F
cmd4ifan.BackColor = vbGreen
cmdac5on.BackColor = &H8000000F
cmdac5fan.BackColor = vbGreen
cmdac4on.BackColor = &H8000000F
cmdac4fan.BackColor = vbGreen
cmdacLon.BackColor = &H8000000F
cmdacLfan.BackColor = vbGreen
cmdacMon.BackColor = &H8000000F
cmdacMfan.BackColor = vbGreen
cmdacNon.BackColor = &H8000000F
cmdacNfan.BackColor = vbGreen
cmdac1on.BackColor = &H8000000F
cmdac1fan.BackColor = vbGreen
End Sub
Private Sub cmdsemuaoff_Click()
Call pcb_group1_off
Call pcb_group2_off
Call LCD_off
Call office_off
If Val(txtacqty.Text) > 0 Then
txtacqty = Val(txtacqty) - 7
End If
lbStatus.Caption = "SEMUA AC PCB  MATI"
cmdsemuaon.Enabled = True
cmdsemuaon.BackColor = &H8000000F
'===========
cmd4eon.BackColor = &H8000000F
cmd4Efan.BackColor = &H8000000F
cmd4fon.BackColor = &H8000000F
cmd4ffan.BackColor = &H8000000F
cmd4gon.BackColor = &H8000000F
cmd4gfan.BackColor = &H8000000F
cmd4hon.BackColor = &H8000000F
cmd4hfan.BackColor = &H8000000F
cmd4ion.BackColor = &H8000000F
cmd4ifan.BackColor = &H8000000F
cmdac5on.BackColor = &H8000000F
cmdac5fan.BackColor = &H8000000F
cmdac4on.BackColor = &H8000000F
cmdac4fan.BackColor = &H8000000F
cmdacLon.BackColor = &H8000000F
cmdacLfan.BackColor = &H8000000F
cmdacMon.BackColor = &H8000000F
cmdacMfan.BackColor = &H8000000F
cmdacNon.BackColor = &H8000000F
cmdacNfan.BackColor = &H8000000F
'&H8000000F&
End Sub
Private Sub cmdsemuaon_Click()
If Val(txtacqty.Text) < 20 Then
txtacqty.Text = Val(txtacqty.Text) + 7
End If
Call pcb_group1_on
Call pcb_group2_on
Call LCD_on
Call office_on
cmdsemuaon.BackColor = vbGreen
cmd4eon.BackColor = vbGreen
'&H8000000F&
'===========================
lbStatus.Caption = "AC PCB  HIDUP"
cmdsemuaon.Enabled = False
cmdsemuaoff.Enabled = True
cmd4eon.BackColor = vbGreen
cmd4Efan.BackColor = &H8000000F
cmd4fon.BackColor = vbGreen
cmd4ffan.BackColor = &H8000000F
cmd4gon.BackColor = vbGreen
cmd4gfan.BackColor = &H8000000F
cmd4hon.BackColor = vbGreen
cmd4hfan.BackColor = &H8000000F
cmd4ion.BackColor = vbGreen
cmd4ifan.BackColor = &H8000000F
cmdac5on.BackColor = vbGreen
cmdac5fan.BackColor = &H8000000F
cmdac4on.BackColor = vbGreen
cmdac4fan.BackColor = &H8000000F
cmdacLon.BackColor = vbGreen
cmdacLfan.BackColor = &H8000000F
cmdacMon.BackColor = vbGreen
cmdacMfan.BackColor = &H8000000F
cmdacNon.BackColor = vbGreen
cmdacNfan.BackColor = &H8000000F
End Sub
Private Sub Command3_Click()
MSComm1.RTSEnable = False
End Sub
Private Sub cmdsimpan_Click()
 SaveSetting App.Title, "Settings", "txtpagimasuk", txtpagimasuk
 SaveSetting App.Title, "Settings", "txtpagioff", txtpagioff
 SaveSetting App.Title, "Settings", "txtpagion", txtpagion
 SaveSetting App.Title, "Settings", "txtsiangoff", txtsiangoff
 SaveSetting App.Title, "Settings", "txtsiangon", txtsiangon
 SaveSetting App.Title, "Settings", "txtsoreoff", txtsoreoff
 SaveSetting App.Title, "Settings", "txtsoreon", txtsoreon
 SaveSetting App.Title, "Settings", "txtsorepulang", txtsorepulang
 SaveSetting App.Title, "Settings", "txtotsoremasuk", txtotsoremasuk
 SaveSetting App.Title, "Settings", "txtmagriboff", txtmagriboff
 SaveSetting App.Title, "Settings", "txtmagribon", txtmagribon
 SaveSetting App.Title, "Settings", "txtotpulang", txtotpulang
 SaveSetting App.Title, "Settings", "txtshiftmasuk", txtshiftmasuk
 SaveSetting App.Title, "Settings", "txtmalamoff", txtmalamoff
 SaveSetting App.Title, "Settings", "txtmalamon", txtmalamon
 SaveSetting App.Title, "Settings", "txttengahmalamoff", txttengahmalamoff
 SaveSetting App.Title, "Settings", "txttengahmalamon", txttengahmalamon
 SaveSetting App.Title, "Settings", "txtdiniharioff", txtdiniharioff
 SaveSetting App.Title, "Settings", "txttengahmalamoff", txttengahmalamoff
 SaveSetting App.Title, "Settings", "txttengahmalamon", txttengahmalamon
 SaveSetting App.Title, "Settings", "txtdiniharion", txtdiniharion
 SaveSetting App.Title, "Settings", "txtmerahsiangoff", txtmerahsiangoff
 SaveSetting App.Title, "Settings", "txtmerahsiangon", txtmerahsiangon
End Sub
Private Sub Command2_Click()
MSComm1.RTSEnable = True
End Sub
Private Sub Command4_Click()
MSComm1.RTSEnable = False
End Sub
Private Sub commandString_KeyPress(KeyAscii As Integer)
   Dim rstr As String
   If KeyAscii = 13 Then     'kalau ditekan enter
      KeyAscii = 0           ' get rid of the normal beep sound
      rstr = sendCommand(commandString.Text) 'MENGIRIM DAN AMBIL RESPON
      If rstr = "" Then  'kalau ngga ada respon
         Beep
         appendlnResponse ("(Warning: No Response from AC)")
      Else
         appendlnResponse (rstr)
      End If
   End If
End Sub
Private Sub ExitButton_Click()
   Call closePort_Click
  ' End
End Sub
Private Sub Form_Load()
 txtpagimasuk = GetSetting(App.Title, "Settings", "txtpagimasuk", "")
 txtpagioff = GetSetting(App.Title, "Settings", "txtpagioff", "")
 txtpagion = GetSetting(App.Title, "Settings", "txtpagion", "")
 txtsiangoff = GetSetting(App.Title, "Settings", "txtsiangoff", "")
 txtsiangon = GetSetting(App.Title, "Settings", "txtsiangon", "")
 txtsoreoff = GetSetting(App.Title, "Settings", "txtsoreoff", "")
 txtsoreon = GetSetting(App.Title, "Settings", "txtsoreon", "")
 txtsorepulang = GetSetting(App.Title, "Settings", "txtsorepulang", "")
 txtotsoremasuk = GetSetting(App.Title, "Settings", "txtotsoremasuk", "")
 txtmagriboff = GetSetting(App.Title, "Settings", "txtmagriboff", "")
 txtmagribon = GetSetting(App.Title, "Settings", "txtmagribon", "")
 txtotpulang = GetSetting(App.Title, "Settings", "txtotpulang", "")
 txtshiftmasuk = GetSetting(App.Title, "Settings", "txtshiftmasuk", "")
 txtmalamon = GetSetting(App.Title, "Settings", "txtmalamon", "")
 txtmalamoff = GetSetting(App.Title, "Settings", "txtmalamoff", "")
 txttengahmalamoff = GetSetting(App.Title, "Settings", "txttengahmalamoff", "")
 txttengahmalamon = GetSetting(App.Title, "Settings", "txttengahmalamon", "")
 txtdiniharioff = GetSetting(App.Title, "Settings", "txtdiniharioff", "")
 txtdiniharion = GetSetting(App.Title, "Settings", "txtdiniharion", "")
 txtmerahsiangoff = GetSetting(App.Title, "Settings", "txtmerahsiangoff", "")
 txtmerahsiangon = GetSetting(App.Title, "Settings", "txtmerahsiangon", "")
  Me.Icon = Me.Image1
  lMinHeight = Me.Height
  lMinWidth = Me.Width
lbStatus.Caption = "AC semua OFF"
'status = False
   portChoice.ListIndex = 0
   baudChoice.ListIndex = 3
   dataBitChoice.ListIndex = 1
   stopBitChoice.ListIndex = 0
   parityChoice.ListIndex = 0
   closePort.Enabled = False
  tgl.Caption = Format(Now, "yyyy-MM-dd")
  txtWaktu.Text = Format(Now, "hh:mm")
  lbWaktu.Caption = txtWaktu.Text
  txtday.Text = Format(Now, "dddd")
 Sleep (200)
 chkcompot.Value = 0
' chkcompshift.Value = 1
 openPort_Click
 MSComm1.RTSEnable = False
  End Sub
Private Sub Form_Resize()
  Dim lWidth As Long
  Dim lHeight As Long
  Const Unit = 105
  'this is here so when the mnuShow_Click event is fired, the form wont minimize and hide again
  If bResizeOff = False Then
    If Me.WindowState = vbMinimized Then
      Me.Hide
      UpdateIcon NIM_ADD
    Else
      UpdateIcon NIM_DELETE
    End If
  End If
  'generic resize logic
End Sub
Private Sub UpdateIcon(Value As Long)
   ' Used to add, modify and delete icon.
   With nid
      .cbSize = Len(nid)
      .hWnd = Me.hWnd
      .uID = vbNull
      .uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
      .uCallbackMessage = WM_MOUSEMOVE
      .hIcon = Me.Icon
      .szTip = App.Title & vbNullChar
   End With
   Shell_NotifyIcon Value, nid
End Sub
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
   Dim Result As Long
   Dim msg As Long
   'really interesting stuff here...i got it from MSDN
   If Me.ScaleMode = vbPixels Then
      msg = X
   Else
      msg = X / Screen.TwipsPerPixelX
   End If
   'handles mouse events when form is minimized, hidden and icon is in the system tray
   Select Case msg
      Case WM_RBUTTONDBLCLK
      Case WM_RBUTTONDOWN
      Case WM_RBUTTONUP
         PopupMenu mnuAppPopup
      Case WM_LBUTTONDBLCLK
          mnuShow_Click
      Case WM_LBUTTONDOWN
      Case WM_LBUTTONUP
      Case WM_MBUTTONDBLCLK
      Case WM_MBUTTONDOWN
      Case WM_MBUTTONUP
      Case WM_MOUSEMOVE
      Case Else
   End Select
End Sub
Private Sub mnuExit_Click()
  Unload Me
End Sub
Private Sub mnuPopWhenMin_Click()
  'this menu item is used so that if it is checked and the app is in the system tray
  'and a new message is recieved the app will unhide and show in normal state.
  'if this menu item is unchecked and the app is in the system tray and the app recieves
  'a new message, the icon will blink until the user brings it up from the tray to
  'see the new message
  If Me.mnuPopWhenMin.Checked = True Then
    Me.mnuPopWhenMin.Checked = False
  Else
    Me.mnuPopWhenMin.Checked = True
  End If
End Sub
Private Sub mnuShow_Click()
  Dim Result As Long
  'this menu event will unhide the app from the system tray and show it in a normal state
  Me.Timerx.Enabled = False
  Me.Icon = Me.Image1
  UpdateIcon NIM_DELETE
  bResizeOff = True
  Me.WindowState = vbNormal
  Result = SetForegroundWindow(Me.hWnd)
  Me.Show
  bResizeOff = False
End Sub
Private Sub Form_Unload(Cancel As Integer)
UpdateIcon NIM_DELETE
'Dim Response As Integer, msg As String
'If sock(Intmax).state = 7 Then
 '   Response = MsgBox("Jika Anda keluar, koneksi remote host" & vbCrLf _
 '   & "akan terputus. Anda yakin untuk keluar ?", vbQuestion + vbYesNo, "Keluar")
 '   Select Case Response
   '     Case vbNo
   '         Cancel = -1
   '         Exit Sub
   '    Case vbYes
            'tcpClient.Close
            'jika program berhenti, semua soket akan ditutup
      ''      close_all_sockets
            'Unload wininfo
        '    Unload Me
   ' End Select
'End If
End Sub
Private Sub Timer1_Timer()
'group pcb
If txtWaktu.Text = "10:30" Or txtWaktu.Text = "10:40" Or txtWaktu.Text = "10:55" Or _
   txtWaktu.Text = "11:15" Or txtWaktu.Text = "11:30" Or txtWaktu.Text = "10:40" _
   Or txtWaktu.Text = "10:55" Or _
   txtWaktu.Text = "08:00" Or txtWaktu.Text = "08:15" Or txtWaktu.Text = "08:25" _
  Then
' switch ke fan
Sleep (1000)
MSComm1.Output = "LA"
lbStatus.Caption = "FAN AC Office HIDUP"
cmd4hon.BackColor = &H8000000F
cmd4hfan.BackColor = vbGreen
End If
If txtWaktu.Text = "10:35" Or txtWaktu.Text = "10:45" Or txtWaktu.Text = "11:00" Or _
 txtWaktu.Text = "11:20" Or txtWaktu.Text = "11:35" Or txtWaktu.Text = "10:45" Or _
txtWaktu.Text = "08:05" Or txtWaktu.Text = "08:20" Or txtWaktu.Text = "08:30" _
 Then
' switch ke
Sleep (1000)
MSComm1.Output = "LB"
lbStatus.Caption = "AC Office HIDUP"
cmd4hon.BackColor = &H8000000F
cmd4hfan.BackColor = vbGreen
End If
End Sub
Private Sub timerx_Timer()
  Static bool As Boolean
  'used to flash the icon when the app is in the system tray and a message is waiting for the user
  If bool = True Then
    Me.Icon = Me.Image1
    bool = False
  Else
    Me.Icon = Me.Image2
    bool = True
  End If
  UpdateIcon NIM_MODIFY
End Sub
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
  If Button = 2 Then
    Me.PopupMenu mnuAppPopup
  End If
End Sub
Private Sub Label1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
  If Button = 2 Then
    Me.PopupMenu mnuAppPopup
  End If
End Sub
Private Sub Label2_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
  If Button = 2 Then
    Me.PopupMenu mnuAppPopup
  End If
End Sub
Private Sub openPort_Click()
   Dim sformat As String
   If MSComm1.PortOpen = True Then Exit Sub
   sformat = baudChoice.List(baudChoice.ListIndex) + "," _
   + Mid(parityChoice.List(parityChoice.ListIndex), 1, 1) + "," _
   + dataBitChoice.List(dataBitChoice.ListIndex) + "," _
   + stopBitChoice.List(stopBitChoice.ListIndex)
   MSComm1.Settings = sformat
   MSComm1.CommPort = portChoice.ListIndex + 1
   MSComm1.PortOpen = True
   appendlnResponse ("COM" + Str(MSComm1.CommPort) + _
      ": Open at " + MSComm1.Settings)
   openPort.Enabled = False
   closePort.Enabled = True
   enableChoice (False)
End Sub
Private Sub appendlnResponse(s As String)
    responseBox.Text = responseBox.Text + s + Chr(13) + Chr(10)
End Sub
Public Function sendCommand(cmd As String)
   Dim duration As Long
   duration = Str(timeOutBox.Text)
   If (duration <= 0) Then duration = 1000
   Call openPort_Click
      If Mid(cmd, 1, 1) <> "@" Then
       MSComm1.Output = Chr(5)     ' send ctrl-E = chr(5)
       If getCtrlE() = False Then  ' should get a Ctrl-E in return
          responseText = ""
          Exit Function
       End If
   End If
   MSComm1.Output = cmd + Chr(13)
   Call getResponse              ' get a response within timeout.
   sendCommand = responseText    ' return value fungsi sendcomand= text respon dari alat.
End Function
' This function append the ID and the FCS to the input string "cmd" and return
' the resultant string. cmd should not include the "*" character
Public Function appendFCS(ID As Integer, cmd As String)
    Dim IDString  As String
    Dim FCSString As String
    IDString = Hex(ID)
    If Len(IDString) = 1 Then IDString = "0" + IDString
    cmd = "@" + IDString + cmd
    FCSString = Hex(computeFCS(cmd))
    If Len(FCSString) = 1 Then FCSString = "0" + FCSString
    cmd = cmd + FCSString + "*"
    appendFCS = cmd             ' returned string now contains @ID and FCS+"*"
End Function
' This function compute the FCS for the given input string "cmd" and return the
' computed FCS as an integer. This function may be called for verifying whether
' the received response string is error free.
Public Function computeFCS(cmd As String)
    Dim Result As Integer
    Dim length As Integer
    Dim i As Integer
    length = Len(cmd)
    Result = Asc(Mid(cmd, 1, 1))
    For i = 2 To length
        Result = Result Xor Asc(Mid(cmd, i, 1))
    Next
    computeFCS = Result
End Function
' This function wait for a valid Ctrl-E from the PLC and return TRUE. If it does not
' receive within the specified timeout then it returns a FALSE
Private Function getCtrlE()
   Dim inbuff As String
   Dim pcount As Long
   Dim ccount As Long
   Dim duration As Long
   duration = Str(timeOutBox.Text)
   If (duration <= 0) Then duration = 1000
   pcount = GetTickCount()
   Do While True
      inbuff = MSComm1.Input
      If inbuff = Chr(5) Then
         getCtrlE = True
         Exit Function
      End If
      ccount = GetTickCount()
      If ccount >= pcount + duration Then Exit Do  ' timeout and still did not get complete string
   Loop
   getCtrlE = False
End Function
' This procecedure examine the serial input buffer to see if a CR-terminated string
' has been received. Once a completed string is received it is copied to the global variable
' "responseText" and the buffer will be cleared. If a completed string is not received
' within the time-out period then the procedure will return and the "responseText" string
' will remain an empty string
Private Sub getResponse()
   Static responseBuffer As String
   Dim inbuff As String
   Dim length As Integer
   Dim pcount As Long
   Dim ccount As Long
   Dim duration As Long
   duration = Str(timeOutBox.Text)
   If (duration <= 0) Then duration = 500
   pcount = GetTickCount()
   Do While True
      inbuff = MSComm1.Input
      If Len(inbuff) > 0 Then
            responseBuffer = responseBuffer + inbuff
            length = Len(responseBuffer)
            If Mid(responseBuffer, length, 1) = Chr(13) Then
                responseText = Mid(responseBuffer, 1, length - 1) ' received a complete response string
                responseBuffer = ""
                Exit Sub
            Else
            End If
      End If
      ccount = GetTickCount()
      If ccount >= pcount + duration Then Exit Do  ' timeout and still did not get complete string
   Loop
   responseText = "test"
End Sub
Private Sub timerJam_Timer()
Dim argo, counter, countermenit As Double
Dim hargaperdetik, hargapermenit As Double
Dim hargasebelum As Integer
txtday.Text = Format(Now, "dddd")
tgl.Caption = Format(Now, "yyyy-MM-dd")
txtWaktu.Text = Format(Now, "hh:mm")
lbWaktu.Caption = txtWaktu.Text
HH.Caption = Left(txtWaktu.Text, 2)
MM.Caption = Mid(txtWaktu.Text, 4, 2)
SS.Caption = Right(txtWaktu.Text, 2)
'set waktu istirahat siang dan jam pulang hari jumat
If Trim(txtday.Text) = "Jumat" Or Trim(txtday.Text) = "Friday" Then
txtsiangon.Text = "12:45"
txtsorepulang.Text = "16:50"
txtotsoremasuk.Text = "16:55"
End If
If Trim(txtday.Text) = "Sabtu" Or Trim(txtday.Text) = "Saturday" Then
txtsiangon.Text = "12:30"
txtsorepulang.Text = "16:28"
txtotsoremasuk.Text = "16:31"
End If
If txtWaktu.Text = (txtsavingpagi.Text) Then  ' 07:45
Call saving2_off
End If
If txtWaktu.Text = (txtsavingsubuh.Text) Then   ' 05:15
Call saving1_off
End If
'normal shift   07:25 = 10:10 = 12:30 = 15:30  PCB dan Complete
'============================================
   If txtWaktu.Text = Trim(txtpagimasuk.Text) Or _
    txtWaktu.Text = Trim(txtpagion.Text) Or _
    txtWaktu.Text = Trim(txtsiangon.Text) Or _
    txtWaktu.Text = Trim(txtsoreon.Text) Then
    'ON KAN AC PCB NORMAL
If (chkpcb1630.Value = 1) Then
Call pcb_group1_on
Call pcb_group2_on
Call LCD_on
Call office_on
If Val(txtacqty.Text) < 20 Then
txtacqty.Text = Val(txtacqty.Text) + 7
End If
lbStatus.Caption = "Semua AC PCB Hidup"
End If
'ON kan Ac complete normal 7:25 ~ 16:30
If (chkcomp1630.Value = 1) Then
Call complete_group2_on
Call complete_group1_on
If Val(txtacqty.Text) < 20 Then
txtacqty.Text = Val(txtacqty.Text) + 7
End If
lbcomplete.Caption = "SEMUA AC complete HIDUP"
End If
End If
'============================================
'waktu mati
'OfF KAN AC  NORMAL  7:30 ~16:30
If txtWaktu.Text = Trim(txtpagioff.Text) Or _
txtWaktu.Text = Trim(txtsiangoff.Text) Or _
txtWaktu.Text = Trim(txtsoreoff.Text) Or _
txtWaktu.Text = Trim(txtsorepulang.Text) Then
'WAKTU MATI  pcb NORMAL
If (chkpcb1630.Value = 1) Then
Call pcb_group1_off
Call pcb_group2_off
lbcomplete.Caption = "SEMUA AC complete MATI"
End If
'WAKTU MATI COMPLETE NORMAL
If (chkcomp1630.Value = 1) Then
'==============================
Call complete_group1_off
Call complete_group2_off
'==============================
lbcomplete.Caption = "SEMUA AC complete MATI"
End If
End If   'AKHIR OFFKAN NORMAL
'***************************************************************
'WAKTU MATI LCD office NORMAL
If txtWaktu.Text = Trim(txtpagioff.Text) Or _
txtWaktu.Text = Trim(txtmerahsiangoff.Text) Or _
txtWaktu.Text = Trim(txtmerahsoreoff.Text) Or _
txtWaktu.Text = Trim(txtsorepulang.Text) Then
'WAKTU MATI LCD office NORMAL
If (chklcd.Value = 1) Then
Call LCD_off
Call office_off
End If
End If
'******************************************************************
'WAKTU MATI LCD office NORMAL
If txtWaktu.Text = Trim(txtpagion.Text) Or _
txtWaktu.Text = Trim(txtmerahsiangon.Text) Or _
txtWaktu.Text = Trim(txtmerahsoreon.Text) Or _
txtWaktu.Text = Trim(txtpagimasuk.Text) Then
'WAKTU MATI LCD office NORMAL
If (chklcd.Value = 1) Then
Call LCD_on
Call office_on
End If
End If
'********************************************************************
'waktu OFF LONG SHIF 2 COMPLETE
If txtWaktu.Text = Trim(txtmalamoff.Text) Or _
txtWaktu.Text = Trim(txttengahmalamoff.Text) Or _
txtWaktu.Text = Trim(txtdiniharioff.Text) Then
  If (chkpcbshift.Value = 1) Then
  Call pcb_group1_off
  Call pcb_group2_off
  Call office_off
  lbStatus.Caption = "SEMUA AC PCB MATI"
  End If
  If (chkcompshift.Value = 1) Then
  Call complete_group1_off
  Call complete_group2_off
  lbcomplete.Caption = "SEMUA AC complete MATI"
  End If
 End If
'=================================================
'waktu ON LONG SHIF 2 PCB dan COMPLETE
If txtWaktu.Text = Trim(txtshiftmasuk.Text) Or _
txtWaktu.Text = Trim(txtmalamon.Text) Or _
txtWaktu.Text = Trim(txttengahmalamon.Text) Or _
txtWaktu.Text = Trim(txtdiniharion.Text) Then
    If (chkpcbshift.Value = 1) Then
    Call pcb_group1_on
    Call pcb_group2_on
    Call office_on
    lbStatus.Caption = " SEMUA ac PCB hIDUP"
    End If
    If (chkcompshift.Value = 1) Then
    Call complete_group1_on
    Call complete_group2_on
    lbcomplete.Caption = "SEMUA AC complete HIDUP"
    End If
'============================================
End If '(PENUTUP IF PCB DAN COMPLETE LONG SHIFT)
'*********************************************************************
'AC ON WAKTU LEMBUR  PCB DAN COMPLETE
    If txtWaktu.Text = Trim(txtotsoremasuk.Text) Or _
    txtWaktu.Text = Trim(txtmagribon.Text) Then
   'ON KAN AC PCB
  If (chkpcbot.Value = 1) Then
    Call pcb_group1_on
    Call pcb_group2_on
    Call office_on
    lbStatus.Caption = " SEMUA ac PCB hIDUP"
  End If
'ON kan Ac complete
If (chkcompot.Value = 1) Then
Call complete_group1_on
Call complete_group2_on
lbcomplete.Caption = "SEMUA AC complete HIDUP"
End If
'chklcdot
If (chklcdot.Value = 1) Then
Call LCD_on
lbcomplete.Caption = "AC LCD HIDUP"
End If
If Val(txtacqty.Text) < 20 Then
txtacqty.Text = Val(txtacqty.Text) + 7
End If
End If
'============================================
'waktu mati
'OfF KAN AC PCB dan Complete  LEMBUR SORE
If txtWaktu.Text = Trim(txtmagriboff.Text) Or _
txtWaktu.Text = Trim(txtotpulang.Text) Then
'WAKTU MATI  pcb OT
If (chkpcbot.Value = 1) Then
Call pcb_group1_off
Call pcb_group2_off
Call LCD_off
Call office_off
lbStatus.Caption = "SEMUA AC pcb MATI"
End If
'WAKTU MATI COMPLETE
If (chkcompot.Value = 1) Then
Call complete_group1_off
Call complete_group2_off
lbcomplete.Caption = "SEMUA AC complete MATI"
End If
'=========================
If Val(txtacqty.Text) > 0 Then
txtacqty = Val(txtacqty) - 7
End If
'==============================
End If   'AKHIR OFFKAN NORMAL
txtcounter2.Text = Val(txtcounter2.Text) + 1
countermenit = Val(txtcounter2.Text)
If countermenit > 60 Then
txtcounterjam.Text = Round(countermenit / 60)
End If
'hargaperdetik = (Val(txtkwh.Text) / 3600) * Val(txtacqty) * Val(txtpowerinput.Text)
hargapermenit = (Val(txtkwh.Text) / 60) * Val(txtacqty) * Val(txtpowerinput.Text)
txthargadetik.Text = hargapermenit / 60
txthargamenit.Text = hargapermenit
txthargajam.Text = hargapermenit * 60
txtrupiah.Text = Round(Val(txtrupiah.Text) + hargapermenit)
End Sub
Private Sub complete_group1_on()
If (chk4O.Value = 1) Then
Sleep (2000)
MSComm1.Output = "OB"
cmd4oon.BackColor = vbGreen
End If
'==================
If (chk4Q.Value = 1) Then
Sleep (1500)
MSComm1.Output = "QB"
cmd4qon.BackColor = vbGreen
End If
'=========================
If (chk4S.Value = 1) Then
Sleep (2000)
MSComm1.Output = "SB"
cmd4son.BackColor = vbGreen
End If
'==================
If (chk4U.Value = 1) Then
Sleep (2000)
MSComm1.Output = "UB"
cmd4uon.BackColor = vbGreen
End If
If (chk4E.Value = 1) Then
Sleep (2000)
MSComm1.Output = "EB"
cmd4eon.BackColor = vbGreen
End If
End Sub
Private Sub complete_group1_off()
If (chk4O.Value = 1) Then
Sleep (2000)
MSComm1.Output = "OC"
End If
'==================
If (chk4Q.Value = 1) Then
Sleep (1500)
MSComm1.Output = "QC"
End If
'=========================
If (chk4S.Value = 1) Then
Sleep (2000)
MSComm1.Output = "SC"
End If
'==================
If (chk4U.Value = 1) Then
Sleep (2000)
MSComm1.Output = "UC"
End If
If (chk4E.Value = 1) Then
Sleep (2000)
MSComm1.Output = "EC"
End If
End Sub
Private Sub complete_group2_on()
'==================
If (chk4P.Value = 1) Then
Sleep (1500)
MSComm1.Output = "PB"
cmd4pon.BackColor = vbGreen
End If
'===============================
If (chk4R.Value = 1) Then
Sleep (2000)
MSComm1.Output = "RB"
cmd4ron.BackColor = vbGreen
End If
'=========================
If (chk4T.Value = 1) Then
Sleep (2000)
MSComm1.Output = "TB"
cmd4Ton.BackColor = vbGreen
End If
'============================
If (chk4V.Value = 1) Then
Sleep (2000)
MSComm1.Output = "VB"
cmd4Von.BackColor = vbGreen
End If
If (chk41.Value = 1) Then
Sleep (2000)
MSComm1.Output = "1B"
cmdac1on.BackColor = vbGreen
End If
End Sub
Private Sub complete_group2_off()
'==================
If (chk4P.Value = 1) Then
Sleep (1500)
MSComm1.Output = "PC"
End If
'===============================
If (chk4R.Value = 1) Then
Sleep (2000)
MSComm1.Output = "RC"
End If
'=========================
If (chk4T.Value = 1) Then
Sleep (2000)
MSComm1.Output = "TC"
End If
'============================
If (chk4V.Value = 1) Then
Sleep (2000)
MSComm1.Output = "VC"
End If
If (chk41.Value = 1) Then
Sleep (2000)
MSComm1.Output = "1C"
End If
End Sub
Private Sub pcb_group1_on()
'==================
If (chk4N.Value = 1) Then
Sleep (2000)
MSComm1.Output = "NB"
cmdacNon.BackColor = vbGreen
End If
'==================
'If (chk4L.Value = 1) Then
'Sleep (1500)
'MSComm1.Output = "LB"
'cmdacLon.BackColor = vbGreen
'End If
'=========================
If (chk4J.Value = 1) Then
Sleep (2000)
MSComm1.Output = "JB"
cmdac5on.BackColor = vbGreen
End If
'==================
If (chk4H.Value = 1) Then
Sleep (2000)
MSComm1.Output = "HB"
cmd4hon.BackColor = vbGreen
End If
End Sub
Private Sub pcb_group1_off()
If (chk4N.Value = 1) Then
Sleep (2000)
MSComm1.Output = "NC"
End If
'==================
'If (chk4L.Value = 1) Then
'Sleep (1500)
'MSComm1.Output = "LC"
'End If
'=========================
If (chk4J.Value = 1) Then
Sleep (2000)
MSComm1.Output = "JC"
End If
'==================
If (chk4H.Value = 1) Then
Sleep (2000)
MSComm1.Output = "HC"
End If
End Sub
Private Sub pcb_group2_on()
'=========================
'If (chk4G.Value = 1) Then
'Sleep (2000)
'MSComm1.Output = "GB"
'cmd4gon.BackColor = vbGreen
'End If
'=========================
If (chk4I.Value = 1) Then
Sleep (2000)
MSComm1.Output = "IB"
cmd4ion.BackColor = vbGreen
End If
'===============================
If (chk4K.Value = 1) Then
Sleep (2000)
MSComm1.Output = "KB"
cmdac4on.BackColor = vbGreen
End If
'==================
If (chk4M.Value = 1) Then
Sleep (1000)
MSComm1.Output = "MB"
cmdacMon.BackColor = vbGreen
End If
End Sub
Private Sub pcb_group2_off()
If (chk4G.Value = 1) Then
Sleep (2000)
MSComm1.Output = "GC"
End If
'=========================
If (chk4I.Value = 1) Then
Sleep (2000)
MSComm1.Output = "IC"
End If
'===============================
If (chk4K.Value = 1) Then
Sleep (2000)
MSComm1.Output = "KC"
End If
'==================
If (chk4M.Value = 1) Then
Sleep (1000)
MSComm1.Output = "MC"
End If
End Sub
Private Sub LCD_off() 'office_off()
If (chk4F.Value = 1) Then
Sleep (1000)
MSComm1.Output = "FC"
End If
End Sub
Private Sub LCD_on() '
If (chk4F.Value = 1) Then
Sleep (1000)
MSComm1.Output = "FB"
End If
End Sub
Private Sub office_off()
If (chk4L.Value = 1) Then
Sleep (1000)
MSComm1.Output = "LC"
End If
End Sub
Private Sub office_on()
If (chk4L.Value = 1) Then
Sleep (1000)
MSComm1.Output = "LB"
End If
End Sub
Private Sub saving1_off() 'U-Q-S-M-H-J-E
If (chk4H.Value = 1) Then
Sleep (2000)
MSComm1.Output = "UC"
End If
'==================
If (chk4Q.Value = 1) Then
Sleep (1500)
MSComm1.Output = "QC"
End If
'=========================
If (chk4T.Value = 1) Then
Sleep (2000)
MSComm1.Output = "SC"
End If
'==================
If (chk4M.Value = 1) Then
Sleep (2000)
MSComm1.Output = "MC"
End If
If (chk4H.Value = 1) Then
Sleep (2000)
MSComm1.Output = "HC"
End If
If (chk4J.Value = 1) Then
Sleep (2000)
MSComm1.Output = "JC"
End If
If (chk4E.Value = 1) Then
Sleep (2000)
MSComm1.Output = "EC"
End If
End Sub
Private Sub saving1_on() 'U-Q-S-M-H-J-E
If (chk4H.Value = 1) Then
Sleep (2000)
MSComm1.Output = "UB"
End If
'==================
If (chk4Q.Value = 1) Then
Sleep (1500)
MSComm1.Output = "QB"
End If
'=========================
If (chk4T.Value = 1) Then
Sleep (2000)
MSComm1.Output = "SB"
End If
'==================
If (chk4M.Value = 1) Then
Sleep (2000)
MSComm1.Output = "MB"
End If
If (chk4H.Value = 1) Then
Sleep (2000)
MSComm1.Output = "HB"
End If
If (chk4J.Value = 1) Then
Sleep (2000)
MSComm1.Output = "JB"
End If
If (chk4E.Value = 1) Then
Sleep (2000)
MSComm1.Output = "EB"
End If
End Sub
'======================
'saving2
'======================
Private Sub saving2_off() 'U-M-H-E
If (chk4H.Value = 1) Then
Sleep (2000)
MSComm1.Output = "UC"
End If
'==================
If (chk4M.Value = 1) Then
Sleep (2000)
MSComm1.Output = "MC"
End If
If (chk4H.Value = 1) Then
Sleep (2000)
MSComm1.Output = "HC"
End If
If (chk4E.Value = 1) Then
Sleep (2000)
MSComm1.Output = "EC"
End If
End Sub
Private Sub saving2_on() 'U-Q-S-M-H-J-E
If (chk4H.Value = 1) Then
Sleep (2000)
MSComm1.Output = "UB"
End If
'==================
If (chk4M.Value = 1) Then
Sleep (2000)
MSComm1.Output = "MB"
End If
If (chk4H.Value = 1) Then
Sleep (2000)
MSComm1.Output = "HB"
End If
If (chk4E.Value = 1) Then
Sleep (2000)
MSComm1.Output = "EB"
End If
End Sub
'=======================================================
Rangkain yang dikontrol:Code program untuk rangkaian di atas:
program
;slave rs485
ORG 50H
SWITCH_FAN EQU 41h ; fAN = “A”
SWITCH_ON EQU 42H ; ON = “B”
SWITCH_OFF EQU 43H ; OFF = “C”
ORG 50H
SWITCH_FAN EQU 41h ; fAN = “A”
SWITCH_ON EQU 42H ; ON = “B”
SWITCH_OFF EQU 43H ; OFF = “C”
;========================================================
SLAVE_ID EQU 61H ; alamat slave
;=========================================================
SLAVE_ID EQU 61H ; alamat slave
;=========================================================
SLAVE_ALL EQU 40H ; “@”
relay_A BIT P1.2 ; 000 p1.4 p1.3 p1.2 0 0
relay_B BIT P1.3
relay_C BIT P1.4
relay_A BIT P1.2 ; 000 p1.4 p1.3 p1.2 0 0
relay_B BIT P1.3
relay_C BIT P1.4
ORG 000H
LJMP START
LJMP START
; org 3h
; jmp intext0
; jmp intext0
; org 13h
; jmp intext1
; jmp intext1
org 0023h
LJMP ISR_SERIAL
LJMP ISR_SERIAL
ORG 30H
START:
CLR relay_C ;off
CLR relay_B
CLR relay_A
; ; 1 ; 0 ; 1 ; 0 0 0 0
MOV SCON,#50H ;SM0;SM1;SM2;REN;TB8;RB8;TI;RI
MOV TMOD,#22H ;T1 MODE 2 AUTO RELOAD GATE;CT;M1;M0
MOV TH1,#0FDH ;96K BPS
MOV TCON,#040H ;TF;TR1;TF0;TR0;IE1;IT1IE0;IT0
MOV PCON,#00H ;SM0D-;-;-;-;-;-;-;-;-;
MOV IE,#90H ;EA-ET2;ES;ET1;EX1;ET0;EX0 = 95=1001 0101
MOV IP,#00010000B ;PRIORITAS UTAMA INT SERIAL 90=1001 0000
START:
CLR relay_C ;off
CLR relay_B
CLR relay_A
; ; 1 ; 0 ; 1 ; 0 0 0 0
MOV SCON,#50H ;SM0;SM1;SM2;REN;TB8;RB8;TI;RI
MOV TMOD,#22H ;T1 MODE 2 AUTO RELOAD GATE;CT;M1;M0
MOV TH1,#0FDH ;96K BPS
MOV TCON,#040H ;TF;TR1;TF0;TR0;IE1;IT1IE0;IT0
MOV PCON,#00H ;SM0D-;-;-;-;-;-;-;-;-;
MOV IE,#90H ;EA-ET2;ES;ET1;EX1;ET0;EX0 = 95=1001 0101
MOV IP,#00010000B ;PRIORITAS UTAMA INT SERIAL 90=1001 0000
; ACALL DELAY10DETIK
; ACALL DELAY10DETIK
; ACALL DELAY10DETIK
; ACALL DELAY10DETIK
; ACALL DELAY10DETIK
; ACALL DELAY10DETIK
; ACALL DELAY10DETIK
; ACALL DELAY10DETIK
; ACALL DELAY10DETIK
; CLR relay_A ;0110H fan
; SETB relay_B
; SETB relay_C
; SETB relay_B
; SETB relay_C
; ACALL DELAY10DETIK
; ACALL DELAY10DETIK
; ACALL DELAY10DETIK
; ACALL DELAY10DETIK
; ACALL DELAY10DETIK
; ACALL DELAY10DETIK
; ACALL DELAY10DETIK
; ACALL DELAY10DETIK
; ACALL DELAY10DETIK
; ACALL DELAY10DETIK
; ACALL DELAY10DETIK
; CLR relay_C ;off
; CLR relay_B
; CLR relay_A
; CLR relay_B
; CLR relay_A
jmp $ ;looping menunggu perintah….
;======================================================
;batas main program
;======================================================
;batas main program
;======================================================
;======================================================
; interupt service serial
;======================================================
ISR_SERIAL:
; interupt service serial
;======================================================
ISR_SERIAL:
JNB RI,$
MOV A,SBUF
CLR RI
CJNE A,#SLAVE_ID,SEMUA ; jika isi A bukan 12H
CHARKEDUA: JNB RI,$
MOV A, SBUF
CLR RI
MOV A,SBUF
CLR RI
CJNE A,#SLAVE_ID,SEMUA ; jika isi A bukan 12H
CHARKEDUA: JNB RI,$
MOV A, SBUF
CLR RI
CJNE A,#SWITCH_ON,BUKAN_SWITCHON
ACALL TURN_ON
AJMP KE_RETI
ACALL TURN_ON
AJMP KE_RETI
SEMUA: CJNE A,#SLAVE_ALL , KE_RETI
JMP CHARKEDUA
JMP CHARKEDUA
BUKAN_SWITCHON:
CJNE A,#SWITCH_OFF,KE_FAN
ACALL TURN_OFF
AJMP KE_RETI
CJNE A,#SWITCH_OFF,KE_FAN
ACALL TURN_OFF
AJMP KE_RETI
KE_FAN: CJNE A,#SWITCH_FAN,KE_RETI
ACALL SW_FAN
ACALL SW_FAN
KE_RETI:
RETI
RETI
;======================================================
; interupt service interupt ext0
;======================================================
;intext0: ;AC on
;PUSH ACC
;PUSH PSW
;ACALL TURN_ON
;POP PSW
;POP ACC
;reti
; interupt service interupt ext0
;======================================================
;intext0: ;AC on
;PUSH ACC
;PUSH PSW
;ACALL TURN_ON
;POP PSW
;POP ACC
;reti
;======================================================
; interupt service interupt ext1
;=====================================================
; interupt service interupt ext1
;=====================================================
;intext1: ;AC of
;PUSH ACC
;PUSH PSW
;ACALL TURN_OFF
;POP PSW
;POP ACC
;reti
;PUSH ACC
;PUSH PSW
;ACALL TURN_OFF
;POP PSW
;POP ACC
;reti
;==================================================
TURN_ON:
MOV A,P1
ANL A,#00011100B
CJNE A,#00010100B,NYALAKAN ;bit p1.0 & p1.1 dianggap 0
RET
MOV A,P1
ANL A,#00011100B
CJNE A,#00010100B,NYALAKAN ;bit p1.0 & p1.1 dianggap 0
RET
NYALAKAN: ACALL SW_FAN
ACALL DELAY10DETIK
ACALL DELAY10DETIK
ACALL DELAY10DETIK
ACALL DELAY10DETIK
ACALL DELAY10DETIK
ACALL DELAY10DETIK
ACALL DELAY10DETIK
ACALL DELAY10DETIK
ACALL DELAY10DETIK
ACALL DELAY10DETIK
ACALL DELAY10DETIK
ACALL DELAY10DETIK
ACALL DELAY10DETIK
ACALL DELAY10DETIK
ACALL DELAY10DETIK
ACALL DELAY10DETIK
ACALL DELAY10DETIK
ACALL DELAY10DETIK
ACALL DELAY10DETIK
ACALL DELAY10DETIK
ACALL DELAY10DETIK
ACALL DELAY10DETIK
ACALL DELAY10DETIK
ACALL DELAY10DETIK
ACALL DELAY10DETIK
ACALL DELAY10DETIK
ACALL DELAY10DETIK
ACALL DELAY10DETIK
ACALL DELAY10DETIK
ACALL DELAY10DETIK
ACALL DELAY10DETIK
ACALL DELAY10DETIK
ACALL DELAY10DETIK
ACALL DELAY10DETIK
ACALL DELAY10DETIK
ACALL DELAY10DETIK
ACALL SW_COOL
RET
RET
TURN_OFF:
MOV A,P1
ANL A,#00011100B
CJNE A,#00,MATIKAN
RET
MATIKAN:
ACALL SW_FAN
ACALL DELAY10DETIK
ACALL DELAY10DETIK
ACALL DELAY10DETIK
ACALL DELAY10DETIK
ACALL DELAY10DETIK
ACALL DELAY10DETIK
ACALL DELAY10DETIK
ACALL DELAY10DETIK
ACALL DELAY10DETIK
ACALL DELAY10DETIK
ACALL DELAY10DETIK
ACALL DELAY10DETIK
ACALL DELAY10DETIK
ACALL DELAY10DETIK
ACALL DELAY10DETIK
ACALL DELAY10DETIK
ACALL DELAY10DETIK
ACALL DELAY10DETIK
MOV A,P1
ANL A,#00011100B
CJNE A,#00,MATIKAN
RET
MATIKAN:
ACALL SW_FAN
ACALL DELAY10DETIK
ACALL DELAY10DETIK
ACALL DELAY10DETIK
ACALL DELAY10DETIK
ACALL DELAY10DETIK
ACALL DELAY10DETIK
ACALL DELAY10DETIK
ACALL DELAY10DETIK
ACALL DELAY10DETIK
ACALL DELAY10DETIK
ACALL DELAY10DETIK
ACALL DELAY10DETIK
ACALL DELAY10DETIK
ACALL DELAY10DETIK
ACALL DELAY10DETIK
ACALL DELAY10DETIK
ACALL DELAY10DETIK
ACALL DELAY10DETIK
ACALL SW_OFF
RET
RET
SW_OFF: CLR relay_A ;0000H
CLR relay_B
CLR relay_C
ret
CLR relay_B
CLR relay_C
ret
SW_FAN: CLR relay_A ;0110H
SETB relay_B
SETB relay_C
ret
SETB relay_B
SETB relay_C
ret
SW_COOL: SETB relay_A ;0101h
CLR relay_B
SETB relay_C
ret
CLR relay_B
SETB relay_C
ret
DELAY:
MOV R6,#255
DELAY1: DJNZ R6, DELAY1
MOV R6,#255
DELAY2: DJNZ R6, DELAY2
MOV R6,#255
DELAY3: DJNZ R6,DELAY3
RET
MOV R6,#255
DELAY1: DJNZ R6, DELAY1
MOV R6,#255
DELAY2: DJNZ R6, DELAY2
MOV R6,#255
DELAY3: DJNZ R6,DELAY3
RET
DELAY1MS: MOV R7,#255
CALL DELAY
CALL DELAY
CALL DELAY
DELAYLOOP: DJNZ R7,DELAYLOOP
RET
CALL DELAY
CALL DELAY
CALL DELAY
DELAYLOOP: DJNZ R7,DELAYLOOP
RET
DELAY1DETIK: MOV R5,#255
CALL DELAY1MS
CALL DELAY1MS
LOOP1DTK: DJNZ R5,LOOP1DTK
RET
CALL DELAY1MS
CALL DELAY1MS
LOOP1DTK: DJNZ R5,LOOP1DTK
RET
DELAY2DETIK: MOV R4,#255
CALL DELAY1DETIK
CALL DELAY1DETIK
CALL DELAY1DETIK
LOOP4DTK: DJNZ R4, LOOP4DTK
RET
CALL DELAY1DETIK
CALL DELAY1DETIK
CALL DELAY1DETIK
LOOP4DTK: DJNZ R4, LOOP4DTK
RET
DELAY5DETIK: MOV R3,#255
CALL DELAY2DETIK
CALL DELAY2DETIK
CALL DELAY2DETIK
LOOP5DTK: DJNZ R3, LOOP5DTK
RET
CALL DELAY2DETIK
CALL DELAY2DETIK
CALL DELAY2DETIK
LOOP5DTK: DJNZ R3, LOOP5DTK
RET
DELAY10DETIK: MOV R2,#255
CALL DELAY5DETIK
CALL DELAY5DETIK
CALL DELAY5DETIK
CALL DELAY5DETIK
LOOP10DTK: DJNZ R2, LOOP10DTK
RET
RET
end
;SCON=SM0;SM1;SM2;REN; TB8 ;RB8;TI ;RI;
;TMOD=GATE1;C/T;M1;M0; GATE0;C/T;M1 ;M0;
;TCON=TF1;TR1;TF0;TR0; IE1 ;IT1;IE0;IT0;
;PCON=SMOD;-;-;-; GF1 ;GF0;PD ;IDL;
;IE =EA;-;ET2;ES ; ET1 ;EX1;ET0;EX0
sumber: http://pccontrol.wordpress.com
;TMOD=GATE1;C/T;M1;M0; GATE0;C/T;M1 ;M0;
;TCON=TF1;TR1;TF0;TR0; IE1 ;IT1;IE0;IT0;
;PCON=SMOD;-;-;-; GF1 ;GF0;PD ;IDL;
;IE =EA;-;ET2;ES ; ET1 ;EX1;ET0;EX0
sumber: http://pccontrol.wordpress.com
download source-code nya lengkap klik dibawah ini :


gan, bisa minta skematik rangkaian n sourcecode nya. link nya dah g' bisa.
BalasHapus