GPSMON(1) GPSD Documentation GPSMON(1)

gpsmon - پایشگر بی‌درنگ بسته‌های GPS و ابزار کنترل

gpsmon [OPTIONS} [server[:port[:device]]]

gpsmon -h

gpsmon -V

gpsmon پایشگری است که بسته‌های دریافتی از یک GPS را بررسی می‌کند و آن‌ها را همراه با اطلاعات عیب‌یابی نمایش می‌دهد. این برنامه از دستورهایی برای تنظیم پارامترهای مختلف GPS پشتیبانی می‌کند؛ برخی از این دستورها مستقل از نوع دستگاه هستند و برخی دیگر بسته به نوع چیپ‌ست GPS تفاوت دارند. هنگامی که به یک دستگاه ناشناخته متصل شود، بدون بروز خطا تنها به تخلیهٔ (dump) خام بسته‌ها می‌پردازد.

gpsmon با یک کلاینت ناوبری تفاوت دارد، زیرا داده‌ها را بیشتر به‌صورت خام از GPS استخراج کرده و تنها در حدی که برای تطبیق با خروجی مورد انتظار نیاز است پردازش می‌کند. این ابزار برای رمزگشایی بسته‌ها از gpsd استفاده نمی‌کند. انواع داده‌های خام بسیاری وجود دارند که برای gpsd شناخته‌شده‌اند اما gpsmon آن‌ها را نمی‌شناسد. به‌ویژه، این ابزار هیچ درون‌یابی یا مدل‌سازی‌ای برای تخمین نرخ صعود/فرود (climb/sink) یا برآورد خطا انجام نمی‌دهد؛ همچنین داده‌های ارتفاع را در صورت پایین بودن کیفیت موقعیت‌یابی (fix) دور نمی‌اندازد.

برای کاربران عادیِ gpsd، کلاینت‌های ساده‌تری مانند cgps و xgps که داده‌های ناوبری را به شکلی یکسان برای تمام گیرنده‌های GNSS پشتیبانی‌شده توسط gpsd نمایش می‌دهند، انتخاب مناسب‌تری خواهند بود.

برخلاف gpsd، ابزار gpsmon هیچ‌گاه رشته‌های کنترلی یا کاوشگر به دستگاه ارسال نمی‌کند، مگر اینکه شما صریحاً به آن دستور دهید. بنابراین، با اینکه به‌طور خودکار با بسته‌های باینری همگام می‌شود، دستگاهی را که از پروتکل توسعه‌یافتهٔ NMEA استفاده می‌کند، به‌جز یک دستگاه NMEA استاندارد و ساده تشخیص نخواهد داد. برای حل این مشکل از گزینهٔ -t یا کلید t استفاده کنید.

ابزار gpsmon برای اجرا در شبیه‌ساز پایانه با حداقل اندازهٔ ۲۵×۸۰ طراحی شده است؛ استفاده از رابط متنیِ غیرگرافیکی برای سازگاری با محیط‌های محدود و اتصالات مبتنی بر telnet یا ssh انتخاب شده است. اگر برنامه در پنجره‌ای بزرگ‌تر اجرا شود، اندازهٔ پنجرهٔ ثبت وقایع بسته (packet-log) برای پوشش فضای موجود افزایش می‌یابد.

پس از راه‌اندازی (بدون گزینهٔ -a یا --nocurses)، بخش بالایی صفحه محتوای بسته‌های کاربردی و مهم را نمایش می‌دهد. مقدار فیلد «PPS»، در صورت خالی نبودن، اختلاف زمانی (دلتا) میان آخرین لبهٔ ثانیهٔ 1PPS و ساعت سیستم در همان لحظه است.

نیمهٔ پایینی صفحه یک خروجی هگزادسیمال متحرک (scrolling hex dump) از تمام بسته‌های ارسالی GPS است. اگر نوع بسته متنی باشد، نویسه‌های خط پایانی CR/LF حذف می‌شوند. خطوطی که با «>>>» آغاز می‌شوند، نشان‌دهندهٔ بسته‌های کنترلی ارسال‌شده به GPS هستند. خطوطی که عبارت «PPS» میان خط‌تیره‌ها را نشان می‌دهند، نشانگر رویداد 1PPS و آغاز یک چرخهٔ گزارش‌دهی جدید هستند.

