📄 cworkmode.cls
字号:
'Exit Sub
End If
SendCommand
Case ALERT
bht = False
If m_I <= 1 Then
If m_Interval < 2000 Then m_Interval = 2000
MDIMainForm.TimerCall.interval = 2000
SendCommand
m_I = m_I + 1
If m_I >= 2 Then
ActivateTimer 1000
End If
Else
bht = True
SendCommand
End If
Case LOCKCAR, UNLOCKCAR
'If m_I < 4 Then
' If m_Interval < 6000 Then m_Interval = 6000
' MDIMainForm.TimerCall.Interval = m_Interval
SendCommand
' m_I = m_I + 1
'End If
'If m_I >= 4 Then
' SetModeNone
OndutyInit True '自动切换到值班状态
'End If
Case StopCall
SendCommand
OndutyInit True
Case jt
SendCommand
OndutyInit True
End Select
End Sub
Public Sub SendCommand()
Dim ID As Integer
Dim i As Integer
Dim cmd(4) As Byte
Dim j As Integer
Dim PP As String
Dim K As Integer
Dim P(5) As String
SetReceiveFlag False '呼叫之前设置收到标志为False
Dim oTarget As CTarget
Set oTarget = MDIMainForm.oTargetManager.GetTargetByIndex(m_TargetIndex)
Dim strCommID As String
Dim dbs As Database
Dim rst As Recordset
Set dbs = DBEngine.Workspaces(0).OpenDatabase(strPath + PATH_DBDATA)
Set rst = dbs.OpenRecordset("target")
rst.Index = "CommID"
rst.Seek "=", oTarget.GetCommID
Temp_ChuanKou = ""
If Not rst.NoMatch Then
Temp_ChuanKou = rst!tel
End If
strCommID = oTarget.GetCommID + "F"
For j = 1 To 12 Step 2
PP = Mid(strCommID, j, 2)
P(K) = Mid(PP, 2, 1) + Mid(PP, 1, 1)
K = K + 1
Next
strCommID = ""
For j = 0 To 5
strCommID = strCommID + P(j)
Next
Select Case m_Mode
Case QUERY '工作模式
DisplayPicture 2
MDIMainForm.StatusBar1.Panels(2).Text = "呼叫[" & oTarget.GetName & "]车!"
oCommStream.SendCommand "FF", strCommID
'here oCommStream.sendCommand do actural send work
ActivateTimer2 0 'here active timer2 do process2,every 2 sec. check comm is there return data come
ActivateTimer 0
MDIMainForm.TimerCheck.Enabled = True
MDIMainForm.TimerCheck.interval = 2000
Case SINGLECALL
DisplayPicture 2
Select Case DHFLAG
Case 1
MDIMainForm.StatusBar1.Panels(2).Text = "呼叫[" & oTarget.GetName & "]车!"
Case 2
MDIMainForm.StatusBar1.Panels(2).Text = "记录回报[" & oTarget.GetName & "]车!"
Case 3
MDIMainForm.StatusBar1.Panels(2).Text = "自动回报[" & oTarget.GetName & "]车!"
Case 4
MDIMainForm.StatusBar1.Panels(2).Text = "复位[" & oTarget.GetName & "]车!"
Case 5
MDIMainForm.StatusBar1.Panels(2).Text = "通话[" & oTarget.GetName & "]车!"
Case 6
MDIMainForm.StatusBar1.Panels(2).Text = "锁车门[" & oTarget.GetName & "]车!"
Case 7
MDIMainForm.StatusBar1.Panels(2).Text = "开车门[" & oTarget.GetName & "]车!"
Case 8
MDIMainForm.StatusBar1.Panels(2).Text = "手柄设号[" & oTarget.GetName & "]车!"
Case 9
MDIMainForm.StatusBar1.Panels(2).Text = "记录间隔[" & oTarget.GetName & "]车!"
Case 10
MDIMainForm.StatusBar1.Panels(2).Text = "更改号码[" & oTarget.GetName & "]车!"
Case 11
MDIMainForm.StatusBar1.Panels(2).Text = "更改劫警[" & oTarget.GetName & "]车!"
Case 12
MDIMainForm.StatusBar1.Panels(2).Text = "不能接听[" & oTarget.GetName & "]车!"
Case 13
MDIMainForm.StatusBar1.Panels(2).Text = "不能打出[" & oTarget.GetName & "]车!"
Case 14
MDIMainForm.StatusBar1.Panels(2).Text = "电话无限[" & oTarget.GetName & "]车!"
Case 15
MDIMainForm.StatusBar1.Panels(2).Text = "设防关机[" & oTarget.GetName & "]车!"
Case 16
MDIMainForm.StatusBar1.Panels(2).Text = "设防不关机[" & oTarget.GetName & "]车!"
Case 17
MDIMainForm.StatusBar1.Panels(2).Text = "呼叫[" & NumberCar1 & "]车!"
End Select
oCommStream.SendCommand "FB", strCommID
If DHFLAG = 1 Then
MDIMainForm.TimerCheck.Enabled = True
MDIMainForm.TimerCheck.interval = 2000
Else
MDIMainForm.TimerCheck.Enabled = True
MDIMainForm.TimerCheck.interval = 2000
End If
Case LOCKCAR
DisplayPicture 1
MDIMainForm.StatusBar1.Panels(2).Text = "锁[" & oTarget.GetName & "]车!"
oCommStream.SendCommand "FA", strCommID
If MDIMainForm.Winsock1.State = 7 Then
MDIMainForm.Winsock1.SendData "锁车" + oTarget.GetCommID
End If
Case UNLOCKCAR
DisplayPicture 1
MDIMainForm.StatusBar1.Panels(2).Text = "解锁[" & oTarget.GetName & "]车!"
oCommStream.SendCommand "FE", strCommID
If MDIMainForm.Winsock1.State = 7 Then
MDIMainForm.Winsock1.SendData "解锁" + oTarget.GetCommID
End If
Case ALERT
If m_I < 2 Then
oCommStream.SendCommand "FC", strCommID
ActivateTimer 1000
Else
If m_bPause Then Exit Sub
DHFLAG = 3
m_Interval = 5000
DisplayPicture 3
MDIMainForm.StatusBar1.Panels(2).Text = "呼叫[" & oTarget.GetName & "]车!"
oCommStream.SendCommand "FB", strCommID
ActivateTimer2 3000
MDIMainForm.TimerCall.Enabled = False
MDIMainForm.TimerCall.interval = 0
End If
Case StopCall
DisplayPicture 1
MDIMainForm.StatusBar1.Panels(2).Text = "巡检[" & oTarget.GetName & "]车!"
'MDIMainForm.StatusBar1.Panels(2).Text = ""
oCommStream.SendCommand "FC", strCommID
Case jt
DisplayPicture 1
MDIMainForm.StatusBar1.Panels(2).Text = "监听[" & oTarget.GetName & "]车!"
oCommStream.SendCommand "FD", strCommID
If MDIMainForm.Winsock1.State = 7 Then
MDIMainForm.Winsock1.SendData "监听" + oTarget.GetCommID
End If
End Select
End Sub
Public Sub SetPause(ByVal bPause As Boolean)
m_bPause = bPause 'it is called by Pause in Workstatue
End Sub
Public Function SetModeComm()
oCommStream.SetComm MDIMainForm.oComm1 'all work oCommStream do is refer to oComm1
If Not oCommStream.StartWorking Then
SetModeNone 'startWorking用SetCommSetting设置串口,如设置成功则表示开始工作
End If
MDIMainForm.mnu_replay.Enabled = False 'commom work ,data is come form GPS
End Function
Public Sub SetModeReplay()
Dim strFileName As String
'得到重播的文件名
strFileName = CfWj
If strFileName = "" Then
Exit Sub
End If
StopWorking
On Error GoTo erorrhandle
oCommStream.StopWorking
'设置参数
oReplayStream.SetTimer MDIMainForm.TimerReplay
oReplayStream.SetFileName strFileName
oReplayStream.SetPlaySpeed (1)
oReplayStream.SetContinuous MDIMainForm.mnu_replay_continuous.Checked
oReplayStream.SetPause MDIMainForm.mnu_replay_pause.Checked
oReplayStream.SetReverse MDIMainForm.mnu_replay_pause.Checked
'清除以前的轨迹
MDIMainForm.oTargetManager.ClearTrack
MDIMainForm.mnu_replay.Visible = True
'如果重播失败,则进入停止工作状态
If Not oReplayStream.StartWorking Then
SetModeNone
Exit Sub
End If
'主窗口上的重播菜单显示
MDIMainForm.TimerReplay.Enabled = True
MDIMainForm.mnu_replay.Enabled = True
m_Mode = REPLAY
Display "重播"
Exit Sub
erorrhandle:
MsgBox "错误!", vbOKOnly, "提示"
End Sub
Public Sub SetModeNone()
Dim ddd As String
m_Mode = NONEWORK
If MDIMainForm.oComm1.PortOpen = True Then
ddd = "AT+CNMA" + Chr(13)
MDIMainForm.oComm1.Output = ddd
End If
MDIMainForm.TimerCall.Enabled = False
MDIMainForm.TimerReplay.Enabled = False
oCommStream.StopWorking '关闭串口
MDIMainForm.StatusBar1.Panels(1).Text = ""
MDIMainForm.StatusBar1.Panels(2).Text = ""
DisplayPicture 4
MDIMainForm.mnu_replay.Enabled = False
Cfflag = False
MDIMainForm.TimerCheck.Enabled = False
MDIMainForm.TimerCheck.interval = 0
End Sub
Public Sub DisplayPicture(ByVal nType As Integer)
Select Case nType
Case 1 '正常
Set MDIMainForm.StatusBar1.Panels(2).Picture = MDIMainForm.ImgToolBar1.ListImages("Normal").Picture
Case 2 '无应答
Set MDIMainForm.StatusBar1.Panels(2).Picture = MDIMainForm.ImgToolBar1.ListImages("NoAnwser").Picture
Case 3 '报警
Set MDIMainForm.StatusBar1.Panels(2).Picture = MDIMainForm.ImgToolBar1.ListImages("Alert").Picture
Case 4 '值班
Set MDIMainForm.StatusBar1.Panels(2).Picture = MDIMainForm.ImgToolBar1.ListImages("Null").Picture
End Select
End Sub
Public Sub Display(str As String)
MDIMainForm.StatusBar1.Panels(1).Text = str
MDIMainForm.StatusBar1.Panels(2).Text = ""
MDIMainForm.StatusBar1.Panels(3).Text = LoopTimes * 1 & "秒"
End Sub
Private Sub StopWorking()
MDIMainForm.StatusBar1.Panels(1).Text = ""
MDIMainForm.TimerReplay.Enabled = False
MDIMainForm.TimerCall.Enabled = False
m_I = 0
SetReceiveFlag False
End Sub
Public Sub SetInterval(interval As Long)
m_Interval = interval
If m_Interval < 3000 Then
m_Interval = 3000
End If
If m_Interval > 300000 Then
m_Interval = 300000
End If
'ActivateTimer m_Interval
End Sub
Public Function GetInterval() As Double
'GetInterval = m_Interval
GetInterval = LoopTimes * 1 * 1000
End Function
Public Sub SetReceiveFlag(bReceived As Boolean)
m_ReceiveFlag = bReceived
End Sub
Public Function GetReceiveFlag() As Boolean
GetReceiveFlag = m_ReceiveFlag
End Function
Public Function GetMode() As Integer
GetMode = m_Mode
End Function
Private Sub Class_Initialize()
m_Interval = 8000
m_ReceiveFlag = False
End Sub
Private Sub Class_Terminate()
SaveRPFile Date
End Sub
'save track file
Private Sub SaveRecord(oRecord As CRecord)
Static tLastDate As Date
If Not MDIMainForm.mnuOption_SaveTrack Then Exit Sub
If tLastDate <> Date Then
SaveRPFile tLastDate 'another day history file
End If
m_lCount = m_lCount + 1
ReDim Preserve oRecordArray(m_lCount) As New CRecord
oRecordArray(m_lCount).CopyRecord oRecord 'here put data in MM in a array
If m_lCount >= MaxBound Then
SaveRPFile Date 'save into hard disk
End If
tLastDate = Date
End Sub
Private Sub ClearRecord()
Dim i As Long
For i = 1 To m_lCount
Set oRecordArray(i) = Nothing
Next
m_lCount = 0
End Sub
Private Sub SaveRPFile(CurDate As Date)
Dim oRPFile As New CReplayFile 'CReplayFile is class
Dim i As Integer
If Dir(strPath + "tck\", vbDirectory) = "" Then
MkDir strPath + "tck\"
End If
For i = 1 To m_lCount
oRPFile.SetFileName strPath + "tck\" + Mid(CStr(oRecordArray(i).dTime), 1, 10) + ".tck" 'name of history file
oRPFile.RWOpen
oRPFile.AddRecord oRecordArray(i) 'add record one by one
Next
Set oRPFile = Nothing
ClearRecord 'do clear MM array
End Sub
Public Sub TryAgain(ByVal C_Index As String)
Dim Command_Index As String
If Mid(C_Index, Len(C_Index) - 2, 1) = "N" Then
Command_Index = Mid(C_Index, Len(C_Index) - 12, 10)
Select Case Command_Index
Case "0000000001"
DHFLAG = 1
SingleCallInit
Case "0000000002"
DHFLAG = 2
SingleCallInit
Case "0000000003"
DHFLAG = 3
SingleCallInit
Case "0000000004"
JtInI
Case "0000000006"
LockCarInit
Case "0000000007"
UnLockCarInit
Case "0000000008"
DHFLAG = 4
SingleCallInit
Case "0000000012"
StopCallinit
End Select
End If
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -