03/10/2018, 13:25

[VB.NET] Chia sẽ source code gởi và nhận tin nhắn SMS từ Dcom 3G sử dụng AT Command

Xin chào các bạn, bài viết hôm nay mình sẽ chia sẽ cho các bạn source code gởi và nhận tin nhắn từ thiết bị Dcom 3G sử dụng tập lệnh AT command trong lập trình VB.NET . Dưới đây là giao diện gởi và nhận tin nhắn: và dưới đây là ...

Xin chào các bạn, bài viết hôm nay mình sẽ chia sẽ cho các bạn source code gởi và nhận tin nhắn từ thiết bị Dcom 3G sử dụng tập lệnh AT command trong lập trình VB.NET.

Dưới đây là giao diện gởi và nhận tin nhắn:

send sms message vb.net

và dưới đây là giao diện nhận tin nhắn SMS

Nhận tin nhắn sms vb.net

Source code Send and Receive SMS VB.NET

Imports System.ComponentModel
Imports System.Text
Imports DevExpress.XtraEditors
Imports System.IO
Imports System.IO.Ports
Imports System.Threading
Imports System.Text.RegularExpressions
Imports System.Data.OleDb
Imports VB = Microsoft.VisualBasic.Strings

Namespace CsWinFormsBlackApp
    Partial Public Class frm_sendsms
        Inherits DevExpress.XtraEditors.XtraForm
        Public Sub New()
            InitializeComponent()
        End Sub
        Public strconnect As New OleDbConnection
        Public Sub open_connect()
            Try
                strconnect.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & System.Windows.Forms.Application.StartupPath() & "Database.mdb"
                strconnect.Open()
            Catch ex As Exception
                ' XtraMessageBox.Show("Lỗi kết nối đến máy chủ. Vui lòng thử lại.")
            End Try
        End Sub

        Public Sub close_connect()
            strconnect.Close()
        End Sub
        Private Sub frm_sendsms_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            _LoadData()
            Dim ports As String() = SerialPort.GetPortNames
            Dim port As String
            For Each port In ports
                cbo_Port.Properties.Items.Add(port)
            Next port
            cbo_Port.SelectedIndex = 0
        End Sub

        Private Sub btnKetNoi_Click(sender As Object, e As EventArgs) Handles btnKetNoi.Click
            If SerialPort1.IsOpen Then
                btnKetNoi.Text = "&Kết nối"
                Me.Text = "Tình trạng chưa kết nối với thiết bị " & cbo_Port.Text
                SerialPort1.Close()
                cbo_Port.Enabled = True
                btnNgungNhanTin_Click(sender, e)
            Else
                Try
                    With SerialPort1
                        .PortName = cbo_Port.Text
                        .BaudRate = 115200
                        .Parity = Parity.None
                        .StopBits = StopBits.One
                        .DataBits = 8
                        .Handshake = Handshake.RequestToSend
                        .DtrEnable = True
                        .RtsEnable = True
                        .NewLine = vbCrLf
                        .Open()
                    End With
                    btnKetNoi.Text = "&Ngắt kết nối"
                    Me.Text = "Đã kết nối với thiết bị port " & cbo_Port.Text
                    cbo_Port.Enabled = False
                Catch ex As Exception
                    Me.Text = "Lỗi kết nối..."
                End Try
                btnNhanTinNhan_Click(sender, e)
            End If
        End Sub
        Private Sub btn_Guitinnhan_Click(sender As Object, e As EventArgs) Handles btn_Guitinnhan.Click
            Dim MESS As String = txt_NoiDung.Text
            Try
                If SerialPort1.IsOpen Then
                    With SerialPort1
                        .Write("AT" & vbCrLf)
                        .Write("AT+CMGF=1" & vbCrLf)
                        .Write("AT+CMGS=" & Chr(34) & txt_SoDT.Text & Chr(34) & vbCrLf)
                        .Write(MESS & Chr(26))
                    End With
                    Me.Text = "Đã gởi tin nhắn thành công!"
                Else
                    Me.Text = "Lỗi chưa chọn port kết nối"
                End If

            Catch ex As Exception
                Me.Text = ex.Message
            End Try
        End Sub

        Private Sub btnNhanTinNhan_Click(sender As Object, e As EventArgs) Handles btnNhanTinNhan.Click
            Timer1.Enabled = True
            btnNgungNhanTin.Enabled = True
            btnNhanTinNhan.Enabled = False
            Me.Text = "Đang chờ nhận lệnh..."
        End Sub

        Private Sub btnNgungNhanTin_Click(sender As Object, e As EventArgs) Handles btnNgungNhanTin.Click
            Timer1.Enabled = False
            btnNgungNhanTin.Enabled = False
            btnNhanTinNhan.Enabled = True
            XoaTinNhan()
            Me.Text = "Ngưng nhận lệnh thực thi"
        End Sub
        Private Sub XoaTinNhan()
            If SerialPort1.IsOpen Then
                With SerialPort1
                    .Write("AT+CMGD=1,4" & vbCrLf)
                End With
            Else
                Me.Text = "Lỗi chưa chọn port kết nối"
            End If
        End Sub
        Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
            If SerialPort1.IsOpen Then
                With SerialPort1
                    .Write("AT+CMGL=" & Chr(34) & "REC UNREAD" & Chr(34) & vbCrLf)
                End With
                Dim response As String = SerialPort1.ReadExisting()
                'Dim r As New Regex("+CMGL: (d+),""(.+)"",""(.+)"",(.*),""(.+)""
