พิมพ์หน้านี้ - ช่วยด้วยครับใครทราบคำสั่ง แปลงสตริงเป็นตัวเลข ในโปรแกรมPCW Compiler IDE บ้างครับ

LSVคลังสมองออนไลน์ "ปีที่21"

► อิเล็กทรอนิกส์ ► => หุ่นยนต์-pcb-เทคโนโลยี่ใหม่ => ข้อความที่เริ่มโดย: JO778 ที่ ตุลาคม 13, 2008, 12:36:29 AM



หัวข้อ: ช่วยด้วยครับใครทราบคำสั่ง แปลงสตริงเป็นตัวเลข ในโปรแกรมPCW Compiler IDE บ้างครับ
เริ่มหัวข้อโดย: JO778 ที่ ตุลาคม 13, 2008, 12:36:29 AM
ช่วยด้วยครับ ด่วนมาก คำสั่ง ภาษาC แปลงสตริงเป็นเลข ที่ใช้เขียนในโปรแกรม ในโปรแกรมPCW Compiler IDE หรือ CCS C

คือรับค่า GPS เข้ามา

$GPGGA,154409.000,1625.3962,N,10248.1008,E,1,06,1.7,152.4,M,-27.1,M,,0000*72

รับเข้ามาเป็นสตริง จะแก้ไขโค๊ดใหม่แค่ส่วนนี้ โดยตามเดิมรับค่าเข้ามาแล้วส่งค่าออกไปเป็นค่า ละติจูด และลองจิจูด โดยการเลื่อนจุด

อยากจะให้มีการคำนวณก่อน

ค่าที่ออกมาจาก GPS Module มันจะเป็นแบบนี้
1625.3962,N หรือ 16 degree 25.3962 min
10248.1008,E หรือ 102 degree 48.1008 min
ทีนี้ถ้าเราจะแปลงไปใช้กะ GoogleMap ก็
16225.3962,N ==แปลง==> 16(เป็นองศาไม่ต้องเปลี่ยน) 25.3962 ==แปลง==> 25.3962/60 = 0.42327
ดังนั้น 1625.3962,N ==แปลง==> 16.42327
ก็คือจาก dddmmnn ==> Decimal Degrees

หรือ 1625.3962,N ==> 1625.3962 เอา 16 ตั้ง เอา 253962/10000 = 25.3962 แล้วนำ 25.3962/60 = 0.42327

ก็นำ 16 มาบวกเข้า 16+0.42327 = 16.42327 ก็จะได้ 16.42327,N ที่จะนำไปหาตำแหน่งในกูเกิ้ลได้ครับ

สรุปอยากจะได้ ค่า GPS ค่านี้ครับนี้ครับ 16.42327,N

จาก 1625.3962,N ==> 16.42327,N

$GPGGA,154409.000,1625.3962,N,10248.1008,E,1,06,1.7,152.4,M,-27.1,M,,0000*72

แต่โค๊ดนี้เป็นการเลื่อนจุดเฉยๆ 16.253962, N ก็เลยอยากจะได้คำสั่ง ภาษา C ไมโครคอนโทรลเลอร์ ที่แปลงค่า สตริงเป็นเลข

เพื่อจะได้นำมาทำการคำนวณครับ

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

printf("Latitude=%c%c.%c%c%c%c%c%c Longitude=%c%c%c.%c%c%c%c%c%c",buffergps[18],buffergps[19],buffergps[20],buffergps[21],buffergps[23],buffergps[24],buffergps[25],buffergps[26]
,buffergps[30],buffergps[31],buffergps[32],buffergps[33],buffergps[34],buffergps[36],buffergps[37],buffergps[38],buffergps[39]);