ขอถามใหม่ เกี่ยวกับการสร้างตัวอักษรเพื่อใช้งานบน led matrix display

Started by daimyo18, July 12, 2013, 10:48:18 AM

Previous topic - Next topic

daimyo18

ผมลองทดสอบตามนี้ครับ
ลองแก้ตำแหน่งตัว A เป็น ก ใน table แล้วมาเขียนคำสั่งให้แสดงตัว 'ก' มันขึ้นเป็น -18303
แต่ถ้าแสดงเป็น 'A' มันจะแสดง ก ออก มา จากที่ผมคาด บอร์ด arduino ไม่รองรับภาษาไทยใช่หรือไม่?
แล้วเราจะมีวิธีทำให้มันรู้จักได้อย่างไรครับ

ตำแหน่งตัวอักษรตาม ascii code 256 bit ตาม ISO 8859-1
0x74, 0x0A, 0x01, 0x02, 0x7C, = ก
0x7C, 0x12, 0x11, 0x12, 0x7C = A


matrix.print('A'); ได้ผล = ก
matrix.print('ก'); ได้ผล = -18303


ต้องทำยังไงครับ บอร์ด arduino Uno r3
ผมตรวจสอบใน Preferrence ไม่มี ภาษาไทย...

crywolf

ต้องเข้าใจหลักการก่อนนะครับ

หลักการก็คือ เก็บ Pattern ตัวอักษร เป็น Table ไว้
แล้วใช้ ตัวอักษร ที่ต้องการแสดง เป็น Index ชี้ไปที่ Table

เช่น

matrix.print('A');

'A' ก็คือ 65 เพราะฉะนั้น ข้อมูลที่ 65 ในตาราง จะถูกอ่านมาโชว์

แต่

matrix.print('ก');

'ก' ก็คือ 0xe0 0xb8 0x81 (UTF-8)  เอามาใช้ 16-bit จะได้ 0xb881 หรือ -18303

วิธีแก้มี 2 วิธี
1. ปัจจุบัน Compiler น่าจะ Compile โดยใช้การเข้าระหัสแบบ UTF-8
    ให้ไปตั้ง เป็น ANSI
2. แบ่ง Table เป็น 2 ช่วง คือ ภาษาอังกฤษ กับ ภาษาไทย แล้วเขียนโค๊ดเช็คเอา


daimyo18

ครับพี่ ถึงว่า ทำยังไงมันก็ไม่ได้...
ผมจะลองไปแก้ตามที่บอก ขอบคุณครับ

nai102

สมัยผมเรียนอยู่ผมก็คลั่งใคล้ภาษาไทยมาก ทำมาหลายแบบ หลายฟร้อน ความยากง่ายต่าง กัน
แต่ทิ้งไว้บนหิ้ง ไม่ได้แต่เลยมาน่าจะ 5 ปีได้แล้วมั้ง

daimyo18

จะปีละ ยังไม่เสร็จเลย ๕๕๕ ยากจริงๆ
ตอนนี้เอาภาษาไทยเข้าได้แล้ว แต่ติดพวกอักขระแถมมา
แล้วภาษาก็กระโดด... ปวดเฮดๆ

jx

เคยทำโปรแกรม auto create font โดย browse font จาก PC แปลงเป็นดาต้า แล้วดาวน์โหลดลงโมดูลแสดงผล ตอนนั้นใช้ PIC24



store ข้อมูล font ที่ data flash ทำเป็น structure ระบุความกว้างและความสูงของตัวอักษร เพราะใน true type font ขนาดจะไม่เท่ากันทุก char จัดการ special char เรียบร้อย

สงสัยอะไรปรึกษาได้ครับ

Kittichai_technic

Quote from: daimyo18 on March 12, 2014, 02:37:14 PM
จะปีละ ยังไม่เสร็จเลย ๕๕๕ ยากจริงๆ
ตอนนี้เอาภาษาไทยเข้าได้แล้ว แต่ติดพวกอักขระแถมมา
แล้วภาษาก็กระโดด... ปวดเฮดๆ

ได้ยังครับจะขอคำแนะนำหน่อยครับ