(.+)
")
                Dim r As New Regex("+CMGL: (d+),""(.+)"",""(.+)"",(.*),""(.+)""
(.+)
(.+)")
                Dim m As Match = r.Match(response)
                txt_HienThi_Lenh.Text = response

                'get ngày tháng
                Dim id As String = m.Groups(1).Value
                Dim sodt As String = m.Groups(3).Value
                Dim noidung As String = m.Groups(6).Value
                Dim noidung2 As String = m.Groups(7).Value
                Dim website As String = ""

                Dim ngaythang As String = m.Groups(5).Value
                If _kiemtra("select count(*) from tbl_log where createdDate='" & ngaythang & "'") <> "1" Then
                    If noidung <> "" Then
                        'Dim FinalStr As String = noidung.Replace(ControlChars.Lf, ",")
                        'Dim TestArray() As String = Split(FinalStr, ",")
                        'For i As Integer = 0 To TestArray.Length - 1
                        '    If TestArray(i) <> "" Then
                        '        If i = 0 Then
                        '            noidung2 = TestArray(0)
                        '        Else
                        '            Dim a As String = TestArray(i)
                        '            If a.Length > 2 Then
                        '                website = a
                        '            End If
                        '        End If
                        '    End If
                        'Next
                        _Save("Insert into tbl_log(phone, content, createdDate, website) values('" & sodt & "','" & noidung & "','" & ngaythang & "','" & noidung2 & "')")
                        m = m.NextMatch()
                    End If
                End If
            Else
                Me.Text = "Lỗi chưa chọn port kết nối"
            End If
            XoaTinNhan()
            _LoadData()
        End Sub
        Dim cmd As New OleDbCommand
        Dim da As New OleDbDataAdapter
        Dim dt As New DataTable
        Public Sub _LoadData()
            open_connect()
            cmd = strconnect.CreateCommand
            cmd.CommandText = "select * from tbl_log order by id DESC"
            dt.Clear()
            da.SelectCommand = cmd
            da.Fill(dt)
            GridControl1.DataSource = dt
            close_connect()
        End Sub
        Public Function _kiemtra(ByVal strLenh As String) As String
            Dim str As String
            open_connect()
            Dim cmd As New OleDbCommand(strLenh, strconnect)
            str = cmd.ExecuteScalar().ToString
            close_connect()
            Return str
        End Function
        Public Sub _Save(ByVal strLenh As String)
            open_connect()
            Dim cmd As New OleDbCommand(strLenh, strconnect)
            cmd.ExecuteNonQuery()
            close_connect()
        End Sub

        Private Sub cbo_Port_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cbo_Port.SelectedIndexChanged

        End Sub
    End Class
End Namespace

HAPPY CODING heart

DOWNLOAD SOURCE

Tags: at commandsmsdcom 3g
Trần Tiến viết 21:26 ngày 19/10/2018

Hay

0