برخلاف gpsd، برنامهٔ gpsmon هنگام اجرا در حالت مستقیم (direct mode) کاوش خودکارِ نوع دستگاه را انجام نمی‌دهد. بنابراین، اگر آن را به یک GPS با حالت باینری ذاتی که در حال حاضر NMEA ارسال می‌کند متصل کنید، نوع واقعی دستگاه شناسایی نخواهد شد مگر اینکه دستگاه یک جملهٔ راه‌انداز (trigger sentence) معتبرِ NMEA ارسال کند. در این شرایط، گزینهٔ -t یا --type می‌تواند به شما کمک کند.

اجرای gpsmon نیازی به مجوزهای ریشه (root) ندارد، مگر احتمالاً برای دسترسی مستقیم به درگاه سریال. اجرای آن با دسترسی root نیز مشکلی ایجاد نخواهد کرد.

-?، -h، --help

پیام راهنمای استفاده از دستور را نمایش داده و خارج می‌شود.

-a، --nocurses

یک حالت اشکال‌زدایی ویژه را فعال می‌کند که از ترسیم بصری صفحه (ncurses) استفاده نمی‌کند. بسته‌ها به شکل عادی چاپ می‌شوند؛ فشردن هر کلیدی جریان چاپ بسته‌ها را معلق کرده و خط اعلان دستور را باز می‌کند. این ویژگی عمدتاً برای توسعه‌دهندگان GPSD کاربرد دارد.

-d LVL، --debug LVL

خروجی اشکال‌زدایی بخش دریافت بسته (packet-getter) را فعال می‌کند و بیشتر برای توسعه‌دهندگان کد GPSD مفید است. برای اطلاع از مقادیر مجاز، به کد منبع packet-getter مراجعه کنید.

-l FILE، --logfile FILE

ثبت وقایع در فایل مشخص‌شده (FILE) را بلافاصله پس از باز شدن دستگاه فعال می‌کند. این گزینه زمانی مفید است که برای نمونه می‌خواهید پیام‌های راه‌اندازی شامل اطلاعات نسخهٔ میان‌افزار (firmware) دستگاه را ضبط کنید.

-L، --list

جدولی را نمایش می‌دهد که مشخص می‌کند این نسخه از gpsmon از چه نوع دستگاه‌های GPS به‌صورت پیش‌ساخته پشتیبانی می‌کند و چه دستورهای عمومی روی هر کدام قابل اجرا هستند، سپس خارج می‌شود. توجه داشته باشید که این گزینه دستورهای اختصاصی چیپ‌ست‌های منفرد را فهرست نمی‌کند.

-n، --nmea

gpsmon را مجبور می‌کند تا به جای دریافت جریان داده‌های خام، بسته‌های NMEA0183 را از gpsd درخواست کند.

-t TYPE، --type TYPE

یک نوع درایور رزرو (TYPE) تعیین می‌کند. به آن رشته‌ای بدهید که پیشوند متمایزکنندهٔ دقیقاً یک نام درایور باشد؛ این مقدار برای تغییر حالت، سرعت، و نرخ ارسال داده در صورتی استفاده می‌شود که درایورِ شناسایی‌شده از روی نوع بسته فاقد چنین قابلیت‌هایی باشد. بیشترین کاربرد آن زمانی است که نوع بسته NMEA است اما می‌دانید که دستگاه از یک حالت باینری (مانند SiRF binary) پشتیبانی می‌کند.

این برنامه می‌تواند در یکی از دو حالت اجرا شود: به عنوان یک کلاینت برای دیمن gpsd (و سوکت کنترلی مرتبط با آن)، یا با اتصال مستقیم به یک دستگاه سریال مشخص‌شده.

به طور پیش‌فرض، کلاینت‌ها داده‌ها را از دیمن محلی gpsd که روی localhost و با پورت پیش‌فرض ۲۹۴۷ GPSD اجرا می‌شود جمع‌آوری می‌کنند. آرگومان اختیاری برای هر کلاینت می‌تواند این رفتار را لغو کند: [server[:port[:device]]]

برای توضیحات بیشتر و مثال‌ها، بخش ARGUMENTS را در صفحه راهنمای gps(1) ببینید.

اگر در عوض، آرگومان شامل اسلش باشد اما دونقطه نداشته باشد، به عنوان یک دستگاه سریال برای اتصال مستقیم در نظر گرفته می‌شود. در حالت اتصال مستقیم (direct-connect)، gpsmon به دنبال یک نرخ باود (baud rate) صحیح گشته و به صورت خودکار روی آن قفل می‌شود.

دستورات مستقل از دستگاه زیر در حین اجرای gpsmon در دسترس هستند:

i

(فقط در حالت مستقیم.) فعال/غیرفعال کردن کاوش زیرنوع (subtype probing) و مقداردهی اولیه مجدد درایور. در عملکرد عادی، gpsmon رشته‌های پیکربندی را به دستگاه ارسال نمی‌کند (به جز رشته‌های بیدارباش مورد نیاز برای واداشتن آن به ارسال داده‌ها، در صورت وجود). دستور 'i1' باعث می‌شود همان توالی کاوش‌های زیرنوع که gpsd ارسال می‌کرد، ارسال شود. دستور 'i0' کاوش را خاموش می‌کند؛ 'i' به تنهایی وضعیت بیت را تغییر می‌دهد. در هر صورت، درایور فعلی دوباره انتخاب می‌شود؛ اگر بیت کاوش فعال باشد، ارسال کاوش‌ها بلافاصله آغاز خواهد شد.

توجه داشته باشید که فعال کردن کاوش ممکن است دستگاه را به حالت دیگری تغییر دهد؛ به ویژه، یک تراشه SiRF را به حالت باینری می‌برد، درست مانند زمانی که از دستور "n" استفاده کرده باشید. این امر ناشی از محدودیتی در سفت‌افزار SiRF است که نمی‌توانیم آن را برطرف کنیم.

این دستور پس از اولین بار استفاده، معمولاً کار خاصی انجام نخواهد داد، چرا که نوع دستگاه از قبل شناسایی شده است.

c

(فقط در حالت مستقیم.) تغییر زمان چرخه (cycle time). پس از آن عددی وارد کنید که به عنوان زمان چرخه بر حسب ثانیه تفسیر می‌شود. بیشتر دستگاه‌ها زمان چرخه ثابت ۱ ثانیه‌ای دارند، بنابراین ممکن است این دستور با پیامی با شکست مواجه شود.

l

تغییر وضعیت ثبت گزارش بسته‌ها (packet logging). اگر ثبت بسته‌ها روشن باشد، خاموش شده و لاگ بسته می‌شود. اگر خاموش باشد، ثبت در نام فایلی که پس از l می‌آید فعال خواهد شد. تفاوت آن با ضبط ساده داده‌ها از دستگاه GPS در این است که تنها بسته‌های کامل ثبت می‌شوند. فایل گزارش برای الحاق (append) باز می‌شود، بنابراین می‌توانید بیش از یک بخش از جریان بسته را ثبت کنید و آنها به درستی به هم متصل خواهند شد.

n

(فقط در حالت مستقیم.) با آرگومان 0، دستگاه را در سرعت فعلی به حالت NMEA تغییر می‌دهد؛ با آرگومان 1، به حالت باینری (محلی/native) می‌برد. بدون آرگومان، این تنظیم را تغییر وضعیت (toggle) می‌دهد. اگر دستگاه فاقد چنین حالت‌هایی باشد، خطایی نمایش داده خواهد شد.

پس از آنکه با این دستور یک GPS دارای دو پروتکل را به حالت NMEA تغییر دادید، اطلاعات مربوط به نوع اصلی و قابلیت‌های کنترلی آن حفظ می‌شود. به همین دلیل است که نوع دستگاه فهرست‌شده قبل از اعلان (prompt) تغییر نمی‌کند.

q

خروج از gpsmon. فشردن Control-C، یا هر کاراکتر وقفه‌ای که در حال حاضر استفاده می‌کنید، نیز کار خواهد کرد.

s

(فقط در حالت مستقیم.) تغییر نرخ باود (baud rate). پس از آن عددی وارد کنید که به عنوان بیت بر ثانیه تفسیر می‌شود، به عنوان مثال "s9600". عدد سرعت می‌تواند به صورت اختیاری با یک دونقطه و مشخصه سنتی طول کلمه-بیت توازن-بیت توقف (wordlength-parity-stopbits) دنبال شود، مانند 8N1 (پیش‌فرض)، 7E1 و غیره. برخی دستگاه‌ها از حالت‌های سریالی غیر از حالت پیش‌فرض خود پشتیبانی نمی‌کنند، بنابراین ممکن است این دستور با پیامی با خطا مواجه شود.

نکته

از این دستور با احتیاط استفاده کنید. در GPSهای USB و Bluetooth نیز ممکن
است تنظیم حالت سریال با شکست مواجه شود؛ یا به این دلیل که تراشه مبدل سریال از حالت‌های غیر از 8N1 پشتیبانی نمی‌کند، یا به این دلیل که سفت‌افزار دستگاه هنگام تغییر سرعت، تراشه مبدل سریال را به درستی با UART روی چیپ‌ست GPS همگام نمی‌کند. این خرابی‌ها می‌تواند باعث قفل شدن (hang) دستگاه شما شود و احتمالاً به قطع و وصل جریان برق GPS یا (در موارد حاد) قطع فیزیکی باتری پشتیبان NVRAM نیاز داشته باشد.

t

(فقط در حالت مستقیم.) اجبار به تغییر نوع نظارت. پس از آن رشته‌ای وارد کنید که منحصراً منطبق با نام یک درایور gpsd دارای پشتیبانی از gpsmon باشد؛ gpsmon به استفاده از آن درایور و کد نمایش تغییر وضعیت خواهد داد. اگر درایور gpsd مطابقی وجود نداشته باشد، یا چند مورد منطبق یافت شود، یا مورد منحصر‌به‌فرد فاقد پشتیبانی نمایش در gpsmon باشد، یک پیام خطا نمایش داده خواهد شد.

x

(فقط در حالت مستقیم.) ارسال بار داده هگز (hex payload) به دستگاه. در ادامه حرف دستور، می‌توانید جفت‌های ارقام هگزادسیمال را تایپ کنید؛ در انتها با یک خط جدید خاتمه دهید. این مقادیر تبدیل به بار داده یک بسته کنترلی ارسالی به دستگاه خواهند شد. بسته با سرآیندها (headers)، دنباله‌ها (trailers) و چکسام مناسب برای نوع درایور فعلی بسته‌بندی خواهد شد. ممکن است یک یا دو بایت اول بار داده تفسیر ویژه‌ای داشته باشند؛ به توضیحات -x در gpsctl 1 مراجعه کنید.

X

(فقط در حالت مستقیم.) ارسال بایت‌های خام هگز (raw hex bytes) به دستگاه. در ادامه حرف دستور، می‌توانید جفت‌های ارقام هگزادسیمال را تایپ کنید؛ در انتها با یک خط جدید خاتمه دهید. این مقادیر به دستگاه ارسال خواهند شد.

Ctrl-S

ثابت کردن (freeze) نمایشگر، تعلیق پیمایش در پنجره اشکال‌زدایی (debug).

Ctrl-Q

از حالت تعلیق درآوردن نمایشگر، از سرگیری عملکرد عادی.

(این نکات نه تنها برای دستگاه‌های عمومی NMEA، بلکه برای تمام دستگاه‌های توسعه‌یافته NMEA که gpsmon در حال حاضر از آن‌ها پشتیبانی می‌کند، صدق می‌کند.)

همه فیلدها داده‌های خام GPS هستند به جز (الف) پنجره «Cooked PVT» در نزدیکی بالای صفحه که برای بازبینی ارائه شده است و (ب) فیلد «PPS offset».

هیچ دستور مختص دستگاهی وجود ندارد. این که کدام دستورات عمومی در دسترس هستند ممکن است بسته به نوع دستگاه متفاوت باشد: برای اطلاعات بیشتر خروجی gpsmon -l را بررسی کنید.

بیشتر اطلاعات به‌صورت خام از GPS دریافت می‌شوند. فیلدهای زیرخط‌دار با تبدیل از مختصات ECEF یا اعمال جهش ثانیه (leap-second) و اختلاف منطقه زمانی محلی به‌دست می‌آیند. 1PPS طبق معمول میزان تاخیر ساعت است.

دستورات زیر تنها برای GPSهای SiRF پشتیبانی می‌شوند:

A

(فقط در حالت مستقیم.) تغییر وضعیت گزارش داده‌های زیرفریم 50BPS.

M

(فقط در حالت مستقیم.) تنظیم (M1) یا پاک کردن (M0) ناوبری ایستا (static navigation). در مستندات SiRF آمده است: «ناوبری ایستا یک فیلتر موقعیت است که برای استفاده در وسایل نقلیه موتوری طراحی شده است. هنگامی که سرعت وسیله نقلیه به زیر یک مقدار آستانه افت می‌کند، موقعیت و جهت حرکت ثابت (فریز) می‌شوند و سرعت روی صفر تنظیم می‌گردد. این وضعیت تا زمانی ادامه می‌یابد که سرعت محاسبه‌شده به بیش از ۱٫۲ برابر آستانه برسد یا موقعیت محاسبه‌شده حداقل به اندازه یک مسافت مشخص از مکان فریز شده فاصله بگیرد. مقدار آستانه سرعت و مسافت مشخص ممکن است در نسخه‌های مختلف نرم‌افزار متفاوت باشد.»

حالت ناوبری غیراستا (Non-static) برای استفاده با نرم‌افزارهای ناوبری جاده‌ای طراحی شده است که معمولاً موقعیت گزارش‌شده را به نزدیک‌ترین جاده درون شعاع عدم قطعیت متصل (snap) می‌کنند. احتمالاً مایل خواهید بود ناوبری ایستا را برای استفاده عابران پیاده خاموش کنید، چرا که به احتمال زیاد سرعت را صفر گزارش کرده و موقعیت را با پرش‌های بزرگ تغییر می‌دهد.

P

(فقط در حالت مستقیم.) تغییر وضعیت حالت نمایش پارامترهای ناوبری. وضعیت را بین نمایش عادی و نمایشی که پارامترهای ناوبری منتخب از MID 19 را نشان می‌دهد (از جمله بیت Static Navigation که با دستور 'M' تغییر می‌یابد)، جابه‌جا می‌کند.

برای تفسیر آنچه می‌بینید، به نسخه‌ای از راهنمای مرجع پروتکل دودویی SiRF (SiRF Binary Protocol Reference Manual) نیاز خواهید داشت.

بیشتر اطلاعات به‌صورت خام از GPS دریافت می‌شوند. فیلدهای زیرخط‌دار با تبدیل از مختصات ECEF به‌دست می‌آیند. 1PPS طبق معمول میزان تاخیر ساعت است. هیچ دستور ویژه‌ای مختص این نوع وجود ندارد.

فیلد PPS Offset هنگام اجرا در حالت کلاینت هرگز به‌روزرسانی نخواهد شد، حتی اگر بتوانید رویدادهای PPS را در پنجره بسته‌ها مشاهده کنید. این محدودیت ممکن است در نسخه‌های بعدی برطرف شود.

0

در صورت موفقیت.

1

در صورت بروز خطا

gpsd(8), cgps, (1)gpsctl(1), gps(1), *xgps(1)

وب‌گاه پروژه: https://gpsd.io

حق نشر این فایل در سال ۲۰۱۳ متعلق به پروژه GPSD است
SPDX-License-Identifier: BSD-2-clause

Eric S. Raymond

2025-11-04 GPSD, Version 3.27.5