การเขียนโปรแกรม pocket pc...
TRANSCRIPT
การเขยนโปรแกรม Pocket PC เพอรบสงขอมลแบบอนกรมทาง Bluetooth
โดยนายธระพงษ ธนเดโชพล
ในปจจบนนอปกรณประเภท Pocket PC (PPC) ไดพฒนาอยางไปอยางรวดเรว ทงดานขนาด รปลกษณ ความเรว
และความสามารถในการใชงานไดหลากหลายรปแบบ ตวอยางเชน Pocket PC ปจจบนนสามารถทางานไดหลายอยาง ไมวา
จะเปนการนาทางดวยระบบ GPS การเชอมตอ Internet ทาง Wireless Lan ดหนง ฟงเพลง หรอแมกระทงการใชงานเปน
โทรศพท (Pocket PC Phone) พรอมทงราคาทหลายทานสามารถจบจองเปนเจาของไดอยางงายดาย ซง Pocket PC ในทก
วนนราคาไมแตกตางกบโทรศพทมอถอ แบบ Smart Phone มากเทาไหรนก
โดยทานผอานจะเหน Pocket PC ไดถกนามาใชในงาน ไมวาจะเปนในรานอาหารใหญ ๆ การทาสตอกสนคา การ
เกบขอมลการใชไฟฟาจากมเตอรไฟฟาของพนกงานเกบคาไฟฟา การใช Pocket PC ของแพทยเพอเกบขอมลของคนไขใน
คลนก หรอแมกระทงในโรงงานอตสาหกรรม เพราะดวยขอดหลาย ประการทาใหการใช Pocket PC เปนทนยมอยากมาใน
ปจจบน แตทานผอานทงหลายเคยคดหรอไมวา Pocket PC ในปจจบนไมไดมความสามารถแคการใชเปนโปรแกรมเพอเกบ
ฐานขอมล คานวณ หรอนาทาง แต Pocket PC สามารถทจะเขยนโปรแกรมเพอใชในการควบคม เครองจกร หรอ Hardware
ตางๆ ไดอยางงายดายดวยการใชการสอสารแบบอนกรม ของ Module Bluetooth ทตดตงมาอยภายในตว Pocket PC
โดยในบทความนทางผเขยนจะขอเสนอถงการเขยนโปรแกรมของ Pocket PC อยางไรในการเพอรบและสงขอมลผานทาง
Bluetooth ระหวาง Pocket PC กบเครองคอมพวเตอรสวนบคคล โดยเครองมอทผเขยนใชในการพฒนาโปรแกรมใน
Pocket PC นนคอ โปรแกรม Microsoft Visual Studio 2005 โดยภาษาทใชในบทความนคอภาษา C# ซงถาผอานทานใด
ถนด ภาษา Basic กสามารถใช Visual Basic.NET เขยนได เพราะโปรแกรมททางผเขยน เขยนขนมาจะอางองกบ
สถาปตยกรรม .NET Framework จงทาใหความแตกตางในของการพฒนาดวย C# กบ VB.NET แตตางตางกนท Syntax
ของภาษาอยางเดยว Object ทใชนนเปนตวเดยวกนการเรยกใชเหมอนกน และเครองมออกอยางทตองใชคอ Windows
Mobile 6 SDK ซง เครองมอตวนทาง Microsoft ไดแจกจายใหกบนกพฒนาโปรแกรมใชและดาวนโหลดไดโดยไมเสย
คาใชจาย โดยภายใน Windows Mobile 6 SDK จะมเครองมอทใชในการพฒนาโปรแกรมสาหรบเครอง Pocket PC ทใช
ระบบปฏบตการ Window Mobile 6.0 หรอ สงกวา เชน Windows Mobile 6 Device Emulator, Cellular Emulator,
Microsoft® SQL Server ™ 2005 Compact Edition เปนตน แตการทจะลง Windows Mobile 6 SDK ไดนนทานผอาน
จะตองลง Service Pack 1 ของ Microsoft Visual Studio 2005 กบ Microsoft .NET Compact Framework v2 ใน
เครองกอน (โดยสามารถ download ไดจาก website ของ Microsoft ไดเลย)
รปท 1 การสรางโปรเจคใหมใน Microsoft Visual Studio 2005
เรมสราง project ใหมไปท File>New>Project (หรอกด Ctrl + Shift + N ) ดงรปท 1
รปท 2 หนาตาง New Project สาหนบเลอกภาษาและรปแบบในการพฒนาโปรแกรม
หลงจากเสรจสนขนตอนขางตน จะมหนาตาง New Project ในรปท 2 ขนมาโดยใหผอานเลอกตวเลอกสาหรบการ
สรางโปรเจคใหมดงน ในชอง Project type ใหเลอก Visual C# > Smart Device > Windows Mobile 6
Professional
ในชอง Templates ใหเลอก Device Application แลวเลอกตงชอในชอง Name (ในบทความนตงชอวา
PPC_SerialBT) จากนนกด OK เพอสราง Project ใหม
รปท 3 Design Explorer
หลงเสรจสนขนตอนในการสราง Project ขางตนแลว โปรแกรม Visual Studio 2005 จะสราง Form สาหรบใชใน
การพฒนาโปรแกรมใหเรา โดยลกษณะจะเปนไปดงรปท 3
รปท 4 Toolbox โดย Control ทงหมดจะถกเกบรวบรวมอยทน
จากนนทานเลอก control ดงตอไปนจาก Toolbox ในรปท 4 มาใสใน Form ดงรปท 5
ComboBox ( ) จานวน 2 อน
Button( ) จานวน 2 อน
TextBox( ) จานวน 2 อน
SerialPort( ) จานวน 1 อน
Timer( ) จานวน 1 อน
รปท 6 การสราง MainMenu รปท 7 การใสชอใหกบ MainMenu
จากนนใหทาน คลกไปยงบรเวณทขนวา “Type Here” เพอสราง Main Menu
โดยจากรปท 7 ในชองท 1 ใหผอานใส เปน Menu Exit โดยท Menu นใชสาหรบในการปดโปรแกรม ดงนนใหตงชอ
Menu นวา “Exit”
และ Menu ในชองทสองกเชนกน แตในชองนใหผอานใสเปน Clear โดย Menu Clear นจะทาหนาทสาหรบการลบ
คาใน TextBox ทใชในการแสดงคาทรบมาระหวางการสอสาร
รปท 8 Properties Windows
จากนนใหผอานแกไข Properties ของ Control ตางๆ ตามตารางท 1 ในชอง Properties ดงรปท 8
Control Name Control Rename
Text Multiline ScrollBars Enable
button1 btConnect Connect ‐ ‐ True Button2 btSend Send ‐ ‐ False comboBox1 cbComport COM6 ‐ ‐ TruecomboBox2 cbBaudrate 9600 ‐ ‐ True textBox1 txtSend “” false None True textBox2 txtReceive “” true Vertical True menuItem1 menuExit Exit ‐ ‐ True menuItem2 menuClr Clear ‐ ‐ True Form1 From1 PPC Bt Serial ‐ ‐ True serialPort1 serial ‐ ‐ ‐ ‐ timer1 timer ‐ ‐ ‐ false
ตารางท 1 Control Properties
หลงจากนนให Double Click ท Form1 เพอใส Code สาหรบการกาหนดคาเรมตนใหกบ cbComport และ
cbBaudrate โดย code นจะทางานเมอโปรแกรม Load Form1 ขนมาทางาน private void Form1_Load(object sender, EventArgs e)
{ cbBaudrate.Items.Add("9600"); cbBaudrate.Items.Add("19200"); cbBaudrate.Text = "9600"; cbComport.Items.Add("COM7"); cbComport.Text = "COM7"; timer.Interval = 1; }
โดยคาสงดงกลาวเปนการเพม Baudrate และ ComPort ใสลงใน ComboBox
และถาผอานสงเกตจะเหนวา cbComport ถกกาหนด ComPort เปน “COM7”นนเพราะ ระบบปฏบตการ (Window
Mobile 6.0) ของเครอง Pocket PC ทใชทดสอบ (ASUS P535) ไดกาหนด Bluetooth Serial Port A และ Bluetooth
Serial Port B อยท COM7 โดย Bluetooth Manager จะเปนตวจดการวาจะใหรบสงขอมลท Port A หรอ B จากนนใหพมพ code ตามนลงไปท source code edit private void btConnect_Click(object sender, EventArgs e) { if (btConnect.Text == "Connect") { serial.PortName = cbComport.Text; serial.BaudRate = Convert.ToInt32(cbBaudrate.Text); serial.Open(); cbBaudrate.Enabled = false; cbComport.Enabled = false; timer.Enabled = true;
btConnect.Text = "Disconnect"; } else { serial.Close(); timer.Enabled = false; cbBaudrate.Enabled = true; cbComport.Enabled = true; btConnect.Text = "Connect"; }
}
โดย source code ขางบนเปนการกาหนดเหตการณเมอมการกดปม btConnect เพอใชสาหรบ
การเชอมตอทาง Serial Bluetooth โดยการกาหนดคา Baudrate และ Comport จะเปนไปตามคาทถกเลอกใน cbBaudrate และ cbComport
private void btSend_Click(object sender, EventArgs e) { serial.Write(txtSend.Text);
} Source code นกาหนดเหตการณเมอมการกดปม btSend ใชสาหรบการสงขอความออกท Serial
โดยขอความนนจะอานมาจาก Control TextBox ทชอ txtSend
private void menuClr_Click(object sender, EventArgs e) { txtReceive.Text = "";
}
กานหดใหเมอม เหตการณเมอมการกดปม menuClr ใหลางคาทอยใน Control TextBox ทชอ txtReceive
private void menuExit_Click(object sender, EventArgs e) { if (serial.IsOpen) serial.Close(); Close();
}
จากนนกาหนดการทางานหลงจาก Timer เกดเหตการณ Tick (double Click ท ) แลวพมพ code
ดงน
private void timer_Tick(object sender, EventArgs e) { string str; str = serial.ReadExisting(); txtReceive.Text += str; txtReceive.SelectionStart = txtReceive.Text.Length; txtReceive.ScrollToCaret();
}
โดยการทางานของ Timer หลงจากเกดเหตการณ Tick คอถา Control Serial ไดรบ
ขอความจากการเชอมตอจาก port ทกาหนด ใหนาขอความนนไปแสดงท Control TextBox
ทชอ txtReceive
และสาเหตทผเขยนเลอกใช timer เพอใชเปนตวจบเวลาในการอานขอมล นนเพราะวา ใน ระบบปฏบตการ
Windows Mobile ไมสามารถทา DataReceivedEventHandler (Interrupt) ในการสอสารทาง Serial ได
จากนนให Build Solution (Ctrl + Shift + B) ถา Build สาเรจในหนาตาง Output จะขนวา
“Build: 1 succeeded” ดงรปท 9
รปท 9 Build: 1 succeeded
การทดลอง
จากนนทดลองโดยการคดลอก Execute File (โดย Execute File ท Build สาเรจจะถกสรางไวท
โฟลเดอรPPC_SerialBT\bin\Debug)
ไปไวยง PPC ทเตรยมไวสาหรบทดลอง (รปท 10) เปด Bluetooth ของเครอง PPC จากนน Execute
โปรแกรมขางตน (PPC_SerialBT.exe)
รปท 10 รปท 11 รปท 12
ใหเลอก Baudrate และ Comport ดงรปท 11 จากนนกด Connect แลวโปรแกรมจะแสดงรายการ
อปกรณในการเชอมตอมาให ใหเราเลอกคอมพวเตอรทจะใชในการทดลอง ดงภาพท 12 และถาเชอมตอเสรจ
โปรแกรมทดลองจะเปนดงภาพ 13 และทคอมพวเตอรจะมขอความขนมาบอกวามการเชอตอ Serial Bluetooth ท
Port ใดของเครองคอมพวเตอร ดงภาพท 14 จากนนพมพขอความจากเครองคอมพวเตอร ดงรป ท 15 แลวสง
รปท 14
รปท 13 รปท 15
หลงจากทสงขอความจากเครอง คอมพวเตอรใหดขอความทไดรบมาในเครอง PPC จะไดดงรปท 16 จากนนจะเปน
การสงขอความจากเครอง PPC ไปยงเครองคอมพวเตอรโดยใหผอานพมพขอความจาก PPC แลวกด send ดงตวอยางใน
รปท 17 ถาโปรแกรมสามารถทางานถกตองในเครองคอมพวเตอรกจะเปนดงรปท 18
รปท 16 รปท 17
รปท 18
โดยจากการทดลองนทานผอานสามารถนาไปประยกตไดมากมาย เชน การนาเครอง PPC ไปควบคมหนยนตท
ตดตงอปกรณทรองรบการเชอมตอและรบสงขอมลในรปแบบของ Serial Bluetooth ได หรอการนาไป
ประยกตใชในงาน Home Control ดวย PDA กไดครบ หรอผอานทานใดมขอสงสย หรอขอแนะนาสามารถ
e‐mail มาทผเขยนไดโดยตรงท [email protected] ครบ