วันพฤหัสบดีที่ 28 มิถุนายน พ.ศ. 2561

SQL Trick! การเปลี่ยนรูปแบบวันที่ใน SQL เป็นรูปแบบวันที่ไทยแบบย่อด้วย SQL CASE WHEN




          วันนี้ผมมีวิธีการแปลงรูปแบบวันที่ ใน SQL ให้อยู่ในรูปแบบวันที่ไทยแบบย่อ มาฝากครับเผื่อได้นำไปประยุกต์ใช้กัน อาจจะดูยาวไปครับ แต่หากท่านในมีวิธีเจ๋งๆ สั้นกว่านี้สามารถแสดงความคิดเห็นแลกเปลี่ยนกันได้ครับ

ตัวอย่าง

2018-06-08 เป็น 8 มิ.ย. 2561


          ก่อนอื่นต้องทำความรู้จักกับ Syntax ของการใช้ SQL CASE..WHEN SQL ก่อนนะครับ ขอไม่อธิบายนะครับ สามารถศึกษาจากเว็บได้ มาดูการเขียนโปรแกรมกันเลยครับ


DECLARE  @DateExample Date = null;
Set @DateExample = '2018-06-08'

select  @DateExample AS Date ,
convert(nvarchar(10),DAY (@DateExample)) + ' ' +
        (CASE
         WHEN  MONTH (@DateExample) = '1'THEN N'..'
         WHEN  MONTH (@DateExample) = '2'THEN N'..'
         WHEN  MONTH (@DateExample) = '3'THEN N'มี..'
         WHEN  MONTH (@DateExample) = '4'THEN N'เม..'
         WHEN  MONTH (@DateExample) = '5'THEN N'..'
         WHEN  MONTH (@DateExample) = '6'THEN N'มิ..'
         WHEN  MONTH (@DateExample) = '7'THEN N'..'
         WHEN  MONTH (@DateExample) = '8'THEN N'..'
         WHEN  MONTH (@DateExample) = '9'THEN N'..'
         WHEN  MONTH (@DateExample) = '10'THEN N'..'
         WHEN  MONTH (@DateExample) = '11'THEN N'..'
         WHEN  MONTH (@DateExample) = '12'THEN N'..' END) + ' '+

         convert(nvarchar(4),year (@DateExample)+543) AS ConvertFormatDate

        
ผลลัพธ์
          แล้ว543 มาได้ยังไง?

           จะเห็นได้ว่า ปี ค.. จะน้อยกว่า พ.. ครับ ถ้าอยากทราบว่าห่างกันเท่าไหร่ลองเอา  .. ลบ ด้วย ค.. ครับ
 เช่น 2560 – 2018 ได้เท่ากับ 543

            ดังนั้นหากเรามีข้อมูลของปีเป็น  .. แต่เราต้องการ ข้อมูลของปีเป็น  .. ก็ให้นำ ค.. บวก 543
เช่น 2018 + 543 จะได้เท่ากับ 2561 ซึ่งก็คือ พ.. นั่นเอง

วันอังคารที่ 26 มิถุนายน พ.ศ. 2561

IF - Else จุดเริ่มต้นโดยไม่มีจุดสิ้นสุด (การใช้ IF ELSE แบบเปรียบเทียบกับชีวิตประจำวัน)






 IF - Else จุดเริ่มต้น โดยไม่มีจุดสิ้นสุด

           ก่อนอื่นต้องขออธิบายก่อนครับว่า ที่ผมต้องชื่อหัวข้อว่า
