وقتی یک محاسبه یا پردازش در متلب زمانبر است، بررسی مداوم پنجرهٔ برنامه برای فهمیدن پایان کار چندان راحت نیست. پروژهٔ Matlab Notification یک تابع ساده در اختیار میگذارد تا در نقطهٔ دلخواه اسکریپت، اعلان ویندوز نمایش دهید؛ مثلاً وقتی محاسبات تمام شدهاند یا خروجی آمادهٔ بررسی است.
این پروژه از دو بخش اصلی تشکیل شده است: فایل notify.m که از داخل MATLAB فراخوانی میشود و برنامهٔ notify-send.exe که نمایش اعلان را انجام میدهد. نوع پیام، عنوان و متن را به تابع میدهید و تابع، برنامهٔ اجرایی را از طریق دستور system صدا میزند.
راهاندازی
برای استفاده به MATLAB روی ویندوز و دو فایل یادشده نیاز دارید. ابتدا مخزن را دریافت کنید:
git clone https://github.com/hatamiarash7/Matlab_Notification.git
برای شروع، پوشهٔ Matlab_Notification را در MATLAB بهعنوان Current Folder باز کنید. در این حالت، هم تابع notify.m و هم فایل اجرایی در پوشهٔ جاری هستند و میتوانید مثالهای زیر را اجرا کنید.
برای افزودن ابزار به یک پروژهٔ دیگر نیز میتوانید هر دو فایل را در پوشهٔ کاری آن پروژه قرار دهید. اگر فایلها را در پوشهٔ جداگانهای نگه میدارید، به تفاوت این دو مسیر توجه کنید:
- متلب باید
notify.mرا در پوشهٔ جاری یا مسیر جستوجوی خودش پیدا کند؛ برای افزودن پوشهٔ تابع میتوان ازaddpathاستفاده کرد. - دستور سیستم باید
notify-send.exeرا پیدا کند؛ این فایل باید در پوشهٔ جاری یا یکی از مسیرهایPATHویندوز باشد.
بنابراین صرفاً افزودن پوشه به مسیر متلب، دسترسی دستور سیستم به فایل اجرایی را تضمین نمیکند. پیادهسازی تابع برنامه را با نام notify-send فراخوانی میکند و مسیر آن را از محل فایل notify.m محاسبه نمیکند.
نمایش اعلان
تابع سه آرگومان میگیرد: نوع اعلان، عنوان و متن پیام. راهنمای مخزن سه نوع important، info و error را معرفی میکند:
notify('info', 'Calculation finished', 'Results are ready.');
notify('important', 'Review required', 'Please check the output.');
notify('error', 'Processing failed', 'Please inspect the MATLAB console.');
این فراخوانیها مستقل هستند؛ لازم نیست برای نمایش یک اعلان هر سه خط را اجرا کنید. رشتهها در مثالها با کوتیشن تکی نوشته شدهاند تا با شیوهٔ ساخت فرمان در تابع هماهنگ باشند.
برای نمونه، میتوان اعلان را پس از یک محاسبه قرار داد:
values = rand(1000, 1);
average = mean(values);
notify('info', 'Calculation finished', ...
sprintf('Mean value: %.4f', average));
در این مثال ابتدا میانگین محاسبه میشود و سپس نتیجه در متن اعلان قرار میگیرد. همین الگو را میتوانید در پایان پردازش واقعی خود به کار ببرید. زمان فراخوانی کاملاً در اختیار کد شماست؛ تابع بهصورت خودکار پایان محاسبات یا خطاهای متلب را تشخیص نمیدهد.
نحوهٔ اجرا و مدیریت خطا
تابع ورودیها را به فرمانی با این ساختار تبدیل میکند:
notify-send -i "info" "Calculation finished" "Results are ready."
نوع اعلان پس از گزینهٔ -i قرار میگیرد و دو آرگومان بعدی عنوان و متن هستند. سپس system وضعیت خروج و خروجی فرمان را دریافت میکند. اگر وضعیت خروج غیرصفر باشد، تابع با شناسهٔ Notify:Error هشدار متلب صادر میکند و خروجی فرمان را در آن قرار میدهد.
تابع مقدار بازگشتی تعریف نکرده است؛ بنابراین نمیتوان وضعیت اجرای اعلان را به شکل status = notify(...) دریافت کرد. همچنین انتخاب نوع error فقط نوع پیام ارسالی را مشخص میکند و بهخودیخود یک استثنای MATLAB ایجاد نمیکند.
نکات استفاده
- مقصد این پروژه ویندوز است. فایل اجرایی همراه مخزن
notify-send.exeاست؛ تشابه نام آن با ابزارهای اعلان در سیستمهای دیگر، به معنی پشتیبانی این بسته از آن سیستمها نیست. - ورودیها مستقیماً وارد فرمان سیستم میشوند. تابع برای نوع، عنوان و متن، اعتبارسنجی یا escaping انجام نمیدهد. متن نامطمئن را مستقیماً به آن ندهید؛ کوتیشن دوتایی و نویسههای ویژهٔ پوسته میتوانند ساختار فرمان را تغییر دهند.
- سازگاری نسخهها مستند نشده است. مخزن حداقل نسخهٔ MATLAB یا فهرست نسخههای پشتیبانیشدهٔ ویندوز را مشخص نمیکند؛ نمایش اعلان را در محیط مقصد با یک پیام ساده بررسی کنید.
کد پروژه با مجوز MIT منتشر شده است. برای دیدن سادهترین نمونهٔ فراخوانی نیز میتوانید به فایل test.m مراجعه کنید.