
تنفيذ خفيف الوزن لـ Protocol Buffers بلغة ANSI C مخصص للمتحكمات الدقيقة والأنظمة المدمجة محدودة الذاكرة، مما يتيح تسلسل وإلغاء تسلسل فعال للبيانات المهيكلة.
Nanopb هو تطبيق صغير الحجم لبروتوكولات المخازن (Protocol Buffers) بلغة C ansi. إنه مناسب بشكل خاص للاستخدام في المتحكمات الدقيقة، ولكنه يناسب أي نظام محدود الذاكرة.
لاستخدام مكتبة nanopb، تحتاج إلى القيام بأمرين:
أسهل طريقة للبدء هي دراسة المشروع في "examples/simple". يحتوي على ملف Makefile، والذي يجب أن يعمل مباشرة تحت معظم أنظمة لينكس. ومع ذلك، لأي نوع آخر من أنظمة البناء، راجع الخطوات اليدوية في README.txt في ذلك المجلد.
مولد nanopb منفذ كملحق لمترجم protoc من Google. هذا له ميزة أنه لا حاجة لإعادة تطبيق التحليل الأساسي لملفات .proto. لكنه يعني أنك بحاجة إلى مكتبة protobuf من Google لتشغيل المولد.
إذا قمت بتنزيل حزمة ثنائية لـ nanopb (إما إصدار ويندوز أو لينكس أو ماك OS X)، فإن الثنائي 'protoc' مضمن في مجلد 'generator-bin'. في هذه الحالة، أنت جاهز. قم ببساطة بتشغيل هذا الأمر:
generator-bin/protoc --nanopb_out=. myprotocol.proto
ومع ذلك، إذا كنت تستخدم نسخة من مستودع git أو توزيعة مصدرية عادية، فأنت بحاجة إلى توفير نسختك الخاصة من protoc ومكتبة protobuf من Google. على لينكس، الحزم اللازمة هي protobuf-compiler و python-protobuf. على ويندوز، يمكنك إما بناء مكتبة protobuf من Google من المصدر أو استخدام أحد التوزيعات الثنائية لها. في كلتا الحالتين، إذا كنت تستخدم protoc منفصل، فأنت بحاجة إلى إعطاء المسار إلى مولد nanopb يدويًا:
protoc --plugin=protoc-gen-nanopb=nanopb/generator/protoc-gen-nanopb ...
إذا كنت ترغب في تطوير نواة nanopb بشكل أكبر، أو للتحقق من وظائفها باستخدام المترجم والمنصة الخاصة بك، ستحتاج إلى تشغيل مجموعة الاختبارات. قواعد بناء مجموعة الاختبارات منفذة باستخدام Scons، لذا تحتاج إلى تثبيته. لتشغيل الاختبارات:
cd tests
scons
سيظهر هذا تقدم حالات الاختبار المختلفة. إذا لم ينتهِ الإخراج بخطأ، فإن حالات الاختبار كانت ناجحة.
ملاحظة: يقوم Mac OS X افتراضيًا بتعريف 'clang' كاسم مستعار لـ 'gcc'، بينما لا يدعم في الواقع نفس خيارات سطر الأوامر التي يدعمها gcc. لتشغيل الاختبارات على Mac OS X، استخدم: "scons CC=clang CXX=clang". يمكن استخدام نفس الطريقة لتشغيل الاختبارات بمترجمات مختلفة على أي منصة.