หน้าแรก
 การบ้าน
  C/C++ new
  Java new
  Windows Phone
  แจ้งเรื่องที่ต้องการ
 บทความ
  .NET
  Android
  Blackberry
  C++Builder
  Delphi
  Java
  Mobile
  Open Source
  Pocket PC
  Visual Basic
  Web
  Windows Phone
  Others
 แบบเรียนฟรี
  ASP
  ASP.NET Webmatrix
  C++
  eVB
  J2ME
  Java
  PHP
 ซอร์สโค้ด
  Android
  ASP
  C++
  VC++
  CGI-Perl
  Delphi
  Java
  jQuery
  PHP
  Visual Basic
  .NET
 บริการจากเรา
  เปิดท้าย... ขายโค้ด
  Freeware
  อัตราค่าโฆษณา
  รายชื่อลูกค้า
  สถิติผู้เข้าเว็บ
 ดาว์นโหลด
 ค้นหาข้อมูล
 กระดานสนทนา
  .NET
  C/C++
  Delphi
  Java
  Palm/PocketPC
  Visual Basic
  Web
  อื่นๆ
 กระดานงาน
 ลิงค์เว็บ
 เกี่ยวกับผม
 อัตราค่าโฆษณา
Social Network

Facebook  Twitter  YouTube
 New Article
 Webboard
 Freelanceboard
Freeware
โปรแกรมเบอร์ดี (BerDee)
โปรแกรมเบอร์ดี (Android)
เกมส์เป่ายิ้งฉุบ
เกมส์เป่ายิ้งฉุบ(Android)
WebcamMonitor
WebcamMonitor(Windows)
scSendMail
scSendMail(Windows)
MSN Caption
MSN Caption(Windows)
  Freelance comment
  ติดต่อสอบถามมาได้ตลอดนะ...
2015-07-29 13:35:58
  ถ้าผมต้องการเว็บที่พัฒน...
2015-01-18 15:33:54
  ถ้าผมต้องการเว็บที่พัฒน...
2015-01-18 15:32:51
  ติดต่อสอบถามเข้ามาได้นะ...
2014-01-06 12:47:38
  ถ้ายังหาคนสอนไม่ได้ ก็ลอ...
2013-07-06 01:04:37
  สนใจส่งขอบเขตมาคุยราคาก...
2013-03-24 18:54:20
  ถ้ายังไม่มีคนรับงานติดต...
2012-12-16 19:18:14
  สนใจคะ ติดต่อ 0905076277...
2012-11-12 11:07:46
  รับทำโปรเจ็คนักศึกษาหรื...
2012-10-29 03:10:46
  sukit_te34@hotmail.com...
2012-10-29 03:09:36
  Webboard comment
  เขียนโปรแกรมภาษาจาวา
1.โ...

2023-09-12 11:40:28
  ต้องลอง debug ดูเองครับ
ไล่...

2023-06-08 18:03:06
  ร้านค้าแห่งหนึ่ง จะต้องน...
2021-09-21 08:47:08
  จงเขียนโปรแกรมดำเนินการ...
2021-05-07 15:06:11
  จงเขียนโปรแกรมสำหรับคำน...
2021-03-09 14:21:45
  ขอดู...
2021-01-04 23:56:45
  ขอโค้ดเพื่อทำการเรียนกา...
2020-12-09 23:02:09
  แล้ว ?...
2020-12-09 10:56:34
  จ้า...
2020-10-18 16:53:21
  พอดีผมเหลื่อแค่ตัดสต๊อก...
2020-05-31 21:49:43
  Homework comment
  เขียนโปรแกรมเพื่อรับค่า...
2022-02-24 10:45:17
  จากโค้ดนี้อะครับ พอดีลอง...
2021-03-22 01:22:39
  จากโค้ดนี้อะครับ พอดีลอง...
2021-03-22 01:22:39
  โจทย์การบ้าน c++ เขียนรูปแ...
2020-04-06 11:01:33
  แบบนี้ขอเป็น ภาษา php หน่อย...
2019-09-18 14:36:34
  ผมไม่อยากให้คุณได้คะแนน...
2019-04-27 01:29:07
  อาจารย์เขาบอกแนวข้อสอบม...
2019-04-27 00:44:29
  ขอสอบถามการเขียน c++ ครับ เ...
2018-04-02 12:19:21
  โค้ดตัวอย่างศึกษาให้เข้...
2017-11-26 14:50:05
  คำนวณค่าน้ำโดยรับค่ามิเ...
2017-11-20 23:15:26
  Article comment
  เท่าที่อ่าน error คือพื้นที่...
2022-03-23 13:56:48
  เรียน สอบถามปัญหา กับ อ.คร...
2022-01-24 17:39:49
  ต้องการ ให้เขียน โปรแกรม ...
2019-12-09 11:39:58
  รับเขียน arx จาก vc++ 2017 ล็อคโปร...
2019-09-19 09:48:09
  ทำการ register ไฟล์ที่ชื่อ mswinsck.oc...
2019-09-17 14:05:56
  ใน vb 6 ไม่มี component winsock เลยค่ะ ส...
2019-09-03 10:31:02
  รบกวนขอสอบถามหน่อยนะครั...
2019-03-04 05:31:04
  สามารถนำตัวหนังสือจากภา...
2018-12-25 08:54:32
  มีcode ของ VB ไหมค่ะ ถ้ามีรบกว...
2017-09-28 16:50:02
  น่าจะได้ครับ ไม่เคยลอง
...

2017-07-11 09:59:35
  9Mcode comment

Link Exchange

อัตราค่าโฆษณา
 
 eMbedded Visual Basic Tutorial  

- - - - - - - - - - - - - - ผู้ให้การสนับสนุน- - - - - - - - - - - - - -

 eMbedded Visual Basic
 
 

บทที่ 6 โปรแกรมส่งข้อความผ่าน SMS

 

SMS (Short Message Service) เป็นบริการที่อาศัยการจัดส่งข้อความผ่านทางมือถือ ไปสู่มือถืออีกเครื่อง ซึ่งในปัจจุบันนี้ ได้ถูกจัดว่าเป็นการสื่อสารที่รับความนิยมกันเป็นอย่างสูงประเภทนึง และได้มีการประยุกต์ใช้ในด้านต่างๆ เช่น การส่ง SMS ผ่านทางเว็บไซต์ และการแสดงความคิดเห็นผ่าน SMS ไปสู่หน้าจอรายการโทรศัพท์

และสำหรับการพัฒนาโปรแกรมสำหรับอุปกรณ์ Pocket PC รุ่น 2002 หรือรุ่นอื่นๆ ที่สามารถใช้เป็นโทรศัพท์ได้ด้วยนั้น คุณสามารถพัฒนาโปรแกรม ให้ Pocket PC ของคุณสามารถส่ง SMS ตามที่คุณต้องการได้ โดยตัวอย่างโปรแกรมนี้ จะเป็นการสร้างหน้าต่างที่ประกอบด้วยช่องสำหรับการใส่หมายเลขโทรศัพย์มือถือปลายทาง ที่ต้องการส่งข้อความ SMS ไปถึง โดยจะมีรูปแบบของหมายเลขโทรศัพท์ต่างประเทศจะเป็นในลักษณะ

+<รหัสประเทศ><หมายเลขเครือข่าย><หมายเลขโทรศัพท์>

ซึ่งสำหรับประเทศไทยนั้นจะมี รหัสประเทศ เป็นหมายเลข 66 และจะมีหลายเลขเครือข่ายตั้งแต่ 01 ถึง 09 โดยคุณจะต้องทำการตัดหมายเลข 0 ทิ้งออกไป ตัวอย่างเช่น คุณต้องการจะส่ง SMS ไปสู่หมายเลข 01-3042109 ดังนั้นคุณจะต้องป้อนหมายเลขโทรศัพท์มือถือที่ต้องการส่งคือ +6613042109 วิธีการที่ได้กล่าวมาข้างต้นจะใช้สำหรับการส่ง SMS ไปยังหมายเลขของต่างประเทศได้ หากคุณระบุรหัสประเทศและเลขหมายได้ถูกต้อง นอกจากวิธีการระบุหมายเลขโทรศัพท์ดังกล่าวแล้ว คุณสามารถป้อนหลายเลขสั้นๆโดยไม่จำเป็นต้องระบุรหัสประเทศ เช่น 013042109 เพื่อให้ส่ง SMS ภายในประเทศ

องค์ประกอบของโปรแกรมอีกส่วนคือ ต้องมีช่อง สำหรับการใส่ข้อความ ซึ่งตามข้อกำหนดของการส่ง SMS จะสามารถส่งได้สูงสุดที่ 160 ตัวอักษร ทำให้คุณต้องเขียนโปรแกรมเพื่อตรวจสอบ จำนวนของข้อความ ก่อนการส่งข้อความผ่าน SMS ที่รองรับข้อความได้ไม่เกิน 160 ตัวอักษรเท่านั้น ซึ่งในตัวอย่างจะไม่ได้กล่าวไว้

