นานๆทีจะได้มีโอกาสเข้ากรุงเทพกับเขาบ้าง เวลาขับรถผ่านปั๊มแก๊สทีไรก็นึกถึงแต่กระทู้เสียงเตือนปั๊มแก๊สทุกที
มีหลายปั๊มที่มีแต่ icon และเสียงเตือน แต่ไม่มีตัวปั๊ม บางที่ก็มีปั๊มเปิดใหม่ ก็เลยถือโอกาสตั้งกระทู้ใหม่เสียเลย
กระทู้นี้นอกจากจะมีการ update เพิ่มเติม(เล็กน้อย)แล้ว ยังได้จัดรูปแบบของการเขียนไฟล์ lpg.tex เพื่อให้สะดวก
ต่อการแก้ไข โดยการเพิ่มรายละเอียดของทุกพิกัดในไฟล์ ipg.txt เผื่อท่านใดอยากจะแก้ไข หรือ เพิ่มเติม
จะทำให้สะดวกขึ้นในการแก้ไขในภายหลัง และที่เพิ่มขึ้นมาอีกเรื่องคือ การปรับแต่งเสียงเตือนให้ได้ตรง
กับความต้องการของแต่ละท่าน ขอเริ่มเลยนะครับ
ตัวอย่างไฟล์ครับ เราสามารถใส่รายละเอียดเพิ่มได้ เพื่อประโยชน์ในการแก้ไขเพิ่มเติมในภายหลังครับ
X,Y,TYPE,SPEED,DIRTYPE,DIRECTION
104.819633,15.226133,15,0,0,0 ;LPG อุบล หาดคูเดื่อ
100.544033,13.829933,15,0,0,0 ;LPG amJAY
100.63843,13.83925,15,0,0,0 ;LPG Caltex รามอินทรา 40
99.346212,9.11553,15,0,0,0 ;LPG Caltex สุราษฎร์ธานี
98.975693,18.766282,15,0,0,0 ;LPG G-gas เชียงใหม่
100.89941,14.585015,15,0,0,0 ;LPG G-Gas ห้วยบง
ต่อไปเป็นวิธีปรับแต่งเสียงเตือนเพื่อให้ได้ตามความต้องการของผู้ใช้ ที่เพิ่มจากกระทู้ก่อนคือ
1. ระยะในการเตือนจะเพิ่มขึ้นได้สูงสุดเป็น 2000 เมตร ในทุกความเร็ว ขึ้นอยู่กับข้อมูลถนนบนแผนที่ด้วย
1.1โดยปกติถนนทุกถนนจะมีค่าของความเร็วฝังติดมากับแผนที่ แต่ละถนนก็มีค่าความเร็วไม่เท่ากัน
ถ้าเราไม่เพิ่มอะไรเลยใน sys.txt ระยะการเตือนก็จะมีความสำพันธ์กับความเร็วที่ใช้
โดยจะขึ้นอยู่กับค่าของถนนที่ถูกกำหนดมากับตัวโปรแกรม ยกตัวอย่างเช่น
ถนนที่ถูกฝังค่าความเร็วไว้ที่ 30 กิโลเมตรต่อชั่วโมง ถ้าเราใช้ความเร็วไม่เกิน 30 กิโลเมตรต่อชั่วโมง
ตัวโปรแกรมก็จะกำหนดระยะของการเตือนเป็น 300 เมตร คือเริ่มเตือนในระยะ 300 เมตรก่อนถึงจุดที่ตั้งไว้
ระยะทางในการเตือนมันก็จะเพิ่มขึ้นตามความเร็วที่เราใช้โดยอัตโนมัติ โดยที่เราไม่ต้องไปใส่ค่าอะไรใน sys.txt
รูปแบบนี้จึงเหมาะสำหรับการเตือนที่มีความเร็วเข้ามาเกี่ยวข้องด้วย หรือถ้าเราต้องการกำหนดค่าความเร็ว
กับระยะทางเองก็ได้โดยใช้คำสั่งดังนี้ไน sys.txt
warn_distances="100:1000,80:800,60:500,50:400,40:100"
ความหมายของคำสั่งนี้คือ ตัวเลขข้างหน้าจะเป็นค่าความเร็ว:ตัวเลขหลังจะเป็นค่าระยะทาง
เช่น ถ้าเราใช้ความเร็วไม่ถึง 50 กม./ชม มันก็จะเริ่มเตือนที่ระยะเพียงแค่ 100 เมตร เท่านั้น
หรือเราใช้ความเร็ว 60 กม./ชม แต่ไม่ถึง 80 กม./ชม มันก็จะเตือนที่ระยะ 500 เมตร
การเขียนคำสั่งตายตัวแบบนี้ ถ้าไม่เข้าใจ ความหมายที่แท้จริง ก็อาจจะทำให้คนเขียนคำสั่งสับสนเอง
เวลาเอาไปใช้งานจริงๆ เช่น ทำไมบางครั้งเตือนที่ระยะ 100 เมตร หรือบางครั้งเตือนที่ระยะ 500 เมตร
1.2 สำหรับเสียงเตือนที่เราต้องการใช้ในกระทู้เสียงเตือนปั๊มแก๊สนั้นเราไม่ต้องการให้ความเร็วเข้ามาเกี่ยวข้องด้วย
คือเราจะใช้ความเร็วเท่าไร ระยะการเตือนก็จะคงที่เสมอ แต่ก็มีเงื่อนไขอีกว่าต้องเป็นถนนเส้นเดียวกันเท่านั้น (ชื่อถนนเดียวกัน)
เช่นเรากำลังอยู่ที่ถนนเทียมดิฐอุทิศ แล้วบังเอิญมีปั๊มแก๊สข้างหน้าซึ่งอยู่บนถนนราษฎร์ดำริ ซึ่งถนนสองเส้นนี้ ต่อเป็นเส้นเดียวกัน
จากตำแหน่งรถถึงปั๊มแก๊สมีระยะทางไม่ถึง 500 เมตร ทั้งที่เราตั้งให้เตือนที่ระยะ1500 เมตร แต่ก็ยังไม่มีการเตือน
เหตุผลเพราะว่าเราไม่ได้อยู่บนถนนราษฎร์ดำริ ซึ่งมีปั๊มแก๊สตั้งอยู่ มันจะเริ่มเตือนเมื่อเรา
เข้าไปถึงจุดเริ่มต้นของถนนราษฎร์ดำริก่อน ซึ่งจุดเริ่มต้นของถนนราษฎร์ดำริถึงปั๊มแก๊สมีระยะทาง
เพียง 250 เมตร ดังนั้นมันก็จะเริ่มเตือนในระยะเพียงแค่ 250 เมตรเท่านั้นเองครับ ตัวอย่างนี้ใช้ในกรณีที่ยังไม่ได้สร้างเส้นทาง
แต่ถ้าเราสร้างเส้นทางขึ้นมาแล้ว มันก็จะไม่สนใจว่าถนนเส้นนั้นจะเป็นถนนคนละเส้นหรือหรือคนละชื่อ มันจะมองคล้ายกับว่าเป็น
ถนนเส้นเดียวกัน
ระยะทางจากจุดเริ่มต้นของถนนถึงปั๊มแก๊ส 250 เมตร
ระยะทางจากจุดเริ่มต้นของถนนถึงปั๊มแก๊ส 1400 เมตร
1.3 รูปแบบในการตั้งค่า แบบไม่ต้องมีค่าความเร็วมาเกี่ยวข้องมีดังนี้
[speedcam_category:15]
warn_distances="0:1500" >ตัวเลขข้างหน้าคือความเร็ว:ตัวเลขหลังเป็นระยะทาง
activated_spoken_type=speech >เมื่อถึงระยะ 1500 เมตร ก็จะพูดในบรรทัดถัดไปเพียงครั้งเดียว
activated_speech="เติม..แก๊ส.."
อธิบายเพิ่มเติมสำหรับค่าใน sys.txt
warn_distances="0:1500" ปกติรูปแบบการเขียนแบบนี้เราจะไม่ค่อยได้พบเห็นกันเท่าไร
ตัวเลขข้างหน้าเราจะใส่ค่าอะไรก็ได้ (บังคับต้องใส่) ซึ่งของผมที่ใช้อยู่ใส่ค่า=0 ส่วนตัวเลขข้างหลัง
เป็นตัวกำหนดระยะทางที่จะให้เตือน ค่าสูงสุด=2000 ซึ่งก็คือ 2000 เมตร เปลี่ยนได้ตามชอบใจ
2. สามารถตั้งเสียงเตือนซ้ำใด้ในทุกระยะที่ต้องการเตือนด้วยการสั่งดังนี้
[speedcam_category:15]
warn_distances="0:1500" ; สั่งให้เเริ่มเตือนในระยะ 1500 เมตร
approach_beep_distances="150,150" ; ให้เตือนซ้ำในทุกๆ 150 เมตร
activated_spoken_type=speech
activated_speech="เติม..แก๊ส.."
approach_beep_spoken_type=speech ; ให้การเตือนซ้ำเป็นแบบเสียงพูดตามข้อความในบรรทัดถัดไป
approach_beep_speech="จะเติม.หรือ.ไม่เติม.ค๊ะ.."
อธิบายเพิ่มเติมสำหรับค่าใน sys.txt
approach_beep_distances="150,150" การเตือนซ้ำจะถูกแบ่งออกเป็นสองช่วง ทีเครื่องหมาย "," คั่นกลาง
ถ้าตัวเลขข้างหน้าและหลังเท่ากัน ก็ไม่ต้องคิดยาก จากตัวอย่างจะเป็นการเตือนซ้ำทุกๆ 150 เมตร
แต่ถ้าตัวเลขข้างหน้าและหลังไม่เท่ากันก็จะเป็นดังตัวอย่างต่อไปนี้
approach_beep_distances="50,200" เสียงเตือนซ้ำก็จะถูกแบ่งออกเป็นสองช่วง ถ้าเราตั้งการเตือนไว้ที่ 1500 เมตร
ก็จะถูกแบ่งครึ่ง คือครึ่งละ 750 เมตร แต่ถ้าจุดเริ่มต้นของถนน ถึงปั๊มแก๊สมีระยะไม่ถึง 750 เมตร มันจะใช้ค่าของเสียงเตือนซ้ำ
ในช่วงหลังเท่านั้น ตัวเลข 200 จะเป็นการเตือนซ้ำในช่วงแรก ส่วนตัวเลข 50 จะเป็นการเตือนซ้ำในช่วงหลัง คือใกล้จะถึงจุดหมาย
รูปแบบการเตือนแบบนี้จะเหมาะสำหรับคนที่ชอบเสียงเตือนถี่ๆเมื่อเวลาใกล้จะถึงจุดที่ตั้งเอาไว้
หรือจะแบ่งออกเป็น3ช่วงก็ได้ครับ หลักการเหมือนกันเลยครับ ตัวอย่างเช่น
approach_beep_distances="50,100,200"
คือแบ่งเป็น3ช่วงของระยะทางที่ตั้งไว้ สมมุติว่าเราตั้งระยะการเตือนไว้ที่ 1500 เมตร =ช่วงละ 500 เมตร
500เมตรแรกเตือนทุกๆ200เมตร 500เมตรต่อไปเตือนทุกๆ100เมตร และ 500เมตรสุดท้าย เตือนทุกๆ50เมตร
หรืออาจะแบ่งออกมากกว่า 3 ช่วงก็ได้ครับ หลักการก็ยังคงเหมือนเดิมครับ แล้วแต่ความต้องการของแต่ละท่านครับ
หรือถ้าไม่ต้องการให้มีการเตือนซ้ำ ก็ไม่ต้องใส่สองบรรทัดนี้ครับ
approach_beep_spoken_type=speech
approach_beep_speech="จะเติม.หรือ.ไม่เติม.ค๊ะ.."
ประโยชน์ของการเตือนซ้ำก็คือ เราจะไม่พลาดเสียงเตือนในทุกกรณี เช่นบังเอิญเสียงเตือนปั๊มแก๊ส
ถูกคำสั่งหลักเข้ามาขัดจังหวะ เช่น "กำลังคำนวณเส้นทางใหม่" เราก็จะไม่ได้ยินเสียงเตือนปั๊มแก๊ส
อีกเลย เพราะมันจะพูดแค่เพียงครั้งเดียวเท่านั้น
ตัวอย่าง sys.txt เฉพาะที่จำเป็นต้องใส่ ใช้ data.zip ตัวเดิมๆ ไม่ต้องปรับแต่งครับ
[warning]
speedcam_enabled=1
speedcam_warning=1
[speedcam_category:15]
warn_distances="0:2000" ;แนะนำให้ใช้ค่า 1000 จะได้ระยะค่อนข้างจะคงที่
approach_beep_distances="200,50" ;ผมชอบเตือนซ้ำแบบเริ่มต้นถี่ ใกล้จะถึงห่างครับ
activated_spoken_type=speech
activated_speech="เติม..แก๊ส.."
approach_beep_spoken_type=speech
approach_beep_speech="จะเติม.หรือ..ไม่เติม.ค๊ะ.."
สำหรับท่านที่ใช้เสียงไทยใจดี หรือเสียงอื่น ที่ไม่ใช่ TTS ท่านสามารถสลับไปใช้ได้เลย ไม่ต้องแก้ไขค่าใน sys.txt ทุกอย่างเหมือนกันหมด
ทั้งระยะเริ่มเตือน ระยะการเตือนซ้ำ เพียงแต่เสียงการเตือนจะเป็นรูปแบบมาตรฐานของ Primo คือเสียงดัง ตุ๊ง ถ้าท่านต้องการเสียงพูด ก็เอาเสียง
ที่คุณ temptime01 มาใส่ได้เลย วิธีทำตามกระทู้นี้ครับ http://www.navthai.com/smf/index.php?topic=3166.0
หรือ ถ้าใครอยากใช้เสียง TTS แต่ไม่ต้องการเสียงพูดเตือน เพราะบางท่านไม่อยากมีปัญหากับ RAM ต้องการแค่เสียง ตุ๊ง ก็ทำได้นะครับ
จากตัวอย่างทั้งหมดสามารถนำไปใช้ได้กับทุกรูปแบบของไฟล์ และในทุกแคตตาล็อคของ speedcam ใน Primo ครับ
อันนี้เป็นไฟล์ lpg.txt ที่แก้ไขแล้ว ซึ่งเดิมจะมี 3-4 ไฟล์ ให้ลบออกทั้งหมด แล้วโหลดไฟล์นี้ไปวางแทนเพียงไฟล์เดียวครับ