آموزش برنامه نویسی بصورت تئوری و عملی

Virtual address spaces

زمانی که یک پردازنده اقدام به خواندن و نوشنتن به یک مکان حافظه میکند ، از یک آدرس مجازی استفاده میکند .

به عنوان بخشی از عملیات  خواندن یا نوشتن ، پردازنده آدرس مجازی را به آدرس فیزیکی ترجمه میکند . دسترسی به حافظه از طریق یک آدرس مجازی مزایای زیر را دارد :
ادامه مطلب...
۱۹ مرداد ۹۶ ، ۲۰:۱۸ ۰ نظر موافقین ۰ مخالفین ۰
سید عمید قائم مقامی

ProcessAffinityMask , ThreadAffinityMask , SystemInfo

در این پست توضیحات مختصری درمورد سه API ویندوز میدهیم و برای هر یک مثالی میزنیم .

BOOL WINAPI SetProcessAffinityMask(
  HANDLE    hProcess,
  DWORD_PTR dwProcessAffinityMask
);
DWORD_PTR WINAPI SetThreadAffinityMask(
  HANDLE    hThread,
  DWORD_PTR dwThreadAffinityMask
);
void WINAPI GetSystemInfo(
  LPSYSTEM_INFO lpSystemInfo
);

ادامه مطلب...
۱۶ مرداد ۹۶ ، ۱۹:۵۹ ۰ نظر موافقین ۰ مخالفین ۰
سید عمید قائم مقامی

Dynamic_link_library , PE(Portable Executable)

در خلاصه ترین حالت میتوان گفت Dynamic link library نام کتابخانه هایی است که توسط برنامه ها استفاده میشوند و توسط مایکروسافت پیاده سازی شده ( که اغلب دارای پسوند dll میباشند ) .
این فایل ها همانند ساختار فایل های exe در ویندوز دارای ساختار (pe (Portable Executable میباشد .
این کتابخانه ها میتوانن شامل کد و دیتا و ریسورسها باشند .
یکی از مزایای فایل های dll این است که یک بار در حافظه لود میشود و میتواند توسط چندین برنامه مورد استفاده قرار گیرد(به صورت مجازی برای هر برنامه کپی میشود ) . میتوان dll ها را در موقه نیاز در برنامه لود کرد و هر جا که دیگر مورد نیاز نبود آن را Unload کرد .
از طرفی دیگر میتوان از آن برای استفاده از برنامه های قابل آبدیت نیز استفاده کرد به این صورت که میتوان آیکن ها ، فونت ها و کد هایی که در هسته اصلی برنامه جایگاهی ندارند را درون dll ها قرار داد و در هنگام آبدیت تنها این dll ها را تعویض کرد.


Dynamic link library

ادامه مطلب...
۱۴ مرداد ۹۶ ، ۱۵:۱۴ ۱ نظر موافقین ۰ مخالفین ۰
سید عمید قائم مقامی

What is a driver

درایور نام برنامه ای است که در سطح کرنل اجرا میشود (در برخی موارد تنها در سطح یوزر نوشته و اجرا میشود) و اجازه میدهد یک سیستم عامل با یک دستگاه در ارتباط باشد و همچنین از کاربرد دیگر آن ، درایور به برنامه نویس این توانایی را میدهد که تغییراتی را که میخواهد در سطح کرنل انجام دهد اعمال کند .

فرض کنید یک برنامه نیاز دارد که یک مقدار اطلاعات را از دستگاهی بخواند . برنامه یک تابع اجرایی را به وسیله سیستم عامل صدا میزند و سیستم عامل نیز یک تابع از درایور را برای گرفتن اطلاعات از دستگاه فراخوانی میکند.
درایوری که به وسیله کمپانی طراحی شده میداند که چگونه باید با سخت افزار وسیله خود ارتباط برقرار کند .
بعد از اینکه درایور اطلاعات را از دستگاه گرفت آن را در اختیار سیستم عامل قرار میدهد و سیستم عامل نیز آن را به برنامه مورد نظر میدهد تا از آن استفاده کند

driver

ادامه مطلب...
۰۸ مرداد ۹۶ ، ۲۳:۲۹ ۰ نظر موافقین ۰ مخالفین ۰
سید عمید قائم مقامی

list_process

در این پست ما قصد داریم برنامه ای بنویسیم که پروسس های موجود در سیستم به همراه id و Priority نمایش میدهد. ما در این برنامه برای انجام این کار از API موجود در سیستم عامل استفاده میکنیم .

ادامه مطلب...
۲۷ تیر ۹۶ ، ۱۵:۳۱ ۱ نظر موافقین ۰ مخالفین ۰
سید عمید قائم مقامی

serial number cpu (CPU ID)

هر CPU دارای یک مقدار منحصر به فردی میباشد که توسط کارخانه درون آن نوشته میشود و با دستورات و حتی با ابزار های ویندوز قابل دیدن میباشد .

این مقدار بیشتر برای ایجاد قفل های سخت افزاری به کار میرود.

ما برنامه مثالی برای گرفتن و نمایش آن میگذاریم تا از توضیحات اضافی خوداری شود ... این کد در ویندوز 7 مجازی 32 بیت و در ویندوز 10 با دو CPU اینتل و ای ام دی تست و درست میباشد.

ادامه مطلب...
۱۵ تیر ۹۶ ، ۲۱:۴۷ ۰ نظر موافقین ۰ مخالفین ۰
سید عمید قائم مقامی

برنامه نویسی با PLC

برنامه نویسی PLC :
مهم ترین ویژگی که هر زبان برنامه نویسی PLC بایستی داشته باشد سادگی درک و سهولت استفاده از آن در کارهای کنترلی است. این امر دلالت بر نیاز به یک زبان برنامه نویسی سطح بالا دارد که دستورات آن تا حد ممکن به توابع و عملیات خواسته شده توسط یک مهندس کنترل نزدیک باشد.


امروزه دیاگرام های نردبانی (LADDER) به متداول ترین روش توصیف مدارهای منطقی رله ای تبدیل شده اند.
دیاگرام نردبانی مشتمل بر دو خط قائم است که نمایشگر ریل های توان یا خطوط توان (فاز و نول) می باشند، به اضافه سمبل های مداری که پلکان های نردبان را تشکیل می‌دهند.
این زبان بسیار شبیه به مدارات فرمان در برق صنعتی دارد و همانند کنتاکت های باز و بسته در این مدارات دستورات را اجرا می نماید.

یکی دیگر از زبان های برنامه نویسی PLC ، زبان FBD می باشد که مبنای آن بر گیت های منطقی استوار است.
از مزایای این روش نسبت به زبان نردبانی LAD راحتی کار با آن و طراحی و عیب یابی برنامه نوشته شده است.

ادامه زبان های برنامه نویسی PLC در ادامه مطلب این موضوع :
ادامه مطلب...
۱۴ تیر ۹۶ ، ۲۱:۴۱ ۰ نظر موافقین ۱ مخالفین ۰
آرش الف

CreateNamedPipe , ConnectNamedPipe

CreateNamedPipe : این تابع پس از ساخته شدن یک هندل برای کنترل برمیگرداند و سپس شروع به کار میکند.

سینتکس این تابع به صورت زیر میباشد .

HANDLE WINAPI CreateNamedPipe(
  LPCTSTR               lpName,
  DWORD                 dwOpenMode,
  DWORD                 dwPipeMode,
  DWORD                 nMaxInstances,
  DWORD                 nOutBufferSize,
  DWORD                 nInBufferSize,
  DWORD                 nDefaultTimeOut,
  LPSECURITY_ATTRIBUTES lpSecurityAttributes
);

ادامه مطلب...
۰۸ تیر ۹۶ ، ۱۸:۲۵ ۰ نظر موافقین ۰ مخالفین ۰
سید عمید قائم مقامی

Manifests,Resource Hacker v4.2.5

فایل manifest فایلیست با فرمت xml که در برخی موارد کنار فایل اجرایی موجود است و در برخی موارد درون فایل برنامه موجود میباشد . یکی از کاربرد های این فایل تعیین سطح دسترسی برنامه میباشد . به عنوان مثال میتوان سطح دسترسی یوزر اکانت را تغییر داد . این فایل از ویندوز XP به بعد ارائه گردید .
ادامه مطلب...
۰۷ تیر ۹۶ ، ۱۳:۵۵ ۰ نظر موافقین ۱ مخالفین ۰
سید عمید قائم مقامی

آشنایی با کنترل کننده های منطقی برنامه پذیر (PLC)

هر سیستم کنترلی را به سه بخش اصلی می‌توان تقسیم کرد : ورودی ، بخش پردازشگر و خروجی. 


سیگنال های ورودی توسط مبدل‌ها که کمیت‌های فیزیکی را به سیگنال‌های الکترونیکی تبدیل می‌کنند ،  فراهم می‌شوند. 

یک سیستم کنترل باید بتواند بر طریقه عملکردی یک فرآیند دخالت و تسلط داشته باشد. این کار با استفاده المان‌های خروجی، از قبیل پمپ‌ها، موتورها، پیستون‌ها، رله‌ها و انجام می‌شود.

یک طرح کنترلی به دو روش قابل اجرا است:

با استفاده از سیستم‌های کنترل غیرقابل تغییر توسط اپراتور و نیز با استفاده از کنترل کننده‌های قابل برنامه‌ریزی.

رله‌ یکی از قطعات مهم در بیشتر سیستم‌های کنترل مدرن است. این قطعه‌ یک سوئیچ الکتریکی با ظرفیت جریانی بالاست. یک سیستم رله‌ای ممکن است شامل چند صد یا حتی چند هزار کنتاکت باشد.

PLC ها به عنوان جانشینی برای سیستم ‌های منطقی رله‌ای و تایمری غیرقابل تغییر توسط اپراتور طراحی شدند تا به جای تابلوهای کنترل متداول قدیمی استفاده شوند. این کار به وسیله برنامه‌ریزی آن‌ها و اجرای دستورالعمل‌های منطقی ساده که اغلب به شکل دیاگرام نردبانی است، صورت می‌گیرد. PLC ها دارای یک سری توابع درونی از قبیل: تایمرها و شمارنده‌ها و شیفت رجیسترها می‌باشند که امکان کنترل مناسب را‏ حتی با استفاده از کوچک‌ترین PLC نیز، فراهم می‌آورند.

یک PLC با خواندن سیگنال‌های ورودی، کار خود را شروع کرده و سپس دستورالعمل‌های منطقی (که قبلاَ برنامه‌ریزی شده و در حافظه جای گرفته است) را بر روی این سیگنال‌های ورودی اعمال می‌کند و در پایان، سیگنال‌های خروجی مطلوب را برای راه‌اندازی تجهیزات و ماشین‌آلات تولید می‌نماید. تجهیزات استانداردی درون  PLCها تعبیه شده‌اند که به آن‌ها اجازه می‌دهد مستقیماَ و بدون نیاز به واسطه‌ های مداری یا رله‌ها، به المان خروجی یا محرک (actuator) و مبدل‌های ورودی (مانند پمپ‌ها و سوپاپ‌ها) متصل شوند.

    plcs7300

ادامه توضیحات در ادامه مطلب

ادامه مطلب...
۰۳ تیر ۹۶ ، ۲۰:۰۸ ۰ نظر موافقین ۲ مخالفین ۰
آرش الف