สำหรับบทความอัพเดทสำหรับ WM6.5 อยู่ที่นี่ครับ: http://coresharp.net/blogs/article/archive/2009/08/08/windows-mobile-6-5-1.aspx
สวัสดีครับผู้อ่านทุกท่านตั้งแต่ฉบับนี้เป็นต้นไปผมจะขอนำเสนอบทความเกี่ยวกับการเขียนโปรแกรมเบื้องต้นบนเครื่อง Pocket PC ที่คิดว่าทุกท่านคงมีใช้งานกันอยู่แล้วด้วยเทคโนโลยี .NET ของ Microsoft ที่ทำให้เราสามารถพัฒนาโปรแกรมเพื่อใช้งานได้อย่างง่ายยิ่งขึ้นท่านใดที่สนใจก็ตามมาเลยครับ
รู้จักกับ .NET Framework
.NET คิดว่าผู้อ่านคงจะเคยได้ยินคำๆนี้มาบ้างแล้วผมจะขออธิบายคร่าวๆนะครับว่า .NET Framework นี่คืออะไรผมจะขออธิบายคร่าวๆเกี่ยวกับเทคโนโลยีที่กำลังได้รับความนิยมนี้
.NET Framework คือกรอบหรือโครงร่างการพัฒนาโปรแกรมคอมพิวเตอร์ซึ่ง Microsoft ได้เริ่มทำการพัฒนามาตั้งแต่เดือนกุมภาพันธ์ ปีค.ศ 2002 และได้รับการยอมรับของเหล่าโปรแกรมเมอร์ทั้งยังมีการพัฒนาอย่างต่อเนื่อง โดยเทคโนโลยีนี้จะเน้นการทำงานของโปรแกรมต่างๆในรูปแบบของ Web service ซึ่งเป็นส่วนที่ทำให้ application ต่างๆของผู้ใช้สามารถติดต่อกันผ่านทางเครือข่าย internet ได้ง่ายขึ้นโดยที่โปรแกรมที่ทำการเชื่อมต่อกันนั้นไม่จำเป็นต้องอยู่บนระบบปฏิบัติการเดียวกัน
เพราะฉะนั้น .NET framework นั้นจึงไม่ใช่ภาษาที่ใช้เขียนโปรแกรมแต่เป็นชื่อเรียกโดยรวมของการพัฒนาโปรแกรมแบบใหม่ที่ Microsoft พัฒนาขึ้น
ข้อดีของ .NET Framework
1. สามารถทำการพัฒนาโปรแกรมได้ง่ายขึ้นเนื่องจากได้มีการเตรียมโปรแกรมพื้นฐาน(Base class) ไว้ให้เรียบร้อยแล้ว
2. มีความปลอดภัยมากขึ้นเนื่องจากการใช้งานทรัพยาการต่างๆในระบบจะถูกจัดการด้วย .NET Framework ทั้งหมด
3. มีความเสถียรมากขึ้น
4. การพัฒนาโปรแกรมไม่ได้ขึ้นอยู่กับภาษาที่ใช้เขียนต่อไปเนื่องจาก .NET มีset ของ Programming ที่สามารถใช้พัฒนาได้หลายภาษา
Microsoft ได้เห็นความสำคัญในการพัฒนาโปรแกรมบน Pocket PC เช่นกันเนื่องจาก Pocket PC เองก็เป็นอุปกรณ์ที่สามารถเชื่อมต่อใช้งาน Internet ได้ดีเช่นกัน แต่เนื่องจากข้อจำกัดของเครื่อง Pocket PC ยังมีอยู่มากไม่ว่าจะเป็นเรื่องของหน่วยความจำที่มีจำกัด , ความเร็วของ CPU , ขนาดการแสดงผลเป็นต้น Microsoft จึงได้ทำการพัฒนา .NET Framework ที่มีขนาดเล็กลงเพื่อให้สามารถใช้พัฒนาโปรแกรมบนเครื่อง Pocket PC ได้
.NET Compact Framework
.NET Compact Framework กล่าวง่ายๆคือเป็น .NET Framework อีกเวอร์ชั่นที่มีขนาดเล็กทำงานได้รวดเร็วและตัดคุณสมบัติการทำงานบางส่วนของ .NET Framework ออกปสำหรับการพัฒนาโปรแกรมสำหรับอุปกรณ์ต่างๆโดยเฉพาะ โดยเราสามารถพัฒนาโปรแกรมสำหรับ Pocket PC และ Windows CE ได้โดยใช้ภาษา C#.NET หรือ Visual Basic.NET ได้ตามที่ตัวเองถนัดโดยไม่มีความจำเป็นต้องเชี่ยวชาญในภาษานั้นๆมากนั้น
การทำงานของ .NET compact framework
ในการเขียนโปรแกรมด้วยภาษาระดับสูงเช่นภาษา C++ ,Pascal นั้นตัว Compiler จะทำการแปลงจาก source code ไปเป็น Machine code ที่ CPU ของเครื่องนั้นๆรู้จักอยู่โดยที่นักเขียนโปรแกรมไม่ต้องไปยุ่งเกี่ยวกับการจัดการหน่วยความจำหรือทรัพยาการอื่นๆเลย โดยปล่อยให้ Libraries ภายนอกจัดการให้ทั้งหมดเช่น DLL ไฟล์ทั้งหลายที่ใช้พัฒนาโปรแกรมบน Windows การเขียนโปรแกรมในลักษณะนี้ทำให้การนำโปรแกรมไปใช้งานในสภาวะแวดล้อมอื่นเป็นสิ่งที่เป็นไปได้ยากเนื่องจากการทำงานของระบบปฏิบัติการที่แตกต่างกันทำให้ไม่สามารถนำโปรแกรมที่เขียนไปใช้งานในอีกระบบปฏิบัติการด้วยการพัฒนาโปรแกรมแบบเก่าทำให้เกิดปัญหาขึ้นได้ดังนี้
· โปรแกรมไม่สามารถทำงานข้ามระบบปฏิบัติการได้เนื่องจากมีการทำงานที่แตกต่างกัน
· โปรแกรมที่เขียนบน CPU ชนิดหนึ่งจะไม่สามารถทำงานบน CPU ที่ต่างชนิดกันได้
· หากเขียนโปรแกรมด้วยภาษาคนละภาษาจะไม่สามารถทำให้โปรแกรมทั้ง 2 นั้นใช้งาน Object ต่างๆร่วมกันได้
.NET Compact Framework ได้ทำการแก้ไขปัญหาต่างๆเหล่านี้โดย
· ผู้เขียนสามารถเลือกโปรแกรมได้ด้วยภาษา C#.NET หรือ VB.NET โดยสามารถทำงานและแลกเปลี่ยนการใช้งาน Object ระหว่างโปรแกรมที่เขียนด้วยภาษาที่ต่างกันได้เนื่องจากมีการแปลงไปเป็น Byte code ในรูปแบบเดียวกัน
· การ compile โปรแกรมในอยู่ในรูปแบบ Binary มีรูปแบบเหมือนกับแต่ขึ้นอยู่กับสถาปัตยกรรมของ CPU นั้นๆทำให้เราสามารถเขียนโปรแกรมครั้งเดียวแล้วทำการ Deploy ไปยังเครื่อง Pocket PC ที่ใช้ CPU ชนิดต่างๆได้
· โปรแกรมที่ compile เสร็จแล้วจะอยู่ในรูปของ Intermediate Language Bytecodes (IL Code) ทำให้สามารถทำงานได้ในหลายๆระบบปฏิบัติการที่มีการติดตั้ง .NET Compact framework Runtime
จากเทคโนโลยีและวิธีการที่ได้กล่าวมานี้ Microsoft ไม่ได้เป็นผู้คิดค้นออกมาเป็นรายแรกแต่จะเห็นได้ว่าวิธีการส่วนใหญ่ได้ที่การพัฒนามาก่อนแล้วโดยบริษัทค้นคว้าและพัฒนาต่างๆเพียงแต่ว่า Microsoft ได้นำเอาเทคโนโลยีเหล่านั้นมาใส่กรอบรวมกันทำให้เทคโนโลยีเหล่านั้นเป็นรูปเป็นร่างและสามารถใช้งานได้ง่ายขึ้น
เตรียมเครื่องมือก่อนเขียนโปรแกรม
ในบทความชุดนี้จะแนะนำการเขียนโปรแกรมบน Pocket PC ด้วยภาษา C#.NET และใช้ Visual Studio.NET เป็นเครื่องมือในการพัฒนาผู้เขียนขออธิบายโปรแกรมต่างๆที่ต้องใช้ดังนี้
Visual Studio.NET 2003 (version 7.1)
ความต้องการพื้นฐานในการติดตั้งโปรแกรมมีดังนี้
· พื้นที่ฮาร์ดดิสก์ประมาณ 5 GB
· ระบบปฏิบัติการ Windows 2000 , Windows XP Profession,Windows XP Home
· หน่วยความจำขั้นต่ำ 128 MB (แนะนำ 256 MB ขึ้นไป)
· CPU Pentium II 450 Mhz ขึ้นไป(แนะนำ Pentium III 600 Mhz ขึ้นไป)
ซึ่งในการติดตั้งโปรแกรม Visual Studio.NET 2003 คุณจะต้องทำการติดตั้ง Smart Device Programmability ให้กับภาษาที่คุณต้องการพัฒนาด้วย(แนะนำให้เลือกทั้ง 2 ภาษา)ดังรูปที่ 1 ทำการเลือกที่หมายเลข 1 และ 2
รูปที่ 1 ติดตั้ง Smart Device Programmability (1.tiff)
โปรแกรมที่จำเป็นอื่นๆ
· NET Compact Framework 1.0 SP3 Redistributable ขนาด 14.4 MB เป็นชุดรวมClass และ Cab file runtime ต่างๆสำหรับติดตั้งบน CPU หลายๆ ประเภท
· Pocket PC 2003 SDK ขนาด 85 MB เป็นชุดพัฒนาสำหรับพัฒนาโปรแกรมบน Windows Mobile 2003 Base Pocket PC
· Emulator Images for Windows Mobile 2003 Second Edition ขนาด 2 MB สำหรับการทดสอบโปรแกรมบนเครื่อง PC
· Windows Mobile Developer Power Toys ขนาด 20 MB เป็นโปรแกรมที่เพิ่มความสะดวกในการพัฒนาโปรแกรมเช่น โปรแกรม Remote Display control สำหรับเรียกดูหน้าจอ Pocket PC
ซึ่งโปรแกรมที่ได้กล่าวมาแล้วสามารถทำการดาวโหลดได้จากเวบ http://msdn.microsoft.com/mobility/downloads/default.aspx หลังจากดาวโหลดมาแล้วให้ทำการติดตั้งโปรแกรมต่างๆลงในเครื่องตามลำดับที่ได้กล่าวมาแล้วเพียงเท่านี้เราก็พร้อมที่จะพัฒนาโปรแกรมบน Pocket PC ได้แล้วครับ
Hello World!
หลังจากทำความรู้จักกับเทคโนโลยีที่เราจะใช้กันไปพอสมควรแล้วเราลองมาเริ่มใช้งานเครื่องมือและเขียนโปรแกรมแรกของเรากันเลยดีกว่า โดยผมจะขอแนะนำขั้นตอนการพัฒนาโปรแกรมบน Pocket PC ไปพร้อมกันเลย สำหรับท่านที่เคยพัฒนาโปรแกรมด้วย Visual Studio.NET มาก่อนแล้ววิธีการพัฒนาต่างๆก็จะคล้ายๆกับการพัฒนาโปรแกรมบน Windows Desktop ถ้าท่านยังไม่เคยใช้งานมาก่อนคงต้องใช้เวลาทำความคุ้นเคยสักพักครับ
ขั้นที่ 1 เปิดโปรแกรม Visual Studio.NET 2003 ขึ้นมาหน้าจอเริ่มต้นของโปรแกรมจะเป็นดังรูปที่ 2 จากนั้นให้เราเริ่มสร้าง Project ใหม่โดยคลิกที่ปุ่ม New Project บริเวณหมายเลข 1 ในรูปที่ 2 หรือคลิกที่เมนู ดดFileàNewàProject หรือใช้ปุ่มลัด CTRL+SHIFT+N
รูปที่ 2 การสร้างหน้าจอ Start Page ของ โปรแกรม (2.tiff)
ขั้นที่ 2 หลังจากคลิกสร้าง Project ใหม่ แล้วจะแสดงหน้าจอดังรูปที่ 3 เป็นหน้าจอที่แสดงชนิดของโปรเจคทั้งหมดที่สามารถสร้างได้ให้เราทำการเลือกที่ Visual C# Projects แล้วเลือก Smart Device Application ให้เราตั้งชื่อโปรเจคของเราที่ช่อง Name: แล้วทำการเลือก Folder ที่จะเก็บโปรเจคของเราเอาไว้จากนั้นคลิกที่ปุ่ม OK
รูปที่ 3 สร้าง Visual C# Projects (3.tiff)
ขั้นที่ 3 จะแสดง Dialog Smart Device Application Wizard ซึ่งเป็น Wizard ที่จะช่วยให้คุณสามารถปรับแต่งโปรแกรมที่คุณจะเขียนได้ง่ายยิ่งขึ้นดังรูปที่ 4
หมายเลข 1 จะเป็นส่วนที่ให้เลือก Platform หรือระบบปฏิบัติการที่เราต้องการเขียนโปรแกรมโดยมีให้เลือก 2 ชนิดคือ Pocket PC และ Windows CE ระบบปฏิบัติการแบบ Pocket PC จะสามารถพัฒนาโปรแกรมให้ทำงานบนเครื่อง Pocket PC ที่มีอยู่ในปัจจุบันได้ (ตั้งแต่เวอร์ชัน2002) รวมทั้งการพัฒนาโปรแกรมบน SmartPhone ด้วย ถ้าเราเลือก Platform เป็น Windows CE จะเป็นการพัฒนาโปรแกรมสำหรับเครื่อง Pocket PC รุ่นเก่าๆที่ยังใช้ระบบปฏิบัติการ Windows CE ให้เราเลือกเป็น Pocket PC ครับ
รูปที่ 4 Smart Device Application Wizard
หมายเลข 2 จะเป็นการเลือกประเภทของ Project ที่เราต้องการสร้าง โดยมีรายละเอียดดังนี้
· Windows Application เป็นการให้ Visual Studio.NET ทำการสร้าง Form หลักของ Application ให้เราเองโดยอัตโนมัติทำให้เราสามารถพัฒนาต่อโดยการเพิ่ม control ต่างๆ ลงไปได้เลย
· Class Library ใช้สำหรับเขียน Dynamic Link Library(DLL)สำหรับ .NET Compact Framework
· Non Non-graphical Application เป็นการพัฒนาโปรแกรมประเภทที่เป็น Console (ใช้งานแบบ Command Line)เท่านั้นซึ่งจะมีประโยชน์สำหรับ Windows CE ที่สามารถใช้งานโปรแกรมประเภท command line ได้
· Empty Project เป็นการสร้างโปรเจคขึ้นมาเปล่าๆโดยที่ไม่ให้โปรแกรมสร้าง Source อะไรให้เราเลยซึ่งเราต้องมาทำการเขียน Code เองทั้งหมด
ในที่นี้ให้เราเลือกเป็น Pocket PC Platfrom เลือกประเภทโปรเจคเป็น Windows Application ครับ
หมายเลข 3 เป็นส่วนที่แสดง Emulator ทั้งหมดที่มีการติดตั้งลงในเครื่องของเราที่สำคัญให้ตรวจสอบว่ามี Pocket PC 2003 Emulator นะครับ(ตามที่ได้แนะนำการติดตั้งโปรแกรมไปแล้วก่อนหน้านี้)เมื่อทำการเลือกทุกอย่างเรียบร้อยแล้วดังรูปที่ 4 ก็คลิก OK ได้เลย
ขั้นที่ 4 หลังจากที่ Project ของเราได้ถูกสร้างขึ้นแล้วโปรแกรมก็จะแสดงหน้าจอ Form Designer ขึ้นมาทันทีซึ่งในส่วนนี้จะเหมือนกับการพัฒนาโปรแกรมบน Desktop ทุกอย่างเลยโดยในหมายเลข 1 จะเป็นส่วนสำหรับการสร้าง Control ต่างๆ ส่วนที่ 2 ที่อยู่ทางขวามือของโปรแกรมจะเป็นส่วน Properties สำหรับทำการกำหนดค่าต่างๆให้กับ Control
รูปที่ 5 หน้าจอ FORM designer (5.tiff)
ขั้นที่ 5 หลังจากนั้นให้เราลาก mouse ไปวางไว้ที่บริเวณ Toolbox (เป็นรูปเครื่องมือ) ทางด้านซ้ายสุดของโปรแกรมจะปรากฏหน้าจอ Toolbox ซึ่งเป็นที่รวม Control สำหรับให้เรานำไปใช้ได้ดังรูปที่ 6
รูปที่ 6 Toolbox(6.tiff)
ขั้นที่ 6 ทำการคลิก Control ชื่อ Label และ Button มาวางไว้บริเวณ Form1 (หมายเลข 1 ในรูปที่ 6)แล้วทำการจัดเรียงรูปแบบดังรูปที่ 7
รูปที่ 7 ลาก Control มาวางบน Form1(7.tiff)
ขั้นที่ 7 ให้ทำการดับเบิลคลิกที่ Button โปรแกรมจะเปลี่ยนมาอยู่ในหน้าจอ Code Editor ดังรูปที่ 8 โปรแกรมจะนำเอา Cursor ของเราไปวางไว้ใน method button1_Click โดยอัตโนมัติโดย Method นี่จะทำงานเมื่อมีการคลิกที่ปุ่ม Button1 เกิดขึ้น เราสามารถเขียน code ที่เราต้องการใส่เข้าไปได้ในนี้ครับให้ลองพิมพ์ Code ลงไปดังนี้(พิมพ์เฉพาะตัวหนา)
private void button1_Click(object sender, System.EventArgs e)
{
label1.Text="Hello World!!";
MessageBox.Show(“Hello World”);
}
รูปที่ 8 Code Editor และ Code ต่างๆที่พิมพ์เพิ่มลงไป(8.tiff)
ขั้นที่ 8 ทดลองทำการ Compile และ Deploy โปรแกรมที่เราเขียนขึ้นมาโดยเข้าไปที่ Debug à Start Without Debugging หรือกด CTRL+F5 ก็ได้ Visual Studio จะแสดงหน้าต่างเลือก Emulator ที่ต้องการใช้งาน ให้เราเลือกเป็น Pocket PC 2003 Emulator แล้วคลิก Deploy โปรแกรมจะทำการ Deploy โปรแกรมที่เราพัฒนาไปไว้ใน ตัว emulator ทันที หรือหากใครต้องการทดสอบโปรแกรมบนเครื่อง Pocket PC จริงๆก็สามารถทำได้โดยการเลือก Device ที่ต้องการ Deploy เป็น Pocket PC Device โดยจำเป็นต้องให้เครื่อง Pocket PC สามารถทำการเชื่อมต่อกับ ActiveSync ได้เรียบร้อยก่อนหลังจาก Deploy ไปแล้ว Visual Studio จะทำการ Copy File ที่จำเป็นไปสู่เครื่อง Pocket PC โดยอัตโนมัติรวมทั้ง .NET Compact Framework Runtime ด้วย
รูปที่ 9 เลือก Emulator ที่ต้องการแสดง (9.tiff)
ขั้นที่ 9 เราก็จะได้เห็นโปรแกรมที่เราเขียนขึ้นอยู่ใน Pocket PC 2003 Emulator ดังรูปที่ 10 ให้ลองคลิกที่ปุ่ม Button1 ดูถ้าไม่มีอะไรผิดพลาดโปรแกรมจะแสดงคำว่า Hello World!! บน label1 ที่เราสร้างไว้พร้อมทั้งแสดง Message Box ขึ้นมาด้วยครับ
รูปที่ 10 การทดสอบโปรแกรมบน Emulator(10.tiff)
ขั้นตอนการทำงาน
หากผู้อ่านได้ทำตามขั้นตอนทุกขั้นจนสำเร็จโปรแกรมสามารถทำงานได้แล้วจะเห็นได้ว่าการเขียนโปรแกรมบน Pocket PC นั้นไม่ได้มีอะไรยากเลยคราวนี้ผมจะขออธิบายการพัฒนาโปรแกรมด้วย .NET Compact Framework กันต่อนะครับ
ตามที่ได้เกริ่นไปแล้วว่า .NET Compact Framework นั้นสามารถทำงานได้บนหลายระบบปฏิบัติการหลายสถาปัตยกรรมของ CPU ซึ่งการที่ทำแบบนี้ได้เนื่องจากโปรแกรมที่เราพัฒนาขึ้นนั้นจะอยู่ในรูป byte code อุปกรณ์ต่างๆที่จะสามารถใช้งานโปรแกรมนี้ได้จำเป็นต้องมีการติดตั้ง .NET Compact Framework Runtime ซึ่งตัว Runtime นี้จะมีอยู่ในเครื่องของทุกท่านที่ได้ทำการติดตั้งเอาไว้แล้วโดยจะทำการแบ่งออกเป็นหลายๆ Processor ที่ใช้
โดยทั่วไปเมื่อเราทำการพัฒนาโปรแกรมแล้ว Deploy ลงในเครื่อง Pocket PC ของเราโดยตรงไม่ผ่าน Emulator ตัว Smart Device Extension เองจะทำการตรวจสอบรุ่นและระบบปฏิบัติการที่เครื่อง Pocket PC ของเราใช้อยู่ผ่านทาง Microsoft ActiveSync แล้วทำการติดตั้ง .NET Compact Framework Runtime ให้เองโดยอัตโนมัติ แต่ถ้าเราทำการดาวโหลดโปรแกรมมาจากที่อื่นเราจำเป็นต้องทำการติดตั้งเองยกเว้นระบบปฏิบัติการ Windows Mobile 2003 ที่จะมีติดตั้งมาให้ใน ROM อยู่แล้ว
Processor อื่นๆที่ .NET Compact Framework สนับสนุนมีดังนี้
CPU NAME
SUPPORTED OS VERSIONS
Intel ARM 4
Pocket PC 2000, 2002, 2003, and WinCE 4.1 or greater
Intel ARM 4i
Pocket PC 2000, 2002, 2003, and WinCE 4.1 or greater
Hitachi SH3
Pocket PC 2000, 2002, 2003, and WinCE 4.1 or greater
Hitachi SH4
Pocket PC 2003 and WinCE 4.1 or greater
Intel 80x86
Pocket PC 2000, 2002, 2003, and WinCE 4.1 or greater
MIPS 16
Pocket PC 2000, 2002, 2003, and WinCE 4.1 or greater
MIPS II
Pocket PC 2000, 2002, 2003, and WinCE 4.1 or greater
MIPS IV
Pocket PC 2000, 2002, 2003, and WinCE 4.1 or greater
ตารางที่ 1 Processor และ OS ที่.NET Compact Framework สนับสนุน
โดยที่ cab file สำหรับการติดตั้ง .NET Compact Framework Runtime ทั้งหมดจะทุกติดตั้งอยู่ใน Folder Program Files\Microsoft .NET Compact Framework 1.0 SP3\ และทำการจัดเก็บชื่อไฟล์เป็นรูปแบบดังนี้
· netcf.core.ppc3.{CPU} เป็นไฟล์สำหรับติดตั้งบนระบบปฏิบัติการ Pocket PC ตั้งแต่เวอร์ชั่น 2000 เป็นต้นมาโดย “{CPU}” แทนด้วยชื่อรุ่น CPU ของเครื่อง Pocket PC
· netcf.all.wce4.{CPU} เป็นไฟล์สำหรับติดตั้งบนระบบปฏิบัติการ Windows CE ตั้งแต่เวอร์ชั่น 4.1 เป็นต้นมาโดย “{CPU}” แทนด้วยชื่อรุ่น CPU ของเครื่อง Pocket PC
เราสามารถ Copy Cab File ดังกล่าวไปยังเครื่อง Pocket PC แล้วทำการติดตั้งได้ทันทีโดยต้องเลือกประเภทของ CPU ให้ถูกต้อง หรืออาจจะดาวโหลดตัวติดตั้งดังกล่าวให้ ActiveSync ตรวจสอบ CPU ได้เองโดยอัตโนมัติ
บทสรุป
หลังจากอ่านบทความนี้จบผู้เขียนหวังว่าผู้อ่านจะมีความเข้าใจเกี่ยวกับหลักการทำงานและขั้นตอนการพัฒนาโปรแกรมขั้นพื้นฐานของการพัฒนาโปรแกรมด้วย .NET Compact Framework จะสังเกตได้ว่าเราสามารถพัฒนาโปรแกรมได้ด้วยความรวดเร็วโดยเฉพาะผู้ที่เคยพัฒนาโปรแกรมแบบ Visualมาก่อนแล้วจะพบว่ามีความคล้ายคลึงกันมาก