สำหรับในตัวอย่างนี้ โปรแกรมจะไม่สามารถแสดงผลการทำงานผ่านทาง Emulator ได้ เหตุผลก็เนื่องมาจาก Emulator ไม่มีชุดคำสั่งในส่ง SMS มาด้วย ดังนั้นคุณจะต้องทำการพัฒนาแล้วนำโปรแกรมสร้างเป็นตัวติดตั้ง (อ่าน การสร้างโปรแกรมติดตั้ง เพิ่มเติม) และนำไปทดสอบบนเครื่อง Pocket PC ที่มีระบบโทรศัพท์ในตัวเท่านั้น

Downloadดาวน์โหลดโปรแกรม

ออกแบบหน้าตาโปรแกรม

  • ทำการเปิดโปรแกรม eVB ผ่านทางเมนู Start->Programs->Microsoft eMbedded Tools->eMbedded Visual Basic 3.0
  • คลิกเลือก File->New Project หรือกดปุ่ม Ctrl+N จะปรากฏหน้าต่าง ให้ทำการเลือก Windows CE for Pocket PC 2002 แล้วคลิกปุ่ม OK

รูปแสดง การเลือกสร้าง Project ใหม่
รูปแสดง การเลือกสร้าง Project ใหม่

  • ทำการวาง คอนโทรลต่างๆไว้ บนฟอร์ม ซึ่งประกอบด้วย Textbox 2 อัน และ CommandButton 1 อัน ดังรูป

รูปแสดง การวางคอนโทรลต่างๆไว้บนฟอร์ม
รูปแสดง การวางคอนโทรลต่างๆไว้บนฟอร์ม

  • คลิกเลือกที่คอนโทรลแต่ละตัว และทำการเปลี่ยนค่า Property ตามตารางด้านล่าง
Control Property Value
CommandButton Name cmdSend
  Caption Send SMS
TextBox1 Name txtNumber
  Text 013042109
TextBox2 Name txtMessage
  Text  
  MultiLine True
  • จะได้ผลการกำหนด Property ดังรูป

รูปแสดง ผลที่ได้จากการกำหนด Property ให้กับปุ่ม
รูปแสดง ผลที่ได้จากการกำหนด Property ให้กับปุ่ม

เพิ่มโมดูล (Module) และ API ของการส่ง SMS

สำหรับในขั้นตอนนี้จะทำการเพิ่ม โมดูล เข้ามาเพื่อจะใช้ในการประกาศตัวแปรที่เกี่ยวข้อง และฟังก์ชั่น API (Application Programming Interface) เพื่อเรียกใช้งาน สำหรับ API นั้น เป็นวิธีการประกาศ ฟังก์ชั่นเพื่อเรียกใช้คำสั่งของระบบ เช่นในตัวอย่างนี้ จะเป็นการเรียกใช้ API สำหรับการส่ง SMS ขั้นตอนในการสร้างโมดูลจะเริ่มจาก

  • คลิกเลือกที่เมนู Project->Add Module จะปรากฏหน้าต่าง Add Module ให้คุณคลิกปุ่ม Open คุณจะได้หน้าต่าง สำหรับป้อนโค้ด ในส่วนของโมดูล ดังรูป

รูปแสดง หน้าต่างของโมดูล
รูปแสดง หน้าต่างของโมดูล

รูปแสดง รายการโมดูล ที่เพิ่มเข้ามาสู่โปรเจค
รูปแสดง รายการโมดูล ที่เพิ่มเข้ามาสู่โปรเจค

  • จะสังเกตุได้ว่าในส่วนของ Property เราสามารถเปลี่ยนชื่อของ โมดูลได้ตามต้องการ
  • ให้ทำการป้อนโค้ด ตามตารางลงไปในส่วนของโมดูล
Option Explicit

Public Declare Function SmsOpen Lib "SMS" _
        (ByVal ptsMessageProtocol As String, _
        ByVal dwMessageModes As Long, _
        ByRef psmshHandle As Long, _
        ByRef phMessageAvailableEvent As Long) As Long
