การพัฒนาโปรแกรมแบบ Cross-Platform ด้วย Lazarus

  • ที่จริงรู้จักกับ Lazarus มาได้ 2 ปีกว่าแล้ว โดยการแนะนำของคุณจักรนันท์  กูรูขนานแท้คนหนึ่ง ที่ http://www.opentle.org/th/node/5345 ได้ให้คำแนะนำที่น่าสนใจมาก คุณจักรนันท์ได้ comment สั้นๆกับ Lazarus ดังนี้
  • “Free Pascal นั้น เป็นแค่ Compiler นะครับ เกือบเทียบเท่า gcc แล้วในเรื่องของการ Compile ข้ามได้หลาย Platform แต่มีได้เปรียบเรื่องเดียวคือ มี Community อีกกลุ่มหนึ่ง ต่อยอด Free Pascal ด้วยการสร้าง IDE ขึ้นมาชื่อ Lazarus เพื่อช่วยให้ผู้ที่คุ้นเคยกับ Delphi มาก่อนได้ Relax ขึ้น โดย Lazarus ได้สร้างโครงสร้าง Object Anchester ไว้ให้รวมไปถึง Object Component ต่างๆ โดยพยายามใช้ชื่อเดียวกับที่ Delphi ใช้ เพื่อให้รู้สึกเหมือนกันที่สุด แต่การเขียนโดยใช้ Lazarus นั้น งานที่ได้จะ Compile ได้เพียง 2 Platform เท่านั้นนะครับ คือ Linux กับ M$ Windows”
  • ผมขอเพิ่มเติมนิดหนึ่งครับว่าตอนนี้ สามารถ compile ได้หลากหลาย Platform ทั้ง Windows, Linux และ Mac OS, WinCE ขอขอบคุณจักรนันท์ จากใจจริงๆ
  • เมื่อสองปีที่แล้ว ลองdownload มาใช้งานดูแต่ยังไม่ได้จริงจังนัก พบว่า bug ยังมากยุบยับไปหมด เพิ่งมาเริ่มแบบจริงๆ ก็ไม่นานนี้ แหมดีขึ้นมาก เสถียรขึ้นเยอะ สักพักใหญ่ๆน่าจะไปถึงจุดเสถียรแบบ Delphi V.7 ตอนนี้ผมแนะนำให้ใช้ Subversion มากกว่า ปัจจุบัน Lazarus เป็น version 0.9.29 ต้องบอกก่อนว่า Lazarus ต้องใช้ Freepascal compiler เรียกสั้นๆว่า FPC ขณะนี้ version 2.3.1 เวลา download ตัว FPC กับ Lazarus จะแยกกัน วิธีการ download แบบ subversion มาใช้งาน ถ้ายังไม่ได้ติดตั้ง subversion ใน ubuntu ใช้คำสั่งดังนี้

$sudo apt-get install subversion

  • จากนั้นให้เตรียมสร้าง directory สำหรับ FPC ผมสร้าง directory ไว้ที่ /home/prajuab/fpcSVN และสร้าง Directory สำหรับ Lazarus ไว้ที่ /home/prajuab/lazarusSVN

เข้าไปที่

$cd /home/prajuab/

ใช้คำสั่ง svn ดังนี้

$svn checkout http://svn.freepascal.org/svn/fpc/trunk fpcSVN

สักพัก svn จะเริ่ม update ไฟล์ ประมาณนี้

…………………………………………………………………….

$ svn checkout http://svn.freepascal.org/svn/fpc/trunk fpcSVN
A    fpcSVN/utils
A    fpcSVN/utils/debugsvr
A    fpcSVN/utils/debugsvr/dbugintf.pp
A    fpcSVN/utils/debugsvr/console
A    fpcSVN/utils/debugsvr/console/Makefile.fpc
A    fpcSVN/utils/debugsvr/console/debugserver.pp
A    fpcSVN/utils/debugsvr/console/Makefile
A    fpcSVN/utils/debugsvr/Makefile.fpc
A    fpcSVN/utils/debugsvr/testdebug.pp
A    fpcSVN/utils/debugsvr/gtk

……………………………………………………………………………………

ถ้าเน็ตแรงๆสักครึ่งชั่วโมงก็เสร็จ จากนั้นต่อด้วย subversion ของ Lazarus

$ svn co http://svn.freepascal.org/svn/lazarus/trunk lazarusSVN

รอนานแต่ไม่เท่ากับ FPC

  • การ Compile FPC และ Lazarus ต้องเอาไว้ก่อนนะครับเพราะไปลึก ตอนนี้ขอแสดงโครงการที่ผมกำลังพัฒนากันอยู่ ผมเรียกโครงการนี้ว่า OpenGPS เป็น opensource component สำหรับ Lazarus เมื่อผมพัฒนาจนคิดว่า stable จะนำ component ตัวนี้ไป post ไว้ที่อาจจะเป็นที่ www.freepascal.org หรืออาจจะเป็น sourceforge ก็ได้ เพื่อให้ท่านอื่นๆที่สนใจนำไปใช้หรือมาช่วยกันพัฒนาต่อ
  • ความสามารถของ OpenGPS คือสามารถ Interface กับเครื่อง GPS มือถือเช่น Garmin อ่านข้อมูลที่เรียกว่า NMEA ที่เครื่อง GPS ส่งมาให้ผ่านทาง Serial port หรือ usb port ก็ได้ หรือถ้าจะนำไปพัฒนาบน WinCE ที่มี GPS ในตัวก็ได้เช่นเดียวกัน
พัฒนา OpenGPS ด้วย Lazarus บน Ubuntu linux
พัฒนา OpenGPS ด้วย Lazarus บน Ubuntu linux
พัฒนา OpenGPS ด้วย Lazarus บน Windows
พัฒนา OpenGPS ด้วย Lazarus บน Windows
  • จากภาพ snapshot ด้านบนจะเห็น Object หลายๆตัว เช่น GPSSkyPlot (TGPSSkyplot) ที่แสดงเป็นรูปวงกลมของท้องฟ้าแสดง GPS ที่อยู่บนท้องฟ้าที่เครื่องเรารับสัญญาณได้
  • Object ตัวที่สองที่เป็นรูปลูกศรคือ GPSTarget (TGPSTarget) ท่านที่ใช้เครื่อง GPS อยู่คงจะเข้าใจเรื่อง Waypoint ถ้าเราตั้ง Waypoint ไว้แล้วสั่ง Goto เครื่องจะพยายามนำเราไปจุดหมายซึ่งเครื่อง GPS จะแสดงทิศทางคือชี้ไปยังเป้าหมายตลอดเวลา เช่นเดียวกันใน OpenGPS เมื่อเราป้อน Waypoint  ให้โปรแกรมจะแสดงลูกศรชี้ไปยังเป้าหมายแสดงมุมอะซิมัท และระยะทางให้ตลอด
  • ส่วน Object ตัวอื่นเช่นเป็นรูปแท่งๆในแนวดิ่ง ก็แสดงความแรงของสัญญาณ GPS แต่ละดวงที่เครื่อง GPS รับได้
  • ตอนนี้โครงการเพิ่งเริ่มไม่นานเรื่อง Interface ด้วย serial port ยังไม่ได้ทำ ใช้วิธีอ่านไฟล์ NMEA ที่เก็บอยู่ในรูป Text file มา Process
  • ถ้าพัฒนาถึงในจุดที่คิดว่า stable หรือพอนำไปใช้ได้ ผู้พัฒนาโปรแกรมด้วย Lazarus สามารถ Download component “OpenGPS” ไปใช้ได้ไม่ว่าจะ platform ไหน เช่น Linux, Windows, Mac OS หรือแม้แต่ WinCE นำไปพัฒนาโปรแกรมจำพวก Car Navigator ก็ได้ ส่วนใหญ่ component แบบนี้ที่ผมเห็นจะเป็นเชิง commercial มากกว่า จะเป็น opensource
  • ด้วยข้อจำกัดของผมที่ทำงานประจำอยู่ จึงมีเวลาเขียนและพัฒนาน้อยแต่ก็พยายาม และอายุที่เลยเลขสี่มาแล้ว ไม่สามารถคิดปุ๊บติดปั๊บเหมือนแต่ก่อนรุ่นๆ (ฮา)  ที่เขียนโปรแกรมเพราะใจรักและเป็นงานอดิเรก

4 thoughts on “การพัฒนาโปรแกรมแบบ Cross-Platform ด้วย Lazarus”

  1. ผมเปลี่ยนชื่อโครงการใหม่เป็น OpenGPSX เพราะคำว่า OpenGPS ซ้้ำกับโครงการ MIT ซึ่งทำมาก่อน (แต่ไม่ใช่ Opensource) ตัว “X” ที่ตามหลัง OpenGPS ผมใช้ในความหมายว่า eXChange คือสามารถแลกเปลี่ยนกันได้

  2. สำหรับการติดตั้ง Lazarus แบบ subversion บน Linux แบบละเอียดอ่านได้ใน blog ของผมคลิกไปที่ http://priabroy.wordpress.com/2009/10/05 ส่วนการติดตั้งบน Windows จะทะยอยลงตามหลังให้ครับ

Leave a Reply

Your email address will not be published. Required fields are marked *