[POP-XT] [IPST-SE] การแสดง String บนหน้าจอ GLCD ของบอร์ด Unicon, POP-XT และ IPST-SE

      โดยปกติแล้วคำสั่ง glcd ที่ใช้แสดงข้อความบนหน้าจอ GLCD ของบอร์ด Unicon, POP-XT และ IPST-SE (ขอเรียกสั้นๆว่าบอร์ด INEX) จะไม่สามารถแสดงค่าจากตัวแปร String ได้โดยตรงเหมือนคำสั่ง Serial Print

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

      โดยหลักการก็คือจะต้องทำการแปลง String ให้กลายเป็น Char Array เสียก่อน แล้วจึงนำ Char Array ที่ได้ไปแสดงใน GLCD มีรูปแบบคำสั่งดังนี้

String message = "Hi INEX!";
char buffer[message.length() + 1];
message.toCharArray(buffer, message.length() + 1);
glcd(0, 0, buffer);

      ผมสร้างตัวแปร String ขึ้นมาชื่อว่า message โดยให้เก็บข้อความว่า Hi INEX! แล้วสร้างตัวแปร Char Array ขึ้นมาชื่อว่า buffer (เพราะสร้างขึ้นมาเพื่อเก็บข้อมูลจาก message เพื่อนำไปใช้งาน จึงนิยมตั้งชื่อกันว่า buffer)  โดยกำหนดให้จำนวนสมาชิกมีเท่ากับจำนวนของ message บวก 1 เมื่อกลับไปดูที่ message จะเห็นว่าข้อความ Hi INEX! มีตัวอักษรทั้งหมด 8 ตัวอักษร ดังนั้น buffer ก็จะมีจำนวนสมาชิกได้ 9 (8 + 1) ตัว

      เมื่อสร้างตัวแปรเรียบร้อยแล้ว จะใช้คำสั่ง toCharArray ซึ่งเป็นคำสั่งของ String เพื่อแปลงข้อมูลใน String ให้กลายเป็น Char Array ซะ โดยกำหนดให้เก็บข้อมูลที่แปลงเป็น Char Array ไว้ใน buffer และข้อมูลที่ต้องการแปลงทั้งหมด (กำหนดไว้ 9 ตัวเช่นกัน) เพียงเท่านี้ String ของ message ก็จะถูกแปลงเป็น Char Array แล้วเก็บไว้ใน buffer เป็นที่เรียบร้อย

     จากนั้นก็นำไปแสดงบน GLCD ด้วยคำสั่ง glcd ได้เลย โดยตัวอย่างข้างต้นจะแสดงที่แถวแรกสุดและตัวแรกสุด

 

     แต่ถ้าจะให้ใช้คำสั่งนี้ทุกๆครั้งที่ต้องการแสดง String บน GLCD ก็คงกระไรอยู่ ดังนั้นก็ควรจะรวบคำสั่งให้เป็นฟังก์ชันเพื่อให้เรียกใช้งานได้ง่ายขึ้นซะ

void glcdPrintString(int row, int col, String message) {
    char buffer[message.length() + 1];
    message.toCharArray(buffer, message.length() + 1);
    glcd(row, col, buffer);
}

       เวลาเรียกใช้ก็เรียกฟังก์ชันดังกล่าวแล้วกำหนดข้อความและตำแหน่งของข้อความลงไป

glcdPrintString(2, 1, "Hi INEX!");
glcdPrintString(3, 2, "Welcome to");
glcdPrintString(4, 3, "robot world");

     หรือจะแสดงข้อความพร้อมกับค่าของตัวแปรนั้นๆก็ได้เช่นกัน

int age = 25;
int weight = 65;
glcdPrintString(0, 0, "AGE:" + age);
glcdPrintString(1, 0, "WEIGHT:" + weight);

     เพียงเท่านี้ก็สามารถแสดง String บน GLCD ได้แล้ว

 

 

Facebook Comments