Skip to content

Prajuab Riabroy's Blog

Survey Application – GNSS – UAV – Programing – Python – Dart&Flutter – Rust

Menu
  • Home
  • About Us
  • Survey Application
    • Surveyor Pocket Tools
    • Traverse Pro
    • XSection Plot
    • Geoid Height Pro
    • Spot Fire
    • โปรแกรมงานสำรวจสำหรับเครื่องคิดเลข Casio fx-5800P
    • โปรแกรมงานสำรวจสำหรับเครื่องคิดเลข Casio fx-9860G II SD
  • Download
  • Privacy Policy
Menu

ไพทอนบนเครื่องคิดเลข Casio fx-cg50 Prizm กลับมาวิ่งฉิวเป็นเทพแล้ว

Posted on 10/09/2020

สองปีที่แล้วพอดีผมถอยเครื่องคิดเลขคาสิโอ fx-cg50 Prizm เพราะว่าสนับสนุนภาษาไพทอน อยากลองเขียนไพทอนบนเครื่องคิดเลขดู แต่เนื่องจากไพทอนไม่สามารถเรียกใช้ฟังก์ชั่นในเครื่องคิดเลขต่างๆ เช่นฟังก์ชั่นวาดรูป ฟังก์ชั่นการพล็อทกราฟ คาสิโอเองก็รีบเอาไพทอนมาลงเครื่องคิดเลขเร็วเกินไป ผมเอามาทำที่ทับกระดาษเล่นๆ จนกระทั่งสองปีให้หลังจนบัดนี้ (10 กันยายน 2020) ทางคาสิโอเพิ่งอัพเดทโอเอสของเครื่องคิดเลขจากรุ่น 3.30 มาเป็น 3.40 และได้เพิ่มฟังก์ชั่นการวาดรูปให้กับเครื่องคิดเลขรุ่นนี้ มาลองดูว่าอัพเดทแล้วมีอะไรบ้าง

เพิ่มโมดูล casioplot

ในโมดูลนี้จะมีฟังก์ชั่นให้เรียกใช้อยู่ 4 ฟังก์ชั่น

  1. draw_string(,,) สำหรับเขียนตัวหนังสือเลือกสี ขนาด ตำแหน่งได้
  2. set_pixel(,) สำหรับเขียนจุดเลือกสี ขนาด ตำแหน่งได้ ถ้าวาดจุดต่อๆกันก็จะเป็นเส้นตรง เส้นโค้ง
  3. get_pixel(,) สำหรับอ่านว่าตำแหน่งนั้นมีจุดสีอะไร ขนาดเท่าไหร่
  4. show_screen() สำหรับแสดงผลบนหน้าจอ

แค่นี้ก็เกินพอแล้วครับ สำหรับเอาไปวาดรูป นอกจากนั้นทางคาสิโอ้ได้ให้ไลบรารีภาษาไพทอนมาสองไฟล์คือ matplotl.py และ turtle.py สามารถดาวน์โหลดได้จากลิ๊งค์ของคาสิโอฝรั่งเศส ตัว matplotl.py เป็นไลบรารีขนาดย่อของ matplotlib ส่วน turtle.py ใช้วาดภาพเคลื่อนไหวไปทีละส่วน สองไลบรารีนี้ก็เรียกใช้งานฟังก์ชั่น 4 ฟังก์ชั่นดังกล่าวข้างต้น

ทดสอบ matplotlib ฉบับย่อ

ผมจะลองพล็อทโค้งดิ่งของงานสำรวจ เป็นที่ทราบกันดีว่าเป็นโค้งพาราโบล่า โจทย์กำหนดให้ BVC 2+880 มีค่าระดับ 468.62 เมตร g1=-3.2% g2=1.8% PVI 3+030 การคำนวณตามไปดูในโค้ดได้ การเขียนโค้ดสามารถเขียนได้ในเครื่องคิดเลขแต่ช้ามาก ถ้าแก้ไขอะไรนิดๆหน่อยๆทำได้ ดังนั้นเขียนบนคอมพิวเตอร์จะสะดวกที่สุด

ผมตั้งชื่อไฟล์โปรแกรมว่า “vcurve.py” เวลาโอนไฟล์จากคอมพิวเตอร์ก็สะดวก สายที่ใช้เชื่อมเป็นสาย USB รุ่นหัวมินิเก่าหน่อย พอต่อแล้วกด F1 เพื่อเลือกโหมด USB จากนั้นก็จะเห็นเป็นไดรว์ สามารถก็อปปี้โปรแกรมไปมาได้

ไลบรารี matplotlib ฉบับย่อและโปรแกรมทดสอบ vcurve.py
from matplotl import *
#Vertical curve (parabola)
g1 = -3.2/100 #initial grade
g2 = 1.8/100  #final grade
BSta = 2880
PSta = 3030
L = 2*(PSta-BSta) #length of curve = 300m
A = g2-g1 
c1 = 468.62       #BVC elevation
c2 = c1 + g1*L/2  #PVI elevation
c3 = c2 + g2*L/2  #EVC elevation
c4 = c2 - g2*L/2  #origin of g2 grade line
a = A/(2*L)
b = g1

#Plot parabola curve
x = [i for i in range(L+1)]      # Array of x values
y = [a*(i**2)+b*i+c1 for i in x] # Array of corresponding y values
plot(x, y, "blue")

#Plot lowest point
xx = [-1*g1*(L/A)]
yy = [a*(i**2)+b*i+c1 for i in xx]
scatter(xx,yy)


#plot grade lines
x2 = [0, L/2]
y2 = [g1*i+c1 for i in x2]
x3 = [L/2, L]
y3 = [g2*i+c4 for i in x3]
plot(x2, y2, "red")      #grade line g1
plot(x3, y3, "magenta")  #grade line g2

#Draw texts
text(0,c1+0.25,"BVC")
text(L,c3+0.25,"EVC")
text(L/2,c2+0.25,"PVI")
text(L/4+10,(c1+c2)/2.0,"g1=-3.2%")
text(0.75*L,(c2+c3)/2.0,"g2=1.8%")
text(xx[0], yy[0], "x={:.1f} y={:.1f}".format(xx[0],yy[0]))

#Define axis axactly
axis([-10,L+50,c2-0.5,c1+0.5])
show()

#Print all 
print("Length of curve: {:.1f}m".format(L))
print("g1: {:.1f}%".format(g1*100))
print("g2: {:.1f}%".format(g2*100))
print("BVC elevation: {:3f}m".format(c1))
print("PVI elevation: {:.3f}m".format(c2))
print("EVC elevation: {:.3f}m".format(c3))
print("lowest point: x={:.3f} y={:.3f}".format(xx[0],yy[0]))
print("EVC station: {:.0d}".format(BSta+L))

รันโปรแกรมทดสอบโค้งดิ่ง

วาดกราฟพาราโบลาโดยไลบรารี matplotlib ฉบับย่อ
ภาพขยายโค้งดิ่ง

ทำการรันโปรแกรมบนเครื่องคิดเลข จะเห็นหน้าจอที่วาดโดยไลบรารี matplotlib ฉบับย่อ พอได้เลยครับ การพล็อทเส้นพาราโบลาก็ทำได้ง่าย เพียงแต่ต้องกำหนดสมการ x และ y ให้ แล้วผมก็ลากเส้นเกรดสองเส้น จากนั้นก็เขียนตัวอักษรเช่น BVC, PVI และ EVC และเน้นจุดที่เป็นจุดต่ำสุดให้

ถ้ากดปุ่ม “Exit” จะออกจากโปรแกรม โปรแกรมจะพิมพ์รายการที่คำนวณมาให้

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

ณ ตอนนี้ผมมองหาอีกรุ่นคือ fx-9750GIII ที่ราคาย่อมเยามากและมีภาษาไพทอนมาให้ด้วย ส่วนรุ่นเทพ fx-9860GIII บ้านเรา ณ ตอนนี้ยังไม่นำมาขายและมีภาษาไพทอนมาให้เช่นเดียวกัน โปรดติดตามกันตอนต่อไปครับ

Related

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

October 2026
M T W T F S S
 1234
567891011
12131415161718
19202122232425
262728293031  
« Sep    

Blog Stats

There was an issue retrieving stats. Please try again later.

Recent Posts

  • เร็วแรงทะลุนรกกับ POCUT (POint Cloud UTils)
  • อัพเดทแอพ “SurveyStar LDP Thailand” เพื่อรับกับยกร่างมาตรฐาน “TH-LDP”
  • ออกแอพใหม่ SurveyStar Traverse Pro สืบสานงานคำนวณวงรอบ ตอนที่ 2
  • ออกแอพใหม่ SurveyStar Traverse Pro สืบสานงานคำนวณวงรอบ ตอนที่ 1
  • โปรแกรมอรรถประโยชน์ Pocut (POint Cloud Utils)
  • โปรแกรมแปลงไฟล์แคดข้ามระบบพิกัด (Drawing Transformer)
  • มาตรฐานระบบพิกัดแผนที่แบบแอลดีพีของประเทศไทยสำหรับงานวิศวกรรมและการก่อสร้าง (Thailand Low Distortion Map Coordinate System for Engineering and Construction)
  • ประสบการณ์ใช้งาน Kimi K3 Code เขมือบแบบสยอง
  • สร้างแพลตฟอร์มดู Point Cloud บนเว็บด้วย Potree + CesiumJS — เรื่องเล่าจากสนามบินอู่ตะเภา
  • เมื่อวิศวกรสำรวจคำนวณเรื่องน้ำ – วิเคราะห์ระบบระบายน้ำบริเวณ RESA
  • แนะนำหนังสือ “จีออเดซี” ที่ยอดเยี่ยมของดร.พุทธิพล
  • ESPrtk ทำให้ ESP32 ใช้ไม่ได้? วิธีกู้คืน
  • กรณีศึกษา – คืนชีพ SDL30 ปี 2000 ด้วย ESP32 และแอพทำเอง SDL30 Collector
  • DIY RTK Base Station (survey-grade) รุ่น V3.21 ด้วย Raspberry Pi 2B + UM980 เมื่อคุณปู่กลับมาเป็นฮีโร่ ตอนที่ 4
  • รีวิวกูปรี (CoPre2) โปรแกรมประมวลผลไลดาร์จากค่าย CHCNav
  • DIY RTK Base Station (survey-grade) รุ่น V3.2 ด้วย Orange Pi 3 Zero + UM980 ตอนที่ 3
  • DIY RTK Base Station (survey-grade) รุ่น V3 ด้วย Orange Pi 3 Zero + UM980 ตอนที่ 2
  • เส้นทางและไทม์ไลน์ของใบรับรองความรู้ความชำนาญในการประกอบอาชีพวิศวกรรม(สำรวจ)ระดับวิศวกรวิชาชีพ
  • มัดแหนมรวมสามโปรแกรมไปใช้บนสโตร์ Snap ฝั่งลีนุกซ์
  • ปัดฝุ่น Traverse Pro เพิ่มรายละเอียดรายการคำนวณใหม่แบบแนวนอน (Landscape) และธีมมืด
  • DIY RTK Base Station (Survey-Grade) ด้วยชิป UM980 และบอร์ด ESP32 ตอนที่ 1
  • สร้าง NTRIP Caster ด้วย BNC บนคลาวด์แบบ DIY สำหรับ RTK Base Station ใช้ CHCNav P5
  • จับ AI มาไตรกรีฬา สร้างตัวติดตั้ง Snap สำหรับ Surveyor Pocket Tools กับประเด็นแฝงเร้นความเป็นส่วนตัวของผู้ใช้
  • ทดสอบรีด QGIS แบบโหดสัสด้วยชุดข้อมูล Open Building V3 โพลีกอน 74 ล้านหลัง
  • เมื่อ AI เป็นพิษชักจูงผู้ใช้ด้วยข้อมูลผิดๆ

Subscribe to Blog via Email

Enter your email address to subscribe to this blog and receive notifications of new posts by email.

Join 122 other subscribers

Archives

  • October 2026
  • September 2026
  • August 2026
  • July 2026
  • May 2026
  • April 2026
  • March 2026
  • January 2026
  • December 2025
  • November 2025
  • September 2025
  • August 2025
  • July 2025
  • June 2025
  • May 2025
  • January 2025
  • December 2024
  • November 2024
  • October 2024
  • September 2024
  • July 2024
  • May 2024
  • April 2024
  • January 2024
  • November 2023
  • October 2023
  • September 2023
  • July 2023
  • June 2023
  • May 2023
  • March 2023
  • February 2023
  • January 2023
  • November 2022
  • October 2022
  • September 2022
  • July 2022
  • May 2022
  • December 2021
  • October 2021
  • September 2021
  • August 2021
  • May 2021
  • February 2021
  • January 2021
  • December 2020
  • November 2020
  • October 2020
  • September 2020
  • July 2020
  • June 2020
  • May 2020
  • April 2020
  • March 2020
  • February 2020
  • January 2020
  • December 2019
  • November 2019
  • September 2019
  • August 2019
  • July 2019
  • May 2019
  • April 2019
  • March 2019
  • February 2019
  • January 2019
  • November 2018
  • October 2018
  • September 2018
  • August 2018
  • July 2018
  • June 2018
  • May 2018
  • April 2018
  • March 2018
  • January 2018
  • November 2017
  • July 2017
  • June 2017
  • May 2017
  • April 2017
  • March 2017
  • February 2017
  • January 2017
  • December 2016
  • November 2016
  • October 2016
  • August 2016
  • November 2015
  • March 2015
  • August 2014
  • March 2014
  • January 2014
  • December 2013
  • February 2012
  • January 2012
  • November 2011
  • October 2011
  • August 2011
  • April 2011
  • February 2011
  • December 2010
  • November 2010
  • October 2010
  • September 2010
  • June 2010
  • April 2010
  • March 2010
  • January 2010
  • December 2009
  • November 2009
  • October 2009
  • September 2009
  • August 2009

Recent Comments

  • priabroy on ออกแอพใหม่ SurveyStar Traverse Pro สืบสานงานคำนวณวงรอบ ตอนที่ 1
  • Konexana Yomleuangsa on ออกแอพใหม่ SurveyStar Traverse Pro สืบสานงานคำนวณวงรอบ ตอนที่ 1
  • เฟือง เถา on DIY RTK Base Station (survey-grade) รุ่น V3.21 ด้วย Raspberry Pi 2B + UM980 เมื่อคุณปู่กลับมาเป็นฮีโร่ ตอนที่ 4
  • priabroy on DIY RTK Base Station (survey-grade) รุ่น V3.21 ด้วย Raspberry Pi 2B + UM980 เมื่อคุณปู่กลับมาเป็นฮีโร่ ตอนที่ 4
  • ตรันฟองนาม on DIY RTK Base Station (survey-grade) รุ่น V3.21 ด้วย Raspberry Pi 2B + UM980 เมื่อคุณปู่กลับมาเป็นฮีโร่ ตอนที่ 4
©2026 Prajuab Riabroy's Blog | Design: Newspaperly WordPress Theme