Trang 1 trên tổng số 5 123... Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 49 kết quả

Đề tài: Gửi tin nhắn sms bằng C# thông qua USB 3G hay modem GSM hay Mobile

  1. #1
    Ngày gia nhập
    05 2011
    Bài viết
    78

    Mặc định Gửi tin nhắn sms bằng C# thông qua USB 3G hay modem GSM hay Mobile

    1. Giới thiệu
    Trong bài viết này, mình sẽ hướng dẫn làm cách nào để có thể gửi tin nhắn sms đến các thiết bị wireless (như di động chẳng hạn), bạn chỉ cần có một ít hiểu biết cơ bản về c# và ngôn ngữ SQL để làm được chương trình này. Việc giải quyết ở đây có thể được sử dụng một cái modem gsm được gắn vào PC gửi đi 1 tin nhắn hay bạn có thể sử dụng với kết nối IP sms
    2. Cấu trúc hệ thống
    Cấu trúc hệ thống được sử dụng cho việc gửi sms bao gồm 1 GSM modem (hoặc 3G) - tức nhiên là nó được gắn vào máy tính, một phần mềm SQL-SMS gateway được cài đặt vào máy tính, một CSDL SQL như SQL express hay MS SQL và một chương trình gửi tin bằng C# (hình 1). Như bạn đã thấy trong hình vẽ dưới, ứng dụng gửi tin nhắn của bạn sẽ tạo ra một record trong cơ sở dữ liệu. SMS Gateway sẽ lấy ra dòng vừa tạo bằng câu lệnh select và sẽ gửi nó đi thông qua 1 GSM modem hay 3G.
    Hình 1: Cấu trúc hệ thống

    3. Chuẩn bị cơ sở dữ liệu
    Để cho cấu trúc trên có thế chạy được, đầu tiên bạn phải chuẩn bị một cơ sở dữ liệu. Cơ sở dữ liệu gồm 2 bảng. Một sẽ được sử dụng cho việc gửi sms (ozekimessageout) và một bảng được sử dụng cho việc nhận tin nhắn (ozekimessagein)
    Cấu trúc của cơ sở dữ liệu như sau:
    T-SQL Code:
    1. create database ozeki
    2. GO
    3.  
    4. use database ozeki
    5. GO
    6.  
    7. CREATE TABLE ozekimessagein (
    8.  id int IDENTITY (1,1),
    9.  sender varchar(30),
    10.  receiver varchar(30),
    11.  msg varchar(160),
    12.  senttime varchar(100),
    13.  receivedtime varchar(100),
    14.  operator varchar(30),
    15.  msgtype varchar(30),
    16.  reference varchar(30),
    17. );
    18.  
    19. CREATE TABLE ozekimessageout (
    20.  id int IDENTITY (1,1),
    21.  sender varchar(30),
    22.  receiver varchar(30),
    23.  msg varchar(160),
    24.  senttime varchar(100),
    25.  receivedtime varchar(100),
    26.  operator varchar(100),
    27.  msgtype varchar(30),
    28.  reference varchar(30),
    29.  status varchar(30),
    30.  errormsg varchar(250)
    31. );
    32.  
    33. GO
    34.  
    35. sp_addLogin 'ozekiuser', 'ozekipass'
    36. GO
    37.  
    38. sp_addsrvrolemember 'ozekiuser', 'sysadmin'
    39. GO
    4.Cầu hình cho SMS gateway
    SMS gateway mà tôi sử dụng trong bài viết này là Ozeki NG - SMS Gateway, bạn có thể download tại đây: ozekisms.com. Hiện nay, có rất nhiều chương trình SMS gateway khác nhưng tôi chọn chương trình này vì nó có rất nhiều ưu điểm nổi bật ( it is very reliable, easy to configure and it is based on .NET). Sau khi cài đặt Ozeki NG, bạn thực hiện các bước sau để cầu hình:
    Bước 1: Open _http://127.0.0.1:9501 in Internet Explorer, login with admin/abc123 (cái này thì tùy, nếu trên chrome thì khi cài đặt xong là người ta bắt tạo tài khoản... Chương trình được khuyên dùng trên IE và firefox)
    Bước 2: Vào "Serviceprovider connections", click on "Add service provider connection", sau đó chọn "GSM Modem Connection" và click "Install".
    Bước 3:Trên form tùy chỉnh GSM modem, chọn cổng com và click vào autodetect để cấu hình modem của bạn
    Bước 4: In the "Users and applications" menu click on "Add user", the select "Database user" and click on "install"

    Bước 5: For username provide "sql1"

    Bước 6: Chọn kiểu kết nối là "OleDb" (có thể chọn các kiểu kểt nối khác), tiếp tục nhập đoạn code sau:

    Provider=SQLNCLI;Server=.\SQLEXPRESS;User ID=ozekiuser;password=ozekipass;Database=ozeki;Per sist Security Info=True
    Đối với các kiểu kết nối khác, ta sẽ có các dòng code kết nối khác: ozekisms.com/sms-gateway/index.php?ow_page_number=305

    Bước 7: Trong form cấu hình, tôi khuyên bạn bật SQL loggin. Bạn có thể làm như thế bằng cách checkboxes: "Log SQL SELECT statements" and "Log SQL UPDATE statements"

    5. Tạo ứng dụng gửi tin nhắn bằng SMS
    - Thiết kế form như hình dưới

    - Trên sự kiện click của nut send (button 1)
    Visual C# Code:
    1.         private void button1_Click(object sender, EventArgs e)
    2.         {
    3.             try
    4.             {
    5.                 //Connect to the database
    6.                 OleDbConnection conn = new OleDbConnection();
    7.  
    8.                 conn.ConnectionString = "Provider=SQLNCLI;Server=.\\;"+
    9.                 "User ID=ozekiuser;password=ozekipass;Database=ozeki;Persist
    10.                Security Info=True";
    11.                 conn.Open();
    12.                 if (conn.State == ConnectionState.Open)
    13.                 {
    14.                     //Send the message
    15.                     OleDbCommand cmd = new OleDbCommand();
    16.                     cmd.Connection = conn;
    17.                     string SQLInsert =
    18.                         "INSERT INTO "+
    19.                         "ozekimessageout (receiver,msg,status) "+
    20.                         "VALUES "+
    21.                         "('"+tbSender.Text+"','"+tbMsg.Text+"','send')";
    22.                     cmd.CommandText = SQLInsert;
    23.                     cmd.ExecuteNonQuery();
    24.                     MessageBox.Show("Message sent");
    25.                 }
    26.  
    27.                 //Disconnect from the database
    28.                 conn.Close();
    29.             }
    30.             catch (Exception ex)
    31.             {
    32.                 MessageBox.Show(ex.Message);
    33.             }
    34.  
    35.         }
    OK. Bạn hãy test thử với ứng dụng của bạn. Mình đã test thành công. Bài được dịch từ http://www.ozekisms.com/ . Do vốn kiến thức anh văn còn hạn hẹp nên dịch có thể không được hay, mong mọi người thông cảm. hi.

  2. #2
    Ngày gia nhập
    10 2007
    Nơi ở
    /root
    Bài viết
    318

    Cách này lệ thuộc vào SMS Gateway, với việc gửi SMS chỉ cần sử dụng AT Command là send SMS được rồi.
    What you see is never what you get...

  3. #3
    Ngày gia nhập
    09 2009
    Bài viết
    36

    Trích dẫn Nguyên bản được gửi bởi Tab Xem bài viết
    Cách này lệ thuộc vào SMS Gateway, với việc gửi SMS chỉ cần sử dụng AT Command là send SMS được rồi.
    Mình đồng ý với ý kiến của bạn... Tại sao mình không dùng AT comand để gửi SMS.
    Vừa đơn giản vừa dể xử lí, bắt lỗi..

    Mình hay viết nó để Spam SMS nhân dịp mấy dịp lễ

  4. #4
    Ngày gia nhập
    04 2009
    Bài viết
    35

    Smile Xin hỏi 1 số vấn đề khi sử dụng lệnh ATcommand gửi SMS???

    Tình hình là em có làm 1 module nhỏ trong hệ thống Website của em là gửi SMS đến điện thoại, sủ dụng USB 3G Viettel

    Em không hiểu sao khi cắm USB 3G viettel vào nếu ko kết nối mạng 3G thì gửi được SMS bình thường.
    Còn khi mình kết nối với mạng 3G của viettel thì không gửi được nó báo lỗi là cái cổng COM đó đã được sử dụng bởi 1 chương trình khác.

    Thứ 2 cho em hỏi khi mình Load Port sau khi cắm USB 3G thì nó load được những 3 Port COM ví dụ
    COM 4, COM 5, COM 17
    Thì làm sao cho người dùng chọn đúng COM cần thao tác tức là không chế sao cho nó chỉ Load đúng cổng 1 COM duy nhất mà ta cần thao tác.

    Có ai đã từng làm module này chỉ em với ạ.
    Thanks!

  5. #5
    Ngày gia nhập
    01 2011
    Bài viết
    46

    Angry AutoConect_Demo

    Update tuy nhiên vẫn còn lỗi. do cho cái usb3g rồi nên không có đồ làm tiếp )
    Cái này tương thích với vài dòng điện thoại hỗ trợ làm modem kết nối internet
    http://www.mediafire.com/download/45rkfk3k0hnfgkd/Debug.7z
    Một số điện thoại có cấu trúc sms khác nhau nên đọc hơi lộn xộn.

    AutoConect_Demo
    http://www.mediafire.com/download/ba385e1skxgur5o/HuuanSms.exe
    Đã được chỉnh sửa lần cuối bởi huuanhuynh : 14-01-2013 lúc 05:10 PM. Lý do: Update tránh đào mộ

  6. #6
    Ngày gia nhập
    04 2009
    Bài viết
    35

    Lightbulb Gửi tin nhắn sms bằng C# thông qua USB 3G hay modem GSM hay Mobile

    Bạn đã từng làm cái này bạn có thể trả lời câu hỏi của mình được không?
    Mình đang vướng sử lý chỗ đó.
    Thanks!

  7. #7
    Ngày gia nhập
    09 2011
    Bài viết
    43

    Trích dẫn Nguyên bản được gửi bởi hoangtk6 Xem bài viết
    Tình hình là em có làm 1 module nhỏ trong hệ thống Website của em là gửi SMS đến điện thoại, sủ dụng USB 3G Viettel

    Em không hiểu sao khi cắm USB 3G viettel vào nếu ko kết nối mạng 3G thì gửi được SMS bình thường.
    Còn khi mình kết nối với mạng 3G của viettel thì không gửi được nó báo lỗi là cái cổng COM đó đã được sử dụng bởi 1 chương trình khác.

    Thứ 2 cho em hỏi khi mình Load Port sau khi cắm USB 3G thì nó load được những 3 Port COM ví dụ
    COM 4, COM 5, COM 17
    Thì làm sao cho người dùng chọn đúng COM cần thao tác tức là không chế sao cho nó chỉ Load đúng cổng 1 COM duy nhất mà ta cần thao tác.

    Có ai đã từng làm module này chỉ em với ạ.
    Thanks!
    Khi bạn sử dụng chương trình của Viettel thì đương nhiên chương trình đó chiếm mất cái cổng COM rồi , làm gì còn cổng cho bạn chạy chương trình của bạn nữa
    Còn vấn đề 3 cổng thì thử từng cái 1 thôi, khi chọn dc 1 cái rồi thì lưu cái cổng đó vào chương trình của bạn, khi chương trình chạy thì nó sẽ tìm đúng cái cổng đó thôi.
    ko có hình cụ thể nên mình chỉ giải thích dc như thế.

  8. #8
    Ngày gia nhập
    04 2009
    Bài viết
    35

    Trích dẫn Nguyên bản được gửi bởi sparrows_91 Xem bài viết
    Khi bạn sử dụng chương trình của Viettel thì đương nhiên chương trình đó chiếm mất cái cổng COM rồi , làm gì còn cổng cho bạn chạy chương trình của bạn nữa
    Còn vấn đề 3 cổng thì thử từng cái 1 thôi, khi chọn dc 1 cái rồi thì lưu cái cổng đó vào chương trình của bạn, khi chương trình chạy thì nó sẽ tìm đúng cái cổng đó thôi.
    ko có hình cụ thể nên mình chỉ giải thích dc như thế.
    Cảm ơn bạn.
    Như vấn đề là mình cho Load Port COM ra 1 cái conbobox và nó Load được những 3 Port COM
    như trên mình nói ấy.
    và mình bắt người dùng phải select đúng cổng COM cần thao tác chẳng hạn Cổng COM 17, nếu người dùng Load cổng COM 4 thì chương trình sẽ bao lỗi, Ý mình là chỉ cho Load đúng 1 cổng 17 thôi.vì người dùng người ta biết chọn cổng nào cho đúng đâu.
    Như chương trình AutoConect_Demo của bạn "huuanhuynh" chỉ load được đúng 1 cổng cần thao tác đấy
    không biết bạn có thể chia sẻ cho mình cách chọn port không.
    Thanks!

  9. #9
    Ngày gia nhập
    01 2011
    Bài viết
    46

    Mặc định AutoConect

    Trích dẫn Nguyên bản được gửi bởi hoangtk6 Xem bài viết
    Bạn đã từng làm cái này bạn có thể trả lời câu hỏi của mình được không?
    Mình đang vướng sử lý chỗ đó.
    Thanks!
    Mình cũng đang tập tành viết cái này thôi. Vẫn đang làm nên chưa hoàng chỉnh lắm!
    Cách mình làm ở trên là duyệt qua từng port, kết nối thử, gửi lệnh thử, nếu ok thì return
    Đương nhiên nếu cổng đang bị chiếm nó sẽ tự chọn cổng tiếp theo.

    Cái usb 3g có thể gửi lệnh AT qua nhiều cổng khác nhau chứ không nhất thiết là một cổng.
    Thế nên dù mở chương trình Viettel lên rồi vẫn có khả năng kết nối được!

    Bạn nghiên cứu đi nhé, mình cũng đang nghiên cứu

  10. #10
    Ngày gia nhập
    04 2009
    Bài viết
    35

    Hàm nào hay thuốc tính nào của thằng SerialPort để kiểm tra xem cổng COM đó có đang bị nắm giữ không hả bạn?

Các đề tài tương tự

  1. Cách nào gửi tin nhắn từ GSM modem với tin nhắn lớn hơn 160 ký tự?
    Gửi bởi convitza trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 4
    Bài viết cuối: 17-03-2013, 06:48 PM
  2. Q Smart S12- hàng chính hãng q mobile, giá tốt nhất
    Gửi bởi vitbaba trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 20-11-2012, 01:27 AM
  3. Q mobile P8 tính năng cực đỉnh giá tốt nhất thị trường
    Gửi bởi bibibyby trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 20-07-2012, 06:17 PM
  4. GSM MODEM - Nhắn tin quảng cáo hàng loạt
    Gửi bởi Alice Tran89 trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 04-04-2011, 11:22 AM
  5. Algorithm Nhận SMS thông qua GSM modem bang C#
    Gửi bởi dragon1702 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 0
    Bài viết cuối: 24-01-2011, 07:59 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn