بررسی مفهوم جریان تریگر در برنامه نویسی گرافیکی،Trigger Flow Concept
جریان تریگر
یک روش به منظور طراحی و ساخت نرم افزار بر اساس graphical programming که در آن تمام انواع حلقه ها و شرط ها و ترتیب اجرای برنامه ، Thread، handler و دیگر ساختارهای برنامه نویسی به کمک سیگنال های تریگر و اینتراپت ایجاد میگردند. در این روش با افزودن ورودی ها و خروجی های تریگر به بلوک های برنامه به کاربر امکان طراحی انواع ساختار های ساده و پیچیده اجرای برنامه و یا تولید ساختار های جدید اجرای برنامه به صورت مستقیم یا دارای حلقه ها و Thread ها و task هایی با sequence اجرایی و ارتباطات پیچیده و دلخواه را می دهد. به هر تعداد متصل بلوک ها که به یکدیگر از طریق تریگر متصل می باشند رشته می گوییم . رشته هایی که دارای بازگشت یا مکانیزم اجرای مجدد خودکار و یا با شرط می باشند تشکیل حلقه می دهند.
در صورتی که علاقه مند به توسعه محصول یا نرم افزاری برپایه اپلت هستید می توانید از طریق حساب کاربری Twitter یا LinkedIn بهم پیغام بدید، می تونم شما رو در جریان آخرین اطلاعات در رابطه با این پلتفرم قرار بدم و اگر پیشنهادی داشتید باز خورد های خودتون رو هم می تونید برای من ارسال کنید.
به یک حلقه یا مجموع حلقه ها که دارای اتصالات تریگر بین خود هستند task گفته میشود. در این روش هر بلوک از طریق فرمان تریگر که از بلوک دیگری دریافت می نماید اجرا می گردد. همچنین بلوک ها از طریق فرمان های تریگر داخلی سیستم مانند شرایط دریافت یک فرمان از طریق اینترنت یا cloud یا سخت افزار های متصل به سیستم میتوانند اجرا گردند. به تریگر هایی که توسط سیستم به بلوک اعمال می گردند اینتراپت می گوییم.
برای اجرای هر بلوک دلخواه در ابتدای اجرای برنامه ویژگی bootstrap برای بلوک تعریف گردیده که نقاط شروع برنامه را مشخص می نمایند. برنامه می تواند شامل چندین نقطه شروع باشد. این ساختار امکان اجرای برنامه ها به صورت هم زمان و multi-threads را به آسانی فراهم آورده به نحوی که هر حلقه و یا رشته برنامه به عنوان یک task معرفی گردیده و هر task شامل تعداد دلخواه Thread بوده که میتواند با توجه به اتصال سیگنال های تریگر یا تعریف اینتراپت ها به صورت موازی یا سری انجام پذیرند. به این ترتیب امکان بهره گیری از حداکثر قابلیت های CPU و پاسخ دهی همزمان به چندین request و یا تعریف انواع شرایط اجرا و لغو در برنامه در هر نقطه از برنامه، با Priority های دلخواه فراهم می آید. با طراحی یک واحد مرکزی کنترل داده ها Data Map Supervisor (DMS ) امکان پیاده سازی این ساختار در تمام انواع زبان های برنامه نویسی با حداقل مصرف منابع CPU و حافظه فراهم آورده شده است. به کمک DMS طراحی شده امکان بکارگیری از حداکثر ظرفیت به وجود آمده توسط این ساختار به منظور ساخت و اجرای بهینه نرم افزار های Multi task و multi-thread وجود خواهد داشت.
مقایسه توسعه برنامه برپایه جریان داده و تریگر
Data Flow vs Trigger Flow
روش های ارائه شده توسط نرم افزارهای graphical programming بر پایه اجرای برنامه بر اساس ترتیب اتصال خطوط داده data flow و یا ترتیب قرارگیری ظاهری بلوک ها و یا control flow و execution flow در برنامه می باشد. به منظور ایجاد ساختارهای پایه ای برنامه مانند حلقه ها ، conditions ها و یا مشخص نمودن ترتیب اجرای دسته ای از بلوک های مستقل ، نیاز به طراحی بلوک ها و یا ساختارهای گرافیکی بوده که در برگیرنده بلوک های مورد نظر می باشد.
برای مثال ، یک حلقه کنترلی فرایند سیستمی را بررسی می نماید که شامل تعداد زیادی ورودی سنسور بوده که هر یک در بازه های زمانی متفاوتی اطلاعاتی را ارسال می نمایند و فرامینی نیز توسط کاربر به منظور کنترل یا مانیتور اطلاعات داخل این حلقه به برنامه ارسال می گردد. به کمک این اختراع می توان به سادگی و با حداقل بلوک های مورد نیاز این تعداد پارامتر را کنترل نموده و داده های آن را در فرایند پردازشی با توجه به شرایط مورد نظر کاربر وارد نمود. همچنین میتوان بخشی از برنامه را با فرامین کاربر اجرا یا متوقف نمود بدون در نظر گرفتن وضعیت کنونی اجرای برنامه.
تریگر ها در برنامه نویسی گرافیکی
Trigger in visual programming
برنامه نویسی های معمول شامل برنامه نویسی های متنی text-based programming مانند C ، C++ ، جاوا و FORTRAN و غیره می گردند. این برنامه ها توسط کامپایلر به زبان ماشین ترجمه گردیده و اجرا می شوند. برنامه نویسی به این طریق نیازمند داشتن اطلاعات علمی و آموزش های برنامه نویسی بالا ای می باشد. به منظور ساده سازی برنامه نویسی و امکان ایجاد برنامه های کاربردی ، برنامه نویسی گرافیکی ابداع گردیده است. در این روش با قرار دادن بلوک هایی و رسم خطوط مابین داده ها و بلوک ها برنامه ایجاد می گردد.
بلوک های گرافیکی برنامه نویسی شامل تعدادی کانکتور ورودی و خروجی (کانکتور های سیگنال) و کانکتور trigger in یا trigger out می باشند. هر بلوک با دریافت فرمان از طریق پین trigger (به عنوان اینتراپت خارجی) یا یک اینتراپت داخلی (که در داخل بلوک ایجاد می گردد) شروع به انجام یک پردازش را مشخص می نماید.
هر بلوک به شکل دایره یا مستطیل یا هر شکل هندسی دو بعدی یا سه بعدی بوده و اتصال میان بلوک ها در بخش شماتیک در فضای دو بعدی (صفحه) یا یک فضای سه بعدی صورت می پذیرد.
ساختار برنامه مبتنی بر اجرای بلوک ها بر اساس سیگنال اینتراپت یا تریگر ورودی هر بلوک می باشد.
برنامه از دو بخش Back Panel و Front Panel تشکیل شده است. طراحی تمامی بخش های نرم افزار با قراردادن بلوک ها و اتصال کانکتور ها به یکدیگر ایجاد شده و واسط کاربری نیز در بخش Front Panel طراحی و ساخته می گردد.
هر رخداد که توسط عوامل محیطی، پردازش های سیستم و یا کاربر به برنامه وارد می شود زنجیره ای از رخداد ها را فعال نموده که روند مستقلی از جریان داده ها را دنبال می نماید. پیچیدگی مدیریت داده و روند اجرای برنامه یکی از نقاط قوت در معماری Nio می باشد.
ساختار یک برنامه ساده شامل سه بلوک
اطلاعات هر کانکتور سیگنال در اختیار دیگر کانکتور های متصل به آن قرار میگیرد. ترتیب اجرای برنامه توسط خطوط اتصال میان کانکتور های trigger مشخص می گردد. در شکل زیر trigger out بلوک A به trigger in بلوک A متصل است در نتیجه ترتیب اجرای برنامه اول بلوک A سپس بلوک B و بعد از آن بلوک C می باشد.
بررسی محیط نرم افزار نیوماتیک
طراحی منطق و روند اجرای اپلت در Back Panel
در Back Panel پردازش ها و Logic برنامه طراحی می گردد. در این صفحه با Drag & Drop می توان بلوک ها را از منوی پایین صفحه اضافه نمود. برای اتصال داده خروجی یک بلوک به ورودی بلوک دیگر روی پین مربوطه Drag کرده و به پین مقصد متصل می نماییم.
موارد مهم در اتصال پین ها به شرح زیر است:
- یک خروجی را می توان به هر تعداد ورودی متصل کرد.
- نمی توان به یک ورودی چند خروجی متصل نمود.
- داده ها دارای دو نوع بسته بندی می باشند که شامل داده های Single و Array است. پین ها با نوع بسته بندی داده مشابه را می توان به یکدیگر متصل نمود.
- داده ها دارای انواع گوناگونی می باشند که در بخش داده ها ذکر شده اند. پین ها با نوع داده مشابه را می توان به هم متصل نمود. البته بجز نوع Object که یک نوع کلی و مادر است و می تواند به تمام انواع به غیر از تریگر متصل گردد.
- هر ورودی تریگر تنها به یک خروجی تریگر متصل می گردد. برای تحریک یک بلوک با منابع تریگر متفاوت بایستی از بلوک های کمکی تریگر مانند Multi Drive Trigger OR بهره گرفته شود.
- هر پین خروجی تریگر به هر تعداد پین ورودی تریگر می تواند متصل گردد.
توجه: با کلیک بر روی بلوک تنظیم هایی در نوار ابزار پایین نمایش داده خواهد شد.
طراحی واسط کاربری اپلت در Front Panel
در Font Panel واسط کاربری اپلت طراحی می گردد. تعریف Constraint ها امکان طراحی واسط های گرافیکی پیچیده و Responsive را فراهم آورده است. این صفحه شامل یک Mother Page است. در صفحه Mother Page می توان Frame هایی را اضافه نمود. هر فریم می تواند شامل یک یا چند Section باشد. هر اپلت می تواند شامل چندین فریم باشد. فریم ها همان View هایی هستند که به کاربر نمایش داده می شود. نمایی از Front Panel در تصویر زیر نشان داده شده است.
توجه: با Drag & Drop در Front Panel می توانید بلوک هایی را مستقیما به اپلت خود اضافه نمایید. تنها بلوک هایی که دارای View، یعنی بخش قابل نمایش به کاربر، هستند بعد از اضافه شدن به اپلت نشان داده خواهند شد. باقی بلوک ها در Back Panel قابل مشاهده است.
دسترسی به بخش تنظیمات بلوک
برای دسترسی به بخش تنظیمات بلوک می توانید به یکی از طریق های زیر اقدام نمایید:
- روی بلوک مورد نظر دو بار کلیک نمایید.
- با انتخاب بلوک، از منوی نمایش داده شده در زیر آن گزینه Setting را انتخاب نمایید.
- زمانی که منوی ابزار های پایین صفحه باز است، بلوک را انتخاب نمایید و به بخش Attribute مراجعه نمایید.
اجرای اپلت
برای اجرای اپلت کلید Play را کلیک نمایید. رنگ پس زمینه به سبز تغییر خواهد کرد که نشانگر اجرای اپلت می باشد. حال می توانید کلید های و دیگر المان های اپلت را در حالت اجرا امتحان نمایید.
با زدن کلید Full screen (یا تمام صفحه) در بالای هر فریم، فریم مربوطه به صورت تمام صفحه نمایش داده خواهد شد. در این حالت از صفحه Mother Page خارج شده و اسکرول به چپ-راست و بالا-پایین نخواهید داشت. توصیه می شود برای تست اپلت از این حالت استفاده نمایید.
اپلیکیشن توسعه اپلت (Niomatic IDE)
اپلیکیشن اجرای اپلت برای کاربران (Runtime)
در زمان نگارش این مطلب، اپلیکیشن Runtime به صورت نسخه Beta منتشر شده است.
منابع تریگر
می توانید نظرات خودتون رو در رابطه با این پلتفرم با @NiomaticInc در تویتر به اشتراک بگذارید.
این مطلب به مرور تکمیل می گردد.
مطلبی دیگر از این انتشارات
داستان انقلابی که در آزمایشگاه های بزرگ و اتاق های کوچک در جریان است! AI & IOT
مطلبی دیگر از این انتشارات
قرارداد هوشمند، ICO، مشارکت در پروژه و راه حلی برای پیدا کردن بهترین برنامه نویس ها و طراح ها.
مطلبی دیگر از این انتشارات
چرا باید توانایی ارتباط با ماشین ها را یاد بگیریم؟ 1984-2018