البدء مع CamScripter#
نظرة عامة#
ما هو؟#
CamScripter هو أداة لمساعدتك في كتابة وتصحيح أخطاء البرامج النصية المخصصة لـ CMUcam3. يجعل من الممكن كتابة برامج نصية باستخدام لغة البرمجة Lua. باستخدام هذه اللغة وواجهة Lua API المتوفرة لـ CMUcam3، يمكنك تخصيص الكاميرا لأي استخدام تقريبًا يمكنك التفكير فيه. في هذا الدرس التعليمي سنرشدك خلال عملية التثبيت ثم نطوّر برنامجًا نصيًا نموذجيًا للتشغيل على الكاميرا.
قبل أن تبدأ#
يفترض هذا الدرس التعليمي:
لديك بالفعل CMUcam3
You've already gotten the camera working, using either the Quick Start Guide or the
SDK installation guideلديك كل ما تحتاجه لتوصيل الكاميرا بحاسوبك
التثبيت، الجزء 1: Lua، الاتصال بالمنفذ التسلسلي#
Lua#
يتيح لك CamScripter برمجة CMUcam3 باستخدام لغة البرمجة Lua. قبل أن نتمكن من فعل ذلك، سنحتاج إلى تثبيت هذه اللغة على حاسوبك.
Download the appropriate ZIP binary. (For Windows: Lua-Windows or for other users https://luabinaries.sourceforge.net/download.html)
فك ضغط ثنائي Lua في
C:\luaافتح موجّه الأوامر (في Windows، اختر "Run..." من قائمة Start، واكتب 'cmd').
cd إلى حيثما فككت ضغط ملفات Lua. بالنسبة لي، أكتب 'cd C:lua'
اكتب 'luax.x.exe -v' حيث x هو إصدار Lua
Assuming everything went smoothly in your installation, you should see the Lua version number printed out on your screen.
If possible, you should install lua from the CMUcam3 web site. If you want to recompile it on your own, you need to first patch the normal lua source to not use floating point (lua-5.1-no-fp.patch).
في Windows تحت cygwin، استخدم الأسطر التالية للتصريف:
cd src
make LUAC_T=luac.exe MYCFLAGS=-mno-cygwin MYLDFLAGS=-mno-cygwin luac.exe
...
make LUA_T=lua.exe MYCFLAGS=-mno-cygwin MYLDFLAGS=-mno-cygwin lua.exe
بيئة تشغيل Java (JRE)#
يلزم توفر بيئة تشغيل Java (الإصدار 6 أو أحدث) لبرنامج CamScripter. إذا لم يكن لديك JRE مثبّت بالفعل، يمكنك تنزيل وتثبيت واحدة من هنا.
RXTX#
The CamScripter uses the RXTX serial communication library to communicate with the CMUcam3 over your computer's serial port. This library will have to be installed on your computer. First, download RXTX (at least version 2.1). Version 2.1.7 is here: http://rxtx.qbang.org/pub/rxtx/rxtx-2.1-7-bins-r2.zip.
للتثبيت (Windows فقط - لأنظمة التشغيل الأخرى، اتبع التعليمات في ملف rxtx INSTALL):
فك ضغط تنزيل RXTX، وتنقّل إلى المجلد الناتج
انقر نقراً مزدوجاً على Windows
انقر نقراً مزدوجاً على i368-mingw32
الآن سيتعين عليك معرفة مكان بيئة تشغيل Java لديك. من المحتمل أنها في
C:\Program Files\Java\jre<version number>. مكانها لدي، على سبيل المثال، فيC:\Program Files\Java\jre1.6.0_01. انسخ الملفينrxtxSerial.dllوrxtxParallel.dllمن مجلد RXTX i368-mingw32 إلى المجلدjre/bin. لذا في مثالي، وضعت هذين الملفين في المجلدC:\Program Files\Java\jre1.6.0_01\bin.
التثبيت، الجزء 2: Eclipse#
حسناً، نحن على وشك الانطلاق! تبقّى فقط بضعة أشياء للقيام بها.
إذا لم يكن لديك بالفعل، ثبّت Eclipse (الإصدار 3.2 أو أحدث). يمكنك تثبيته من http://eclipse.org/downloads. Eclipse Classic خيار آمن، رغم أن أياً من الحزم الأخرى المدرجة ينبغي أن يعمل أيضاً. للتثبيت، ببساطة فك ضغط الحزمة التي اخترتها إلى C:\Program Files\eclipse.
الآن بعد أن تم تثبيت Eclipse، نحتاج إلى تثبيت CamScripter كمكوّن إضافي لـ Eclipse:
افتح Eclipse بالنقر المزدوج على eclipse.exe في
C:\Program Files\eclipse\اضغط Enter لقبول مساحة العمل الافتراضية
افتح معالج التثبيت/التحديث باختيار Help -> Software Updates -> Find and Install
اختر زر الاختيار "Search for new features to install"، وانقر Next.
انقر الزر "New Remote Site..."
For name, enter Camscripter, and for URL enter
http://cmucam.org/~juanpablo/. Click OK.تأكد من تحديد المربع بجوار Camscripter، وانقر زر "Finish".
اختر "Camscripter" كالميزة المراد تثبيتها، وانقر Next.
اقبل اتفاقية الترخيص، وانقر Next
انقر Finish - سيقوم Eclipse بتنزيل المكوّن الإضافي لك
انقر "Install" لتثبيت مكوّن CamScripter الإضافي.
انقر Yes لإعادة تشغيل منصة Eclipse
سيُعاد بعد ذلك تشغيل Eclipse، مع تثبيت مكوّن CamScripter الإضافي لك. للتأكد من تثبيته، اختر Window -> Show View -> Other...
Click the plus sign next to CMUcam3, select "CamScripter", and click OK. You should see the CamScripter view at the bottom of Eclipse (the area surrounded in red). You can expand the bottom area if it is too small.
عرض CamScripter
لوحة وحدة التحكم حيث تُعرض الرسائل النصية
لوحة التغذية الراجعة حيث تُعرض رسائل الصور والرسومات
ينفّذ كود Lua. يمكنك إما تنفيذ ملف كامل أو أسطر مختارة من الكود فقط.
يثبّت كود Lua على بطاقة SD/MMC الخاصة بـ CMUcam3
الإعداد#
لقد ثبّتنا كل شيء! بضع خطوات إعداد فقط وسنبرمج CamScripter.
حمّل مشروع camscripter على الكاميرا#
Now that we have everything installed, we need to load the camera with our CamScripter project. Run make on the camscripter project located in projects/camscripter (in the source code tree you checked out in Quick Start Guide), and then load the hex file onto the camera. Turn the camera off once the file is loaded.
اضبط تفضيلات CamScripter#
الآن ارجع إلى Eclipse، وافتح شاشة تفضيلات CamScripter: Window --> Preferences --> CamScripter Setup.
Set the Luac location to point to your
luacx.x.exe(where x is the Lua version) file (note the 'c') wherever you installed Lua in Installation, Part 1: Lua, Serial Port Communication.للمهتمين، يقوم luac ببساطة بتصريف كود lua، بينما يقوم luax.x.exe فعلياً بتفسير الكود وتشغيله. نحن نصرّف الكود في Eclipse، ثم نشغّله على الكاميرا -- ومن هنا، luac.
قدّم اسم المنفذ التسلسلي الذي تصل به كاميرتك. يمكنك النقر على زر "See Serial Ports" لرؤية قائمة بالمنافذ التسلسلية المتاحة.
Hello, World!#
Now that we have everything installed and configured properly, let's tackle the obligatory Hello, World program. First, you'll have to create a new project. Select File --> New --> Project... You'll get a box allowing you to select the type of project you'd like to create. Double-click "General", select "Project", and click the Next button.
سمِّ مشروعك "Hello"، وانقر زر Finish. ثم أنشئ ملفاً جديداً بالنقر على File --> New --> File (في Eclipse 3.3 يكون File --> New --> Other --> General --> File). في مربع اسم الملف، أدخل "hello_world.lua"، مع Hello كمجلد أصل. انقر زر Finish.
تحقق مرة أخرى من أن كاميرتك متصلة بالمنفذ التسلسلي لحاسبك. قبل تشغيل الكاميرا من المهم فهم الوضعين اللذين تدعمهما الكاميرا:
مستقل: لا تتوقع الكاميرا أي تفاعل مع الحاسب الشخصي على الإطلاق. افتراضياً تبدأ الكاميرا في هذا الوضع.
تفاعلي: تستقبل الكاميرا كود Lua المُصرَّف من CamScripter في Eclipse وتعيد التغذية الراجعة. لوضع الكاميرا في الوضع التفاعلي، شغّلها وعندما ترى مصباح LED البرتقالي مضاءً، اضغط زر الكاميرا (لديك 3 ثوانٍ للضغط على الزر). عند تلك اللحظة، سيومض مصباح LED البرتقالي عدة مرات ليعلمك بأننا ندخل الوضع التفاعلي. إذا سار كل شيء على ما يرام، سترى الرسالة Welcome to CamScripter Interactive mode. Click the execute button to run a script.
لنبدأ الكاميرا في الوضع التفاعلي حتى نتمكن من تنفيذ أول برنامج Lua لنا.
في نافذة المحرر، أدخل سطر الكود:
print("Hello, World!");
احفظ الملف وانقر زر Execute في عرض CamScripter. وها هو!! سيكون كودك قد انتقل عبر السلك إلى الكاميرا، التي نفّذته، وأعادت الرسالة التي طبعتها.
الآن لنجرّب شيئاً أكثر إثارة قليلاً. أضف ثلاثة أسطر إضافية من الكود، بحيث يحتوي ملفك hello_world.lua على:
print("Hello, World!");
take_picture("pic_name");
print_picture("pic_name");
print("It's a picture!");
الآن انقر زر Execute مرة أخرى. سيستغرق التنفيذ وقتاً أطول هذه المرة، لأن إرسال الصور عبر المنفذ التسلسلي يستهلك وقتاً طويلاً نوعاً ما. لكن بمجرد انتهائه، ينبغي أن ترى رسالتيك في منطقة وحدة التحكم في CamScripter، والصورة التي التقطتها بالكاميرا في منطقة التغذية الراجعة (لقد أزلت غطاء العدسة، أليس كذلك؟)
You'll notice that it's a pretty low resolution image. The camera is set to take low resolution pictures by default in the CamScripter, as it takes quite a bit longer to send high resolution images through the serial port. However, you can change the camera to high resolution using function LuaApiFunctions.
روابط مفيدة#
تم تثبيت CamScripter وتهيئته بالكامل الآن، وقد رأيت مثالاً صغيرًا يعرض وظائفه. إذا أردت رؤية بعض الأمثلة الأكبر باستخدام Camscripter، ألقِ نظرة على البرامج النموذجية المضمّنة في دليل camscripter/examples. بعض الملاحظات والروابط الأخرى التي قد تساعدك:
يصف CamScripter Lua API دوال CMUcam3 التي يمكنك استخدامها في برامج Lua الخاصة بك للتحكم في إجراءات CMUcam3.
فيما يلي بعض الروابط لمساعدتك على البدء في استخدام Lua. لاحظ أن المكتبات الخارجية مثل مكتبتي string وmath غير مضمّنة في نسخة Lua المثبّتة على CMUcam3. كان لا بد من إزالتها لجعل مفسّر Lua يتسع في المساحة المحدودة على CMUcam3.
Lua Tutorial درس تعليمي لمساعدتك على البدء.
Lua Reference Manual: توثيق كامل لـ Lua.
Lua Wiki مكان مفيد للعثور على إجابات. كود نموذجي وأسئلة شائعة وروابط لموارد أخرى.
LuaEclipse is a useful Eclipse plug-in that you may find helpful. It provides syntax highlighting and other facilities to make writing Lua code easier.