JO778
member
คะแนน 0
ออฟไลน์
กระทู้: 6
|
|
« เมื่อ: ตุลาคม 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]);
|