Public Declare Function SmsSendMessage Lib "SMS" _
        (ByVal smshHandle As Long, _
        ByVal psmsaSMSCAddress As Long, _
        ByVal psmsaDestinationAddress As String, _
        ByVal pstValidityPeriod As Long, _
        ByVal pbData As String, _
        ByVal dwDataSize As Long, _
        ByVal pbProviderSpecificData As String, _
        ByVal dwProviderSpecificDataSize As Long, _
        ByVal smsdeDataEncoding As Long, _
        ByVal dwOptions As Long, _
        ByRef psmsmidMessageID As Long) As Long
Public Declare Function SmsClose Lib "SMS" _
        (ByVal smshHandle As Long) As Long
  
Public Const SMS_MSGTYPE_TEXT = "Microsoft Text SMS Protocol"
Public Const SMS_MODE_SEND = 2            ' Open in send mode
Public Const SMSDE_GSM = 2                ' Use standard GSM  encoding
Public Const SMSAT_INTERNATIONAL = 66      ' International number  Format
Public Const PS_MESSAGE_OPTION_NONE = 0   ' No message options
Public Const PS_MESSAGE_CLASS0 = 0        ' Send immediately
Public Const PSRO_NONE = 0                ' No replacements
Public Const SMS_OPTION_DELIVERY_NONE = 0 ' No delivery options
  

'******************************************************************************
' Implements UDT value conversion functions
'******************************************************************************
' FileName:  basUDTConv.bas
' Creator:   Christian Forsberg
' Created:   2002-06-06
'******************************************************************************
' Version   Date   Who Comment
' 00.00.000 020606 CFO Created
'******************************************************************************

Function LongToBytes(ByVal Value As Long) As String
  
' Convert long value to string of bytes.
' IN:  Value, long value
' OUT: LongToBytes, string with long value converted to bytes
' Known bugs:
' Version   Date   Who Comment
' 00.00.000 020606 CFO Created
'******************************************************************************
  Dim lsHex As String, i As Integer
  
  lsHex = Right("00000000" & Hex(Value), 8)
  For i = 1 To 7 Step 2
    LongToBytes = ChrB(CInt("&H" & Mid(lsHex, i, 2))) & LongToBytes
  Next

End Function
Function BytesToLong(ByVal Value As String) As Long
  
' Convert string of bytes to long value.
' IN:  Value, string
' OUT: BytesToLong, long value converted from string of bytes
' Known bugs:
' Version   Date   Who Comment
' 00.00.000 020606 CFO Created
'******************************************************************************
  Dim lsHex As String, i As Integer
  
  For i = 1 To 4
    lsHex = Hex(AscB(MidB(Value, i, 1))) & lsHex
  Next
  BytesToLong = CLng("&H" & lsHex)

End Function

ในส่วนของโมดูลจะเริ่มต้นด้วย การประกาศค่าคงที่ และมีการประกาศฟังก์ชั่นเกี่ยวกับการส่ง SMS จำนวน 3 รายการคือ SmsOpen, SmsSendMessage และ SmsClose โดยคุณจะต้องเรียกใช้งานตามลำดับคือ สั่ง SmsOpen เพื่อเปิดการติดต่อกับกระบวนการส่ง SMS ของระบบ, สั่ง SmsSendMessage เพื่อจัดส่งข้อความไปยังหมายเลขที่ต้องการ และ สั่ง SmsClose เมื่อสิ้นสุดการทำงาน

นอกจากนั้นในส่วนของโมดูลยังมีฟังก์ชั่นที่ใช้ในการแปลงเลขหมายปลายทางของหมายเลขโทรศัพท์ธรรมดาให้กลายเป็นรูปแบบของหมายเลขพิเศษ ที่ฟังก์ชั่น SmsSendMessage ต้องการ โดยการทำงานจะอาศัยฟังชั่นที่ถูกพัฒนาโดย คุณ Christian Forsberg

เริ่มต้นใส่โค้ดการทำงาน

  • ทำการดับเบิ้ลคลิกปุ่ม cmdSend ที่อยู่บนฟอร์ม จะปรากฏหน้าต่าง Code View
  • ทำการป้อนโค้ดเพื่อเรียกใช้งานฟังก์ชั่น ที่เราได้สร้างไว้ใน โมดูล ตามตาราง
Private Sub cmdSend_Click()
Dim SMSHandle As Long
Dim SMSEvent As Long
Dim SMSAddress As String
Dim SMSProvider As String

' Open SMS Messaging Component
Call SmsOpen(SMS_MSGTYPE_TEXT, SMS_MODE_SEND, SMSHandle, SMSEvent)

' Set Address structure (UDT as string)
SMSAddress = LongToBytes(SMSAT_INTERNATIONAL) & txtNumber.Text

' Set Provider structure (UDT as string)
SMSProvider = LongToBytes(PS_MESSAGE_OPTION_NONE) & _
LongToBytes(PS_MESSAGE_CLASS0) & _
LongToBytes(PSRO_NONE)

' Send message
If 0 = SmsSendMessage(SMSHandle, 0, SMSAddress, 0, txtMessage.Text, _
LenB(txtMessage.Text), SMSProvider, 12, SMSDE_GSM, _
SMS_OPTION_DELIVERY_NONE, 0) Then
MsgBox "Message sent!", vbInformation, App.Title
Else
MsgBox "Could not send message!", vbCritical, App.Title
End If

' Close SMS Messaging Component
Call SmsClose(SMSHandle)

End Sub

จากโค้ดจะเป็นกระบวนการทำงาน หลังจากที่คุณได้ทำการคลิกที่ปุ่ม cmdSend จะเริ่มต้นการทำงานโดยการประกาศตัวแปร ที่จำเป็นต้องใช้ในการทำงาน ต่อจากนั้นเป็นการเรียกใช้ ฟังก์ชั่น SmsOpen เพื่อเปิดการติดต่อกับระบบการส่ง SMS ซึ่งผลของการเรียกใช้นี้ จะถูกเก็บค่าไว้ในตัวแปร SMSHandle ต่อจากนั้นจะเป็นกระบวนการของการสร้างหมายเลขโทรศัพท์ปลายทางที่ต้องการติดต่อ โดยจะมีการระบุข้อกำหนดอื่นๆที่เกี่ยวข้องกับรูปแบบการส่งเข้าไปด้วย

ต่อจากนั้นจะทำการเรียกใช้ฟังก์ชั่น SmsSendMessage โดยมีการระบุข้อมูลที่ต้องการจัดส่ง, เลขหมายปลายทาง และข้อมูลอื่นๆ ซึ่งหากฟังก์ชั่นการส่ง SMS นี้ทำงานได้ถูกต้อง ก็จะคืนค่า 0 กลับมา แต่หากมีข้อผิดพลาดจะให้ค่าอื่น ซึ่งจะมีการตรวจสอบและแสดงผลการทำงาน ผ่านทางคำสั่ง MsgBox พร้อมกับข้อความประกอบ

  • ทำการทดสอบโปรแกรมโดยทำการสร้างเป็นโปรแกรมติดตั้ง โดยอ่านวิธีการได้จากเรื่อง การสร้างโปรแกรมติดตั้ง
  • นำโปรแกรมติดตั้งที่ได้ ไปทดสอบติดตั้งบนเครื่อง Pocket PC ที่มีระบบโทรศัพท์
  • ทำการป้อนหมายเลขโทรศัพท์มือถือปลายทาง และข้อความที่ต้องการ
  • คลิกเลือกปุ่ม "Send SMS"
  • จะมีหน้าต่างแสดงผลการทำงานของโปรแกรมแสดงขึ้นมาให้ทราบ
 

BACK

คลิปสอนเขียนโปรแกรม
เรียนเขียนโปรแกรมดอทเน็ต
เรียนเขียนโปรแกรมแอนดรอยด์
เรียนเขียนโปรแกรมเบล็คเบอร์รี่
เรียนเขียนโปรแกรมซี ซีพลัสพลัส
เรียนเขียนโปรแกรมจาวา
เรียนการใช้งานลินุกส์
เรียนการเขียนโปรแกรมวินโดว์โฟน
เรียนการเขียนโปรแกรมพีเฮชพี มายเอสคิวเอล
อัตราค่าโฆษณา
 
Tutorial
eVB Tutorial
ASP.NET Webmatrix Tutorial
J2ME Tutorial
C++  Tutorial
Java  Tutorial
PHP Tutorial
ASP Tutorial
 
แบบสำรวจ

Home - Article - Tutorial - Sourcecode - Dev Handbook - Search - WebBoard - Links - About Us

สงวนลิขสิทธิ์ ห้ามคัดลอก ทำซ้ำ แก้ไข ดัดแปลง ไม่ว่าในรูปแบบใด โดยไม่ได้รับอนุญาตเป็นลายลักษณ์อักษร
เลขทะเบียนพาณิชย์อิเล็กทรอนิกส์จากกระทรวงพาณิชย์: 7100503002000
Copyright 2001 SourceCode.in.th