v1.1.0¶
الإصدار v1.1.0 هو إصدار البنية التأسيسية: فهو يتخلى عن الوحدات الطرفية المخصصة المبكرة لصالح الوحدات المدمجة القياسية في MicroPython، وينقل واجهة برمجة تطبيقات التصوير إلى وحدة image وساعة معدل الإطارات إلى time، ويضيف سلاسل Haar مدمجة، وget_pixel() / set_pixel()، ودعم لوحة OpenMV 2، وتصحيح الأخطاء عبر USB-CDC. وهو إصدار ذو تغييرات جذرية كثيرة ومحدِّد لواجهة برمجة التطبيقات — اقرأ التغييرات الجذرية أدناه.
أبرز الميزات¶
الوحدات المدمجة في MicroPython — أُزيلت الوحدات المخصصة
gpio/led/spi/socket/wlan/uart/file/selectلصالحpyb/machineفي MicroPython.وحدة
image— أصبحتImage()/HaarCascade()/ الواصفات الآن في وحدةimage.time.clock— انتقلت ساعة معدل الإطارات إلى وحدةtime.سلاسل Haar مدمجة —
HaarCascade("frontalface")/HaarCascade("eye")(لا حاجة إلى ملف).دعم لوحة OpenMV 2 وتصحيح الأخطاء عبر USB-CDC.
تغيير جذري: أُعيد تعريف بنية الوحدات — انظر التغييرات الجذرية.
ميزات جديدة¶
الصورة — تمت إضافة
Image.get_pixel(x, y)/set_pixel()والوصول إلى البكسل بالفهرسةimg[i]؛ وسلاسل Haar مدمجة في ذاكرة الفلاش (HaarCascade("frontalface")/HaarCascade("eye")) وكلمة مفتاحيةstages=لتحديد مراحل السلسلة؛ وتعملdraw_string()على الصور بتدرج الرمادي.المستشعر — تمت إضافة
sensor.set_colorbar()وsensor.set_saturation()وحجم الإطارQQVGA2.mlx—mlx.read(type)مع خرجmlx.RAINBOW/mlx.GRAYSCALE.تصحيح الأخطاء — تم تنفيذ تصحيح الأخطاء عبر USB CDC، واستعلام
fw_version()لإصدار البرنامج الثابت، وبرنامج ثابت خاص بكل لوحة (OpenMV 1 / OpenMV 2)، وبرامج نصية للاختبار الذاتي / شريط الألوان؛ وتُسجَّل الأخطاء الفادحة/أخطاء التحليل في ذاكرة الفلاش.
تغييرات وتحسينات أخرى¶
أصبح نفاد الذاكرة يطلق
MemoryErrorبدلًا منOSError؛ وتعمل البرامج النصية مع إعادة إطلاق الاستثناءات بحيث تُطبع الأخطاء بدلًا من الانهيار؛ ومعدل الباود التسلسلي قابل للتهيئة (الافتراضي 921600)؛ ونظام ملفات فلاش أكبر؛ وخُفّض معدل ساعة بكسل المستشعر إلى 54 MHz لاستقرار الالتقاط؛ وتعتمدsensor.reset()على إعادة ضبط برمجية للمستشعر فقط.
إصلاحات الأخطاء¶
تم إصلاح مطابقة القوالب، وتكرار
find_features()للكائن الأول، والوصول الذري لسجلات SCCB/I2C، وكشف شريحة بطاقة SD، وتعيين دبابيس I2C البرمجي، ودقةfast_cbrtf/ ألوان LAB، واستخدام ذاكرة الصور التكاملية / مرشح الوسيط على OpenMV 1 / 2.
دعم العتاد واللوحات¶
دعم لوحة OpenMV 2 (STM32F427) (وتصميم عتاد OpenMV 3)؛ واستُخدم MCO كساعة للمستشعر على OpenMV 2.
تغييرات جذرية في واجهة برمجة التطبيقات¶
تغييرات جذرية في واجهة برمجة التطبيقات المرئية للمستخدم بين v1.0.3-beta وv1.1.0. النطاق: وحدات C الخاصة بـ Python في modules/ ومكتبات Python في scripts/libraries/.
كل تغيير موسوم بأثره:
رئيسي — يؤثر على معظم البرامج النصية التي استخدمت الميزة؛ ستحتاج إلى نقل الشيفرة.
سلوكي — الواجهة نفسها لكن بنتائج مختلفة؛ أعِد فحص البرامج النصية المضبوطة بدقة.
تُجمّع التغييرات حسب الأثر بهذا الترتيب. إذا كنت تريد فقط نقل شيفرتك، فانتقل إلى قائمة التحقق من النقل في النهاية. يرتبط كل تجزئة كومِت بفرقه على GitHub.
إزالة الوحدات الطرفية المخصصة (رئيسي)¶
أُزيلت الوحدات المخصصة المبكرة clock / file / gpio / led / select / socket / spi / wlan / uart لصالح الطرفيات المدمجة pyb / machine في MicroPython. انقل البرامج النصية إلى المكافئات القياسية في MicroPython (مثل pyb.Pin / pyb.LED / pyb.SPI / pyb.UART).
الكوميتات: 6d2fafa94
نُقلت واجهة برمجة تطبيقات التصوير إلى وحدة image (رئيسي)¶
لم تعد Image() وHaarCascade() ودوال حفظ/تحميل الواصفات وحداتٍ مدمجة مجردة — فهي تعيش الآن في وحدة image الجديدة. يجب أن تستورد البرامج النصية import image وتستخدم image.Image / image.HaarCascade().
الكوميتات: 54288c535
نُقلت ساعة معدل الإطارات إلى time (رئيسي)¶
أُزيلت وحدة clock المستقلة؛ وتعيش ساعة معدل الإطارات الآن في time. استخدم import time وclock = time.clock() — لا يزال الكائن المُعاد يوفر .tick() / .fps() / .avg() / .reset().
الكوميتات: a8928ca3b
لم تعد /flash و/sd تُضافان إلى sys.path (سلوكي)¶
تم تثبيت تسميات وحدات التخزين / الدليل الجذر، ولم تعد /flash و/sd تُلحقان تلقائيًا بـ sys.path. يجب على البرامج النصية التي استوردت وحدات مساعدة بالاسم المجرد من تلك المواقع أن تضيف المسار صراحةً (أو أن تضع الوحدات حيث يُعثر عليها).
الكوميتات: 09e77b5da
قائمة التحقق من النقل¶
من أجل نقل نظيف إلى v1.1.0، يكون العمل المعتاد كالتالي:
استبدل الوحدات المخصصة
gpio/led/spi/uart/socket/wlan/file/selectبـpyb/machineفي MicroPython (إزالة الوحدات المخصصة).import imageوأضف البادئةimage.إلىImage()/HaarCascade()(نقل وحدة image).استخدم
import timeوclock = time.clock()(نقل ساعة clock).أضف
/flash//sdإلىsys.pathصراحةً إذا كنت قد استوردت وحدات مساعدة بالاسم المجرد (تغيير sys.path).
تعمل جميع البرامج النصية الأخرى دون تغيير.