Imports System.Management
Imports System.Threading
Imports System.Text.RegularExpressions
Public Class Form1
Public Sub New()
InitializeComponent()
Form2.Show()
BackgroundWorker1.WorkerSupportsCancellation = True
BackgroundWorker1.WorkerReportsProgress = True
AddHandler BackgroundWorker1.DoWork, AddressOf BackgroundWorker1_DoWork
AddHandler BackgroundWorker1.ProgressChanged, AddressOf BackgroundWorker1_ProgressChanged
AddHandler BackgroundWorker1.RunWorkerCompleted, AddressOf BackgroundWorker1_RunWorkerCompleted
BackgroundWorker2.WorkerSupportsCancellation = True
BackgroundWorker2.WorkerReportsProgress = True
AddHandler BackgroundWorker2.DoWork, AddressOf BackgroundWorker2_DoWork
AddHandler BackgroundWorker2.ProgressChanged, AddressOf BackgroundWorker2_ProgressChanged
AddHandler BackgroundWorker2.RunWorkerCompleted, AddressOf BackgroundWorker2_RunWorkerCompleted
End Sub
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Timer1.Start()
End Sub
Public ports() As String
Public com As String
Public rvcdata As String = ""
Public dslog As New DataSet
Public index As String
Public Sub Invoke(ByVal control As Control, ByVal action As Action)
If control.InvokeRequired Then
control.Invoke(New MethodInvoker(Sub() action()), Nothing)
Else
action.Invoke()
End If
End Sub
Public Sub reading()
ListView1.Invoke(Sub() ListView1.Items.Clear())
Dim lineoftext As String
Dim i As Integer
Dim arytextfile() As String
Dim lineoftexts As String
Dim arytextfiles() As String
Dim my_string, position As String
ListView1.Invoke(Sub() ListView1.BeginUpdate())
lineoftext = rvcdata.ToString
arytextfile = Split(lineoftext, "+CMGL", , CompareMethod.Text)
For i = 2 To UBound(arytextfile)
Dim input As String = arytextfile(i)
Dim result() As String
Dim pattern As String = "{:}|(,"")|("","")"
result = Regex.Split(input, pattern)
Dim lvl As New ListViewItem
Dim concat() As String
Dim array(5) As String
array(0) = "null"
array(1) = result(0)
array(2) = result(2)
my_string = result(4)
position = my_string.Length - 2
my_string = my_string.Remove(position, 2)
dslog = returnQuery("select contact_name from tbl_contacts where contact_num = '" + my_string + "'")
If dslog.Tables(0).Rows.Count = 0 Then
array(3) = my_string
Else
array(3) = dslog.Tables(0).Rows(0).Item("contact_name").ToString
End If
concat = New String() {result(6).Substring(0, 20)}
array(4) = result(6).Substring(0, 20)
lineoftexts = arytextfile(i)
arytextfiles = Split(lineoftexts, "+32""", , CompareMethod.Text)
array(5) = arytextfiles(1)
'message
ListView1.Invoke(Sub() ListView1.Items.Add(New ListViewItem(array)))
If dslog.Tables(0).Rows.Count = 0 Then
noReturnQuery("insert into tbl_messages(message_sendrep, message_desc, message_datetime, message_type)values('" + my_string + "','" + arytextfiles(1) + "','" + result(6).Substring(0, 20).ToString + "','RECEIVED')")
Else
noReturnQuery("insert into tbl_messages(message_sendrep, message_desc, message_datetime, message_type)values('" + dslog.Tables(0).Rows(0).Item("contact_name").ToString + "','" + arytextfiles(1).ToString + "','" + result(6).Substring(0, 20).ToString + "','RECEIVED')")
End If
Next
ListView1.Invoke(Sub() ListView1.EndUpdate())
End Sub
Private Sub BackgroundWorker1_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
If SerialPort1.IsOpen Then
With SerialPort1
rvcdata = ""
.Write("AT" & vbCrLf)
Threading.Thread.Sleep(1000)
.Write("AT+CMGF=1" & vbCrLf)
Threading.Thread.Sleep(1000)
.Write("AT+CPMS=""SM""" & vbCrLf)
Threading.Thread.Sleep(1000)
.Write("AT+CMGL=""ALL""" & vbCrLf)
Threading.Thread.Sleep(1000)
'MsgBox(rvcdata.ToString)
'.Write("AT +CMGF =1" & vbCrLf)
''Threading.Thread.Sleep(1000)
'Dim splitnum = 0
'Dim simindex As Integer = 1
'Dim index3 = 3
'Dim index2 = 5
'Dim index1 = 6
'.Write("AT +CMGF = 1" & vbCrLf)
'Threading.Thread.Sleep(100)
'While simindex <> 10
' .Write("AT +CMGR = " & simindex & vbCrLf)
' Threading.Thread.Sleep(100)
' MsgBox(rvcdata.ToString)
' Dim word As String() = Split(rvcdata.ToString, """", 7 + splitnum)
' If word.Length = 5 Then
' Dim word2 As String() = Split(word(index1), "OK", 2 + splitnum)
' ListBox2.Items.Add(word(index3) + "-------------" + word(index2) + "------------" + word2(0))
' Else
' Dim word2 As String() = Split(word(index1), "OK", 2 + splitnum)
' ListBox2.Items.Add(word(index3) + "-------------" + word(index2) + "---------------" + word2(0))
' End If
' ' If (word(3 + 4) = "" And word(1 + 4) = "") Then
' ' GoTo breakloops
' 'End If
' index3 = index3 + 5
' index2 = index2 + 5
' index1 = index1 + 5
' splitnum = splitnum + 6
' simindex = simindex + 1
'End While
End With
End If
reading()
System.Threading.Thread.Sleep(500)
End Sub
Private Sub BackgroundWorker1_ProgressChanged(sender As Object, e As System.ComponentModel.ProgressChangedEventArgs) Handles BackgroundWorker1.ProgressChanged
End Sub
Private Sub BackgroundWorker1_RunWorkerCompleted(sender As Object, e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BackgroundWorker1.RunWorkerCompleted
If e.Cancelled = True Then
Me.tbProgress.Text = "Canceled!"
ElseIf e.Error IsNot Nothing Then
Me.tbProgress.Text = "Error: " & e.Error.Message
Else
Me.tbProgress.Text = "Done!"
Timer2.Start()
End If
End Sub
Private Sub BackgroundWorker2_ProgressChanged(sender As Object, e As System.ComponentModel.ProgressChangedEventArgs) Handles BackgroundWorker2.ProgressChanged
End Sub
Private Sub btn_delete_Click(sender As Object, e As EventArgs) Handles btn_delete.Click
If ListView1.Items.Count = 0 Then
Else
If Not BackgroundWorker2.IsBusy = True Then
index = ListView1.SelectedItems.Item(0).SubItems(1).Text
index = Trim(Replace(index, ":", ""))
BackgroundWorker2.RunWorkerAsync()
End If
End If
End Sub
End Class