การเขียนโปรแกรมประยุกต์ C# ติดต่อกับ Serial Port Computer
    
    เดิมที่ในตอนนนี้ ผมจะเขียนเรื่องการเขียนโค๊ด C# เพื่อติดต่อกับ Serial Port Computer แต่ ผมกลับลืมไปว่า ควรจะบอกเรื่องรูปแบบข้อมูล (Protocol) ที่จะเขียนติดต่อกันระหว่าง Computer กับ ไมโครคอนโทรลเลอร์ เพราะถ้าไม่ตกลงกันก่อนทั้งสองฝั่ง ก็จะไม่สามารถที่จะออกแบบโปรแกรมที่ติดต่อกันได้ เพราะไม่รู้จะเขียน รับส่งกันแบบไหน เอาเป็นว่า ผมขอกล่าวเรื่องรูปแบบการติดต่อกันไว้ตรงนี้เลยหล่ะกัน (ย้อนกลับไปอ่าน ตอนที่ 1 หากยังไม่ได้อ่าน) 

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

    



สมมุติเหตุการณ์ดังนี้ ไมโครคอนโทรลเลอร์ำทำการอ่านค่าสัญญาณแรงดันไฟตรงผ่านทางช่อง ADC  แล้วทำการส่งค่าที่อ่านได้ไปที่โปรแกรมที่เราเขียนด้วย Visual C# ที่อยู่บนคอมพิวเตอร์ทำการอัพเดทค่าบนหน้าจอ จากนั้นที่หน้าต่างของโปรแกรมที่เราเขียนขึ้น จะมีปุ่ม button ให้เรากด เมื่อเรากดปุ่มไหน ให้ส่งค่ามาบอกที่ไมโครคอนโทรลเลอร์จากนั้นให้ LED ติดตามตำแหน่งปุ่มที่กด 

จากโจทย์ืที่เรากำหนดขึ้นมา พอจะนำมาเขียนเป็นรูปแบบการสื่อสารได้ดังนี้ 

MCU ทำการส่งข้อมูลออกไป โดยมีรูปแบบดังนี้   #ADC1,ADC2,ADC3*   โดยเราให้
  • # แสดงการเริ่มต้นส่งข้อมูล
  • ADCx ค่าอนาล๊อกที่อ่านได้จากช่อง Analog input ของ MCU มีค่าอยู่ระหว่าง 0-1023
  • * แสดงจุดสิ้นสุดข้อมูล  
ซึ่ง Visual C# จะรับข้อมูลแล้วไปประมวลผลตามที่เราออกแบบไว้ จากนั้น Visual C# สามารถส่งข้อมูลออกไปหาที่ตัว MCU ได้ด้วยรูปแบบดังนี้  #Button1,Button2,Button3* โดยเราให้ 
  • # แสดงการเริ่มต้นส่งข้อมูล
  • Buttonx แสดงค่าสถานะการกดปุ่ม  0:ปุ่มไม่ถูกกด,  1:ปุ่มถูกกด 
  • * แสดงจุดสิ้นสุดข้อมูล
ในโลกความเป็นจริง รูปแบบโปรโตคอลนั้น ซับซ้อนกว่านี้เยอะ แต่ ในที่นี้ เราจะทำความเข้าใจจากตัวอย่างง่ายๆ อย่างนี้ไปก่อน เพื่อเป็นพื้นฐานต่อไป 
    
    ทีนี้ เราก็เริ่มมาออกแบบโปรแกรมด้วย Visual C# เพื่อให้รับข้อมูล และส่งข้อมูลออกไปทาง Serial Port Computer เริ่มจากการออกแบบ GUI กันก่อนครับหากใครเคยเขียน .NET มาบ้าง ตรงนี้ ไม่น่าจะยากนะครับ