PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > PIC - Thiết kế và Ứng dụng

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

PIC - Thiết kế và Ứng dụng Ý tưởng cho các sản phẩm sử dụng PIC/dsPIC và các sản phẩm của Microchip

 
 
Ðiều Chỉnh Xếp Bài
Prev Previous Post   Next Post Next
Old 22-12-2011, 11:11 AM   #4
longtu
Đệ tử 6 túi
 
longtu's Avatar
 
Tham gia ngày: Jul 2007
Bài gửi: 146
:
Send a message via Yahoo to longtu
3. Cách tách data cần thiết từ chuỗi data nhận được từ Vệ tinh

Việc kết nối GPS module(chân TX0) với Microcontroller qua chân RX, ta sử dụng ngắt RDA để thực hiện việc lấy chuỗi data cũng như tách lấy dữ liệu cần lấy.
Ví dụ: Chuỗi data cần lấy:
$GPRMC,220516,A,5133.82,N,00042.24,W,173.8,231.8,1 30694,004.2,W*70
Ghi nhận:
*Sau dấu "," thứ nhất: Thông tin thời gian
*Sau dấu "," thứ 2: thông tin Latitude
*Sau dấu "," thứ 4: thông tin Longitude
* ....
Code:
char GPSbuffer[70];
char GPRMC[6]={"$GPRMC"};//Nếu muốn lấy chuỗi data ta GPRMC
char Comma_position[13];
int8 check= 0;
/* Find comma in GPS datas -------------*/
Void FindComma()
{
   int8 i, counter= 0;
   for(i= 0;i<70; i++)
   {
      if(GPSbuffer[i]== ',' )
         Comma_position[counter++]= i;
   }
}
/*Received data from GPS module: ------------*/
#INT_RDA
Void Receive_GPSbuffer()
{
   char c;
   c= getc();
   if(check == 69) return;
   GPSbuffer[check++]= getc();
   if(check<7)
   {
      if((GPSbuffer[check-1]) != (GPRMC[check-1]))
         check= 0;
   }
}
Void TimeGPS()//Vi dụ mang tính minh họa lấy thời gian từ GPS module.
{
   char i;
   i= Comma_position[0];  //ngay sau vị trí dấu , đầu tiên là thông tin THOI GIAN
   printf("TIME(HHMMSS): %c%c:%c%c:%c%c\r\n",GPSbuffer[i+1],GPSbuffer[i+2], 
                                     GPSbuffer[i+3],GPSbuffer[i+4],
                                     GPSbuffer[i+5],GPSbuffer[i+6]);
   
  delay_ms(10);
}
Void LatitudeGPS()
{
char i;
 i= Comma_position[2];
...
}
Vode LongitudeGPS()
{
char i;
 i= Comma_position[4];
...
}
Void GetData()
{
   FindComma();
   TimeGPS();   
   LatitudeGPS();//*Sau dấu "," thứ 2: thông tin Latitude
   LongitudeGPS();//*Sau dấu "," thứ 4: thông tin Longitude
   //...
   check= 0;//The next get GPS datas.
}

void main()
{
   if(check == 69) GetData();
}
Code trên, chỉ là để minh hoạ cách lấy data cũng như tách lấy data cần sử dụng. Các bạn thay đổi để phù hợp với ứng dụng của mình.
__________________
--------------------------------------------------------------------------------------
Phùng Minh Tuân
Email: tuan.phmt@gmail.com
"Cuộc đời sóng gió nuôi ta lớn
Bao lần thất bại dạy ta khôn".

thay đổi nội dung bởi: longtu, 22-12-2011 lúc 11:16 AM.
longtu vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
 


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


Múi giờ GMT. Hiện tại là 10:08 AM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam