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:
và dưới đây là giao diện nhận tin nhắn SMS
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
DOWNLOAD SOURCE
Hay