“IF - Else จุดเริ่มต้น โดยไม่มีจุดสิ้นสุด หมายถึงอะไร ทำไมมันคือจุดเริ่มต้น IF Else ผมเชื่อว่าหลายสายงานต้องได้เจอกับ ไม่เพียงแต่งานด้าน Programming เพียงอย่างเดียว สายอาชีพอื่นก็ต้องเจอครับ อย่างเช่นงานที่ออกแบบเกี่ยวกับ Flow การทำงานต่างๆก็อาจได้เจอ แต่ลักษณะการนำมาใช้งานอาจจะแตกต่างกัน คำว่าจุดเริ่มต้นก็คือ ผู้เรียนการเขียนโปรแกรมในระดับเริ่มต้นจะได้ได้เจอกับ IF – Else แน่นอน และพอจบการศึกษา พอเข้าทำงานไม่ว่างานจะยากหรือง่ายก็ต้องได้เจอเจ้า IF – ELSE  อยู่ดี ผู้ที่มาด้านนี้จึงจำเป็นต้องทำความเข้าใจให้ได้ครับ
           
         จุดประสงค์ของบทความนี้คือ เพื่อจะอธิบายการใช้  IF – ELSE  แบบเข้าใจง่าย โดยผมขอยกตัวอย่าง IF – ELSE  ในชีวิตประจำวันสัก 1 ตัวอย่าง เช่น การ Scan ปลดล็อคประตูหอพัก ท่านอาจจะถามว่า แล้วมันเกี่ยวอะไรกับเจ้า IF – ELSE  ?” แน่นอนครับการที่ประตูมันจะเปิดได้มันต้องมีเงื่อนไขแน่นอน 

IF - ELSE ที่ว่านี่ก็คือ Condition หรือเงื่อนไขนั่นเอง



สมมติว่าผู้สร้างประตูได้กำหนดว่าประตูจะสามารถปลดล็อดได้ 


        ถ้า (ชิพที่สแกนเมื่อถอดรหัสแล้ว รหัสตรงกับ รหัสที่ตั้งไวในระบบ)


          {


            ประตูจะปลดล็อค


            ส่งเสียงยินดีต้อนรับเข้าสู่หอพัก

          }


        แต่ถ้าชิพที่สแกนถอดรหัสแล้ว ไม่ตรงกับ รหัสที่ตั้งไวในระบบ


          {

    
           ประตูไม่สามารถปลดล็อคได้
        
           แสดงไฟเตือน

          }



          หรือ อธิบายแบบสั้นก็ อย่างเช่น

          If (เงื่อนไขในวงเล็บเป็นจริง)


           {
             

            กำหนดการกระทำในปีกกานี้

           }

          Else


           {


           กำหนดการกระทำในปีกกานี้


            }
          

          สำหรับ วงเล็บหรือปีกกาจะไม่ตายตัวทุกภาษาบางภาษาก็ไม่ใส่ปีกกา ทั้งนี้ขึ้นอยู่กับ Syntax ของแต่ละภาษา



If - Else Condition flow chart 


          ที่นี้มาลองเขียนโปรแกรมง่ายด้วย ภาษา C++ กันครับ 

ผมขอแนะเว็บที่ใช้ Compile ภาษา C/C++ online 

คือเว็บนี้ครับ https://www.onlinegdb.com/online_c_compiler


ลองเขียนโปรแกรมตามนี้ครับ ผมขอใช้เป็นรูปภาพนะครับเพื่อจะได้นำไปฝึกเขียนด้วยตนเอง

ทดสอบการใช้ IF - ELSE

ผลลัพธ์เมื่อเงื่อนไขเป็นจริง


ผลลัพธ์เมื่อเงื่อนไขเป็นเท็จ


    หวังว่าบทความนี้จะเป็นประโยชน์ และไขข้อสงสัยเกี่ยวกับ IF-ELSEครับ ท่านสามารถแสดงความคิดเห็นเชิงสร้างสรรค์ได้ครับผม ขอบคุณครับทุกท่านที่ติดตามครับ

วันพุธที่ 21 กุมภาพันธ์ พ.ศ. 2561

C# การเขียนโปรแกรมถอดรหัสคิวอาร์โค้ดด้วย MessagingToolkit.QRCode


C# การเขียนโปรแกรมถอดรหัสคิวอาร์โค้ดด้วย MessagingToolkit.QRCode



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

       - การเขียนโปรแกรม C# Windows Form Application 


      มาเริ่มกันเลยครับ ผมจะเริ่มต้นตั้งแต่การสร้างโปรเจคเลยครับ 

1. สร้างโปรเจ็คตั้งชื่อให้เรียบร้อย



2.  เลือก Tool ครับ



3. ออกแบบ UI (User Interface) โปรแกรม


4. ทำการ Download ไบลารี่ MessagingToolkit.QRCode



5.  เรียกใช้ สร้าง MessagingToolkit.QRCode และ  Even Method สำหรับปุ่มโดยการดับเบิ้ลคลิกที่ปุ่มทั้งสอง


6. Ready to coding 




7. Coding 



8.  ทดสอบ Run โปรแกรม 


ทดสอบการทำงานโปรแกรม

Download Source Code Click

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

ขอบคุณทุกท่าน

วันอังคารที่ 20 กุมภาพันธ์ พ.ศ. 2561

ระบบปลดล็อคประตูด้วย QR code scanner ผ่านกล้อง Webcam

ระบบปลดล็อคประตูด้วย QR code scanner
ผ่านกล้อง Webcam




มาเป็นเพื่อนในไลน์กับเราซิ เรารับทำหรือปรึกษาฟรี Add line

บอร์ด Arduino สั่งซื้อ ที่นี่ หรือ ที่นี่
สั่งซื้อ Relay module ได้ที่ คลิกสั่งเลย
สั่งซื้อกล้อง Webcam คลิกสั่งเลย

          สวัสดีครับเพื่อนๆ พี่ๆน้องๆที่กำลังอ่านบทความนี้ทุกท่านครับ ก่อนอื่นผมต้องขอขอบคุณทุกท่านที่ติดตามอ่านบทความของผม วันนี้ผมมีบทความที่น่าสนใจมาฝากทุกท่าน โดยหวังว่าผู้ที่ได้อ่านบทความนี้ จะได้ประโยชน์หรือนำไปประยุกต์ใช้งานให้ตรงกับเป้าหมายที่ท่านได้วางไว้ไม่มากก็น้อยครับ
         บทความนี้จะนำเสนอเกี่ยวกับระบบรักษาความปลอดภัยรูปแบบหนึ่ง เป็นระบบปลดล็อคกลอนแม่เหล็กไฟฟ้าด้วย QR Code ผ่านกล้องเว็บแคม  Qr code ถือเป็นเทคโนโลยีที่ใช้กันอย่างแพร่หลาย สามารถบันทึกลงบนโทรศัพท์ Smart phone ได้หรือ พิมพ์ลงบนแผ่นกระดาษก็ได้ ระบบปลดล็อคยุกแรกๆที่เราพอจะเห็นกันทั่วๆไปคือจะเป็นแบบ Key ให้ใส่รหัส หรือแบบชิพ RFID และ QR code ก็มีผู้พัฒนาและใช้กันอย่าแพร่หลายเช่น บทความนี้จึงเหมาะสำหรับผู้ที่ต้องการพัฒนาหรือนำไปต่อยอดเพิ่มเติมได้ ผมขออธิบายระบบการทำงานด้วยบล็อคไดอะแกรมดังนี้

1. ด้าน Software Application interface
 
     พัฒนาด้วยโปรแกรม Visual Studio C# หรือ ท่านจะให้ภาษาอื่นแล้วแต่ถนัด ใช้ในการออกแบบ User Interface เพื่อง่ายต่อการใช้งาน
บล็อคไดอะแกรมของระบบการทำงานในส่วนของ Windows Form Application 

           เมื่อ User เมื่อทำการถ่ายภาพ แล้วโปรแกรมตรวจสอบว่าภาพถ่ายเป็น QR code หรือไม่ หากว่าตรวจสอบแล้วเป็น Qr code ทึี่ถูกต้องโปรแกรมจะทำการ Decode (ถอดรหัส) เป็น text data เก็บไว้ แต่หากถ่ายภาพแล้วพบกว่าภาพนั้นไม่ใช้ QR code หรือเป็นโปรแกรมจะแสดงข้อความบอกความผิดพลาด

 ภาพการถ่ายภาพ  QR code และโปรแกรมทำการตรวจแล้ว QR code ถูกต้อง


ภาพการถ่ายภาพทั่วไป และโปรแกรมทำการตรวจแล้ว QR code ไม่ถูกต้อง


ทดสอบระบบการทำงาน

          เมื่อถอดรหัสจาก QR code เรียบร้อยแล้วนำ text data ที่ถอดรหัสได้เก็บใน text box ในรูปแบบสายอักขระ (String) จากนั้นโปรแกรมตรวจสอบเงื่อนไข ถ้าสายอักขระที่รับเข้ามาจากการแปลงด้วย QR code ตรงกับสายอักขระที่ตั้งไว้ภายในเงื่อนไข โปรแกรมเขียนอักขระ "1" ส่งไปยัง Serial port หากกดปุ่มล็อค โปรแกรมเขียนอักขระ "2" ส่งไปยัง Serial port


2. ด้าน Hardware programming 

         ในขั้นตอนนี้จะเป็นการเขียนโปรแกรมฝั่งของ Microcontroller ในที่นี้จะใช้บอร์ด Arduino โดยพัฒนาโปรแกรมให้อ่านค่าจาก Serial port แล้วนำค่าที่อ่านได้ไปเปรียบเทียบเพื่อ เพื่อกำหนดสัญญาณเอาต์พุทว่าจะให้ Active สัญญาณออกเป็น High หรือ Low


บล็อคไดอะแกรมของระบบการทำงานในส่วนของ Arduino Controller 


          ขั้นตอนนี้เขียนโปรแกรมฝั่งของ Arduino โดยเราเรียก Library Serial.read(); เพื่ออ่านDataจากฝั่งของโปรแกรมที่ Windows App  ส่งมาแล้วนำค่าไปเข้าเงื่อนไข

การทำงานระหว่างโปรแกรมฝั่ง Software และ ฝั่ง Hardware
          - ประกาศตัวแปร int Serial_in เพื่อเก็บค่าที่ได้จากการอ่านค่า Data จาก Serial port
          - กำหนด pinMode สำหรับ Output เพื่อนำไปขับวงจร Relay
          - เก็บค่า Data ที่อ่านได้ด้วย Library Serial.read() ไปเก็บไว้ที่ Serial_in
          - ทำการตรวจสอบเงื่อนไขว่าถ้า Serial_in  มีค่าเป็น 1 ให้Output Active 1(มีแรงดันไฟฟ้าเป็นบวก)
          - แต่ถ้า Serial_in  มีค่าเป็น 2  ให้Output Active 0(มีแรงดันไฟฟ้าเป็นลบ)

แสดงการทำงานสวนของ Hardware 


        สำหรับการต่อวงจรนั้นผมขอยกภาพวงจรการต่อ แบบไม่ซับซ้อนได้ดังนี้
การต่อวงจรในส่วนของ Hardware 


          การต่อวงจรจะใช้ Relay Module แบบ Normal Open (NO) Active 1 หมายความว่าวงจร Relay จะทำงานเมื่อมีแรงดันไฟบวกจาก Controllerเข้าที่ Input ทำการจ่ายแรงดัน +12V จากแหล่งจ่ายไฟกระแสตรงให้กลอนแม่เหล็กไฟฟ้า แล้วต่อกราวด์เข้ากับจุด Common (COM) เมื่อ Input ของวงจร Relay module เป็นบวกส่งผลให้วงจร Relay module ทำงานและจุด COM กับ NO ต่อกันเหมือนกับสวิตช์ ทำให้มีกระแสไฟฟ้าไหลผ่านขดลวดแม่เหล็กไฟฟ้า เมื่อครบวงจรกลอนไฟฟ้าจึงทำงานดูดสลักกลอนเข้าไป และเมื่อ Input ของวงจร Relay module เป็นล (0) กลอนแม่เหล็กไฟฟ้าก็จะกลับสู่สถานะเดิม คือคลายสลักออกมา

ทดสอบการทำงานของระบบ


          สำหรับบทความนี้ต้องขออภัยหากมีข้อผิดพลาดประการใดหรือการเขียนบทความอาจจะไม่มืออาชีพเพราะผมอาศัยการทดลองและเขียนไว้กันลืิมด้วยเพราะมีระบบอื่นที่ต้องการศึกษาอีกมากมาย การทดสอบระบบจริงๆ จะต้องปรับการถ่ายภาพ ให้สามารถถ่ายภาพได้โดยอัตโนมัติ ถ้าไม่ติดขัดอะไรผมจะทำการทดลองในขั้นต่อไป และมาอัพเดตให้เพื่อนๆ พี่ๆ น้องๆ ได้ติดตามกัน

Download source code ที่นี่
มาเป็นเพื่อนในไลน์กับเราซิ เรารับทำหรือปรึกษาฟรี Add line
เป็นโปรเจ็คสำหรับทดลองด้วยคนเอง ขอสงวนสิทธิในการตอบคำถามบางกรณี