วันพฤหัสบดีที่ 30 มกราคม พ.ศ. 2557

SDLC VS อริยสัจ 4

SDLC คืออะไร Systems Development Life Cycle แปลเป็นภาษาไทยตรงๆตัวก็ วงจรชีวิตการพัฒนาระบบ (แปลตรงตัวมากอิอิอิอิอิ)



อะทีนี้เรามาดูแต่ละตัวว่ามันคืออะไรกันบ้างนะครับ

ว่ากันด้วย SDLC 

1. Initial Investigation คือ การเริ่มคิดว่าเราจะทำอะไรจะสร้างอะไรขึ้นมา หรือเลือกหัวข้อที่จะทำนั่นเอง
2. System Analysis    คือ การวิเคราะห์ระบบของเราว่ามันเป็นยังงัย มีข้อดีตรงใหน ถ้าทำแล้วจะมีผลยังงัย เช่นสร้างเขื่อนแม่วงศ์ จะผลกระทบต่อสัตว์ป่ามั้ย ต่อชุมชนมั้ย อย่างรัย นั่นคือสิ่งที่ต้องวิเคราะห์ในจุดนี้
3. System Design      คือ หลังจากที่เราวิเคราะห์ผลดีและผลเสียของระบบแล้ว เราเห็นว่ามันมีข้อดีมากว่าข้อเสีย แล้วเราคิดเห็นว่าควรจะสร้างมัน ในขั้นตอนนี้เราก็จะออกแบบว่า ระบบของเราจะต้องใช้อะไรบ้างมีอะไรบ้าง และจะสร้างแบบใหน อย่างเช่น การสร้างถนนชนบท ถนนนี้จะต้อง ใช้งบเท่าใหร่ ใช้คอนกรีดเกรดใหนถึงจะกอบโกยกินกันได้ถ้วนหน้า เป็นต้น
4. Systems Development & Implementation คือ ใน 2 ขั้นตอนนี้ผมขอรวมไว้ด้วยกันเลยนะครับ มันคือขั้นตอนการสร้างและลงมือทำนั่นเอง
5. Operation & Maintenance คือเมื่อเราสร้างระบบเสร็จแล้วเราก็จะมีการมาซ่อมแซมระบบที่เราสร้างในขั้นตอนนี้เราอาจจะรวมการทดสอบระบบเข้าไปด้วยก็ได้นะครับ

ในขั้นตอนทั้งหลายเหล่านี้ทุกขั้นตอนสามารถย้อนกลับไปขั้นตอนก่อนหน้าได้ เช่นเมื่อเรา ถึงขั้นตอนการสร้างระบบแล้ว ในการสร้างมันมีปัญหา ตัวอย่างเช่นถนนชนบทของเราเกิดการแตกร้าวหลังจากเริ้มสร้างได้แค่ 2 เมตร เราก็ต้องกลับไปดูในส่วนการออกแบบว่าการออกแบบของเรามีปัญหาหาตรงใหน ใช้คอนกรีตเกรดต่ำเกินไปหรือไม่เป็นต้น


SDLC VS อริยสัจ 4

SDLC อยู่กับเราทุกวันทุกเวลาทุกสถานที่ครับ ไม่ว่าเราจะไปตลาด เราจะกินข้าว เราจะตด เราจะอาบน้ำ คือมันอยู่กับเราทุกที่ จนเราชินและมองไม่เห็นว่ามันมีอยู่ และตามเราเหมือนเงาตามตัว อย่างไรอย่างนั้น ทำไมผมถึงบอกว่ามันอยู่กับเราทุกที่ทุกเวลาแล้วเราไม่รู้สึกว่ามันมีอยู่ ในสมองของคนเรามีการคิดอย่างเป็นระบบอยู่แล้วครับ แต่เราเห็นว่ามันไม่จำเป็นที่จะต้องสนใจอะไรมันเลย ในทางพุทธศาสนาเรามี SDLC ในส่วนของเราเมื่อนานมาแล้วที่เราเรียกว่า "อริยสัจ 4" หรือความจริงอันประเสริฐ 4 ประการนั่นเอง แต่เราเน้นไปในทางการดับทุกข์ ซึ่ง

อริยสัจ 4 นั้นประกอบไปด้วย 

ทุกข์ >> Initial Investigation คือการรู้ว่าทุกของเราคืออะไร
สมุทัย >>System Analysis คือเราต้องรู้ว่าทุกของเราเกิดจากอะไร
นิโรธ >> System Design คือการออกแบบการดับทุกว่าเราจะดับทุกมันด้วยอะไรวิธีการใหน
มรรค >> Systems Development & Implementation คือการทำให้ทุกข์หมดไปนั่นเอง

อริยสัจ 4 กำเนิดมาเมื่อ 2500 กว่าปีก่อน 
SDLC เกิดขึ้นเมื่อไม่กี่ 10 ปี มานี้

(ตัวเลขอาจจะไม่แน่ชัดนะครับเพราะผมเขียนเมื่อ 31 มกราคม 2557 เวลาอาจะเปลี่ยนไปเรื่อยแต่ได้คร่าวๆประมาณนี้นะครับ)



ขอบคุณรูปภาพจากเว็ปไซต์ http://exonous.typepad.com/mis/2005/02/systems_develop.html
http://www.guitarthai.com/webboard/question.asp?QID=354994

วันอาทิตย์ที่ 19 มกราคม พ.ศ. 2557

ควบคุมการเปิดปิดไฟ ด้วยหน้า GUI ผ่าน Serial Port ด้วยภาษาC#

วันนี้ผมนอนไม่หลับเพราะนอนมาหลายชั่วโมงหลังจากไปแข่ง NSC มาผมเลยนอนจนพอละ เลยอยากเขียน blog ก็เลยตื่นตอน "ตี 3" วันนี้ผมจะเขียนเรื่องการเปิดปิดไฟด้วย หน้า User Interface ที่เขียนด้วยภาษา C#
โดยบทความนี้ผมเขียนกัน board Arduino UNO และ Visual c# นะครับ

 1.เริ่มแรกให้ สร้างโปรเจคขึ้นมาใหม่

2. ลาก Serial Port จาก Tool box มาวางไว้บน Form ที่เราสร้างไว้



หากสำเร็จจะมีคำว่า Serial Port อยู่ข้างล่างดังรูป


3. ลากปุ่มที่จะต้องใช้ในการเปิดปิดไฟออกมาวางบน Form


4. ลาก Combo box และปุ่มมาวางเพื่อใช้ในการเลือก Port เผื่อในกรณีที่คอมพิวเตอร์เรามีหลาย Port 


5. เรียกใช้งาน System.IO.Ports


6.เมื่อโหลด Form นี้ขึ้นมาให้ทำ เอา Port Name มาใส่ใน Combo box


7.ใส่ CheckForIllegalCrossThreadCall = false; ข้างบนใน class Form 1

8.เมื่อทำการรันโปรแกรมจะเห็น Port ที่มีอยู่ ของผมมีแค่ port เดียวเลยไม่ต้องเลือก
แต่ผมเขียนไว้เผื่อในกรณีที่คนอื่นเค้าเข้ามาอ่านแล้วเค้ามีหลาย port กันนะครับ



9.เปลี่ยนชื่อปุ่มให้เรียบร้อยแล้ว double click เข้าไปเพิ่มโคดตังนี้


หากมีการคลิกที่ปุ่ม Selectport จะทำการเลือก port จาก combobox แล้วทำการเปิด port นั้น


10.คลิกเข้าไปเพิ่ม Code ในส่วนของปุ่ม ON 

หากมีการคลิกปุ่มนี้ให้มีการส่งค่า 1 ไปยัง bord


ในปุ่ม OFF ก็เขียนเช่นเดียวกัน แต่เปลี่ยนค่า โดยผมให้ค่าที่ส่งไปเป็น 2 ในกรณีปิดไฟ


ทางฝั่งหน้า GUI ก็เสร็จแต่เพียงเท่านี้

11.ในส่วนทางฝั่งโปรแกรมฝังตัวจะอธิบายโคดดังนี้


เมื่อเขียนเสร็จก็ทำการ Upload เข้าไปใน board ได้เลยครับ แล้วลองรัน ดู
********ในกรณีที่ใครมีแค่ port เดียวก็เสียวได้ ก็ไม่ต้องสร้าง combo box เพื่อเลือก port นะครับ สั่งเปิด port ในตอนโหลด form ไปเลยนะครับ*******

 Code เต็มทางฝั่ง GUI นะครับ


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO.Ports;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            CheckForIllegalCrossThreadCalls = false;//เช็ค thread call
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            //รับข้อมูล port name ใส่ Combo Box
            String[] stportname = SerialPort.GetPortNames();
            foreach (String n in stportname)
            {
                comboBox1.Items.Add(n);
            }
            comboBox1.SelectedIndex = 0;

        }

        private void button1_Click(object sender, EventArgs e)
        {

            serialPort1.Write("1");
        }

        private void button3_Click(object sender, EventArgs e)
        {
            //จะเลือก port และเปิด port
            serialPort1.PortName = comboBox1.SelectedItem + "";
            serialPort1.Open();
        }

อีตรง  private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e) ไม่ต้องมีก็ได้นะครับ ผมเผลอกดเข้ามาเฉยๆ อิอิอิอิ
        private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
           
        }

        private void button2_Click(object sender, EventArgs e)
        {
            serialPort1.Write("2");
        }
    }
}


Code เต็มทางฝั่ง Board นะครับ 





void setup() {     
Serial.begin(9600);
  pinMode(13, OUTPUT);    //ให้ pin 13 เป็น output  
}

// the loop routine runs over and over again forever:
void loop() {
  if(Serial.available()>0)
  /*ตองตรวจสอบว่ามีข้อมูลในbufferหรือไม่ถ้ามีจึงจะสามารถใช้Serial.read() ได้*/
    {
      int n = Serial.read();//อ่านค่าออกมา
      switch(n)
      {
        case '1':digitalWrite(13,HIGH);break;//ไฟเปิด
        case '2':digitalWrite(13,LOW);break;//ไฟปิด
      }
    }
}

กรุณาอ่านด้วยนะครับ Copy มากๆมันไม่ดีเดียว program error แล้วหาไม่เจอนะครับ 
กล้องผมถ่ายตอนกลางคืนมันกากมากบ่องตงไดแค่นี้หละอิอิอิอิ