Tôi có một người bạn đang hoàn thành bằng thạc sĩ về kỹ thuật hàng không vũ trụ. Đối với dự án cuối cùng của mình, ông là một nhóm nhỏ có nhiệm vụ viết một chương trình để theo dõi các bong bóng thời tiết, tên lửa và vệ tinh. Chương trình nhận đầu vào từ thiết bị GPS, thực hiện các phép tính với dữ liệu và sử dụng kết quả của các phép tính đó để điều khiển một loạt các động cơ được thiết kế để định hướng anten truyền dẫn hướng, do đó quả bóng, tên lửa hoặc vệ tinh luôn được chú trọng.Phân tích đầu ra bộ thu GPS qua regex bằng Python
Mặc dù phần nào của một người mới bắt đầu (vĩnh cửu) bản thân mình, tôi có nhiều kinh nghiệm lập trình hơn bạn tôi. Vì vậy, khi anh ấy hỏi tôi để được tư vấn, tôi đã thuyết phục anh ấy viết chương trình bằng Python, ngôn ngữ tôi chọn.
Tại thời điểm này trong dự án, chúng tôi đang làm việc trên mã phân tích cú pháp đầu vào từ thiết bị GPS. Dưới đây là một số ví dụ đầu vào, với các dữ liệu chúng ta cần phải giải nén in đậm:
$ GPRMC, 092.204,999, 4250,5589, S, 14.718,5084, E, 1,12,24.4, 89,6, M ,,, 0000 * 1F $ GPRMC, 093.345,679, 4234,7899, N, 11.344,2567, W, 3,02,24.5, 1000,23, M ,,, 0000 * 1F $ GPRMC, 044.584,936, 1276,5539, N, 88.734,1543, E , 2,04,33,5, 600.323, M ,,, * 00 $ GPRMC, 199304.973, 3248.7780, N, 11355.7832, W, 1,06,02.2, 25.722,5, M ,,, * 00 $ GPRMC, 066.487,954, 4572,0089, S, 45.572,3345, W, 3,09,15.0, 35000.00, M ,,, * 1F
Dưới đây là một số thêm giải thích về dữ liệu:
"Có vẻ như tôi cần năm thứ trên mỗi dòng. Và ghi nhớ rằng bất kỳ khu vực nào trong số này có thể là trống. Có nghĩa là sẽ chỉ có hai dấu phẩy ngay cạnh nhau. Như vậy là ',,,' Có hai trường có thể đầy đủ bất cứ lúc nào. Một số trong số họ chỉ có hai hoặc ba tùy chọn mà họ có thể nhưng tôi không nghĩ rằng tôi nên đếm trên đó ".
Hai ngày trước bạn bè của tôi đã có thể có được đầy đủ các bản ghi từ GPS dùng để theo dõi một phóng thời tiết khí cầu gần đây. Các dữ liệu là khá dài, vì vậy tôi đặt nó tất cả trong this pastebin.
tôi vẫn còn khá mới mẻ với biểu thức thông thường bản thân mình, vì vậy tôi đang tìm kiếm sự giúp đỡ.
Bằng cách này, $ GPRMC dòng của bạn dường như không phù hợp với tiêu chuẩn. http://home.mira.net/~gnb/gps/nmea.html#gprmc Tôi có thiếu gì đó không? –
Cảm ơn bạn đã chỉ ra rằng Federico. Tôi chắc chắn sẽ xem xét điều đó. – crashsystems
Dường như có nhiều dòng $ GPGGA. –