<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>نوشته های احمد کلاته</title><link>https://virgool.ir/feed/@m_32163973</link><description></description><language>fa</language><pubDate>2026-11-11 07:18:41</pubDate><image><url>https://virgool.ir/images/default-avatar.jpg</url><title>احمد کلاته</title><link>https://virgool.ir/@m_32163973</link></image><item><title>پروتکل Modbus ASCII چیست؟</title><link>https://virgool.ir/@m_32163973/پروتکل-modbus-ascii-چیست-nqkqe2lubjd4</link><description>اModbus یک پروتکل ارتباطی سریالی است که توسط شرکت Modicon در سال 1979 توسعه یافت. این پروتکل در ابتدا برای استفاده با کنترل کننده های منطقی قابل برنامه ریزی شرکت (PLC) طراحی شده بود. Modbus یک پروتکل باز است که از دستگاه های سریالی که از پروتکل های RS232/RS485/RS422 استفاده می کنند پشتیبانی می کند. سادگی آن و این واقعیت که تولید کنندگان می توانند آن را بدون هیچ هزینه ای در محصولات خود بگنجانند، به آن کمک کرده است تا به محبوب ترین روش اتصال دستگاه های الکترونیکی صنعتی تبدیل شود.دو سبک اصلی انتقال وجود دارد که هنگام استفاده از پروتکل Modbus استفاده می شود. آنها Modbus RTU و Modbus ASCII هستند. این مقاله به عنوان یک آموزش پیشرفته Modbus ASCII است. ما با یک مرور کلی از Modbus که مربوط به هر دو اجرای ASCII و RTU پروتکل است، شروع خواهیم کرد.اModbus به موضوع ارسال اطلاعات بین دستگاه های الکترونیکی از طریق خطوط سریال می پردازد. پروتکل در معماری که از مدل master/slave پیروی می کند پیاده سازی می شود. مستر Modbus مسئول درخواست اطلاعات از دستگاه های دیگر است. یک Modbus Master در یک شبکه استاندارد Modbus وجود دارد.تMaster اطلاعاتی را از دستگاه های Slave درخواست می کند که تعداد آنها می تواند تا 247 باشد. هر دستگاه Slave با یک آدرس Slave بین 1 و 247 شناسایی می شود. فرآیندی که در آن master از Slave درخواست می کند و اطلاعات برگردانده شده از Slave را دریافت می کند. منظور از ارتباطات مدباس است. علاوه بر درخواست اطلاعات از Slave، دستگاه اصلی می‌تواند در رجیسترهای داخلی دستگاه Slave نیز بنویسد.داده های سریال بین دستگاه ها در جریان های بیتی که هر بیت یک ولتاژ است رد و بدل می شود. داده های باینری با 1 که با ولتاژ منفی و صفر با ولتاژ مثبت نشان داده می شود رد و بدل می شود.پروتکل Modbus کدهای تابع و طرح رمزگذاری را برای انتقال داده ها به صورت نقاط منفرد (1 بیتی، سیم پیچ ها) یا به عنوان ثبات های داده 16 بیتی تعریف می کند. بسته های داده بر اساس روش انتقال در حال استفاده کپسوله می شوند. پروتکل Modbus از چهار جدول مجزا برای ذخیره داده ها در دستگاه های برده استفاده می کند. دو سیم پیچ وجود دارد که مقادیر گسسته روشن یا خاموش را ذخیره می کنند و دو رجیستر که مقادیر عددی را ذخیره می کنند. در مورد Modbus ASCII، پیام‌ها با استفاده از مجموعه کاراکترهای ASCII ارسال می‌شوند، که باعث می‌شود به راحتی توسط چشم انسان قابل خواندن باشد.چگونه ارتباط Modbus ASCII را با آنالایزر پروتکل Modbus آزمایش کنیم؟اگر با دستگاه های سریال و پروتکل Modbus کار می کنید، این احتمال وجود دارد که در برخی مواقع نیاز به اشکال زدایی یا نظارت بر انتقال داده های سریال خود داشته باشید. Modbus Analyzer یک برنامه نرم افزاری اختصاصی است که توسط Electronic Team, Inc. ساخته شده است که می تواند برای تجزیه و تحلیل و تشخیص انتقال داده در حال حرکت از طریق رابط های سریال سیستم شما استفاده شود.برای درک بهتر اینکه چگونه یک ابزار تست Modbus ASCII مانند Modbus Protocol Analyzer می تواند به شما کمک کند، اجازه دهید نگاهی به داده ها و قالب پیام Modbus ASCII بیندازیم.فرمت داده Modbus ASCIIیModbus ASCII از مجموعه کاراکترهای ASCII برای نمایش کاراکترهای هگزا دسیمال که هر کدام حاوی 4 بیت داده است استفاده می کند. در حالت Modbus ASCII در هر بایت 10 بیت وجود دارد. آنها عبارتند از:1 بیت شروع7 بیت داده با کمترین بیت مهم ابتدا ارسال شد1 بیت برای تکمیل برابری1 بیت استاپقالب پیام Modbus ASCIIقالب پیام‌های Modbus ASCII از یک کاراکتر شروع تشکیل می‌شود که یک کولون &#34;:&#34; است و انتهای پیام با یک بازگشت و تغذیه خط تعریف می‌شود. این باعث می شود که فضای بین پیام ها متغیر باشد و Modbus ASCII برای انتقال از طریق مودم های خاص مناسب باشد.نرم افزار Modbus Sniffer می تواند در اشکال زدایی، نظارت و تشخیص مشکلات در شبکه Modbus بسیار مفید باشد. می توان از آن برای هر دو پیاده سازی Modbus RTU و ASCII استفاده کرد.استفاده از این ابزار به شما امکان می دهد:تجزیه و تحلیل بینش پژوهان آتی فعالیت پورت سریال - می توانید هر پورت سریالی را در سیستم خود باز کنید، حتی اگر قبلاً توسط برنامه دیگری استفاده می شود. از جمع آوری داده های بلادرنگ برای تشخیص سریع مسائل مربوط به تمام فعالیت های پورت سریال استفاده کنید.چندین پورت سریال را در یک زمان مانیتور کنید - یک فایل لاگ مرکزی تمام داده های نظارت شده شما را به صورت اول در اول برای تجزیه و تحلیل آسانتر نگه می دارد.داده های خود را در چهار فرمت مختلف مشاهده کنید - از این نماهای مختلف به تنهایی یا به صورت ترکیبی استفاده کنید تا بینش بیشتری نسبت به داده های خود به دست آورید. حالت جدول، خط، dump و ترمینال به شما امکان می دهد داده های خود را مطابق با نیاز خود مشاهده کنید.شبیه سازی انتقال داده - می توانید انتقال داده ها را به دستگاه های سریال در قالب های مختلف مانند رشته، باینری، اعشاری و هگز تقلید کنید.داده های نظارت شده خود را صادر کنید - می توانید داده های خود را به فایل هایی با فرمت HTML، متن ASCII، متن یونیکد یا فرمت Exсел CSV صادر کنید. داده های جدید را می توان به فایل های ذخیره شده قبلی اضافه کرد.تفاوت Modbus ASCII و RTU چیست؟اModbus ASCII و RTU هر دو به عنوان بخشی از مشخصات پروتکل اصلی Modbus معرفی شدند. این دو نسخه از معماری master/slave یکسان استفاده می کنند و بسیار شبیه هم هستند. هر دوی آنها برای کار با دستگاه های سریال طراحی شده اند، اما به دلیل تفاوت هایی که در زیر به آنها خواهیم پرداخت، با یکدیگر سازگار نیستند.عامل اصلی تمایز این است که Modbus RTU از کدگذاری باینری استفاده می کند که در آن Modbus ASCII با نام مناسب از مجموعه کاراکترهای ASCII استفاده می کند. Modbus RTU بررسی خطا را با استفاده از روش CRC دقیق انجام می دهد در حالی که Modbus ASCII از روش بررسی خطای LRC کمتر مؤثر استفاده می کند. فرمت داده نیز کمی متفاوت است زیرا تغییر RTU از یک بیت شروع، 8 بیت داده و یک بیت توقف استفاده می کند که برخلاف قالب داده ASCII که قبلاً به آن نگاه کردیم.ترکیب کدگذاری باینری و بررسی خطای CRC باعث می‌شود Modbus RTU برای کاربردهای صنعتی مناسب باشد زیرا انتقال کارآمدتری نسبت به کاراکترهای ASCII دارد. هنگام انتخاب بین Modbus RTU در مقابل ASCII، اگر عملکرد مورد توجه باشد، RTU اولین انتخاب است.اModbus ASCII در مقابل TCPیک مزیت دیگر از Modbus وجود دارد و آن Modbus TCP است. این به سادگی پیاده سازی Modbus است که روی یک شبکه TCP/IP اجرا می شود. تفاوت اصلی Modbus ASCII و Modbus TCP در این است که بررسی خطای LRC که توسط Modbus ASCII مورد نیاز است توسط لایه IP انجام می شود.چگونه Modbus ASCII را به پروتکل Modbus RTU تبدیل می کنید؟همانطور که قبلاً اشاره کردیم، پروتکل های Modbus ASCII و Modbus RTU با یکدیگر سازگار نیستند. دستگاه هایی که از این دو پروتکل استفاده می کنند نمی توانند مستقیماً با یکدیگر ارتباط برقرار کنند. اما راه هایی وجود دارد که دستگاه ها با یکدیگر صحبت کنند.برای این کار باید از یک راه حل سخت افزاری به نام مبدل Modbus ASCII به RTU استفاده کنید. این نوع دستگاه اساساً یک مترجم است که داده‌ها را از یک دستگاه می‌خواند و سپس آن‌ها را به صورت داخلی در پروتکل دیگری برای استفاده توسط دستگاه دوم ذخیره می‌کند. به این ترتیب دستگاه هایی که از هر گونه تغییر Modbus استفاده می کنند می توانند با یکدیگر ارتباط برقرار کنند.</description><category>احمد کلاته</category><author>احمد کلاته</author><pubDate>Sun, 24 Jul 2022 23:55:26 +0430</pubDate></item><item><title>با استفاده از پورت سریال مجازی بین AVR و PC ارتباط برقرار کنید</title><link>https://virgool.ir/@m_32163973/با-استفاده-از-پورت-سریال-مجازی-بین-avr-و-pc-ارتباط-برقرار-کنید-trksfpngz5bm</link><description>این مقاله در مورد نحوه برقراری ارتباط بین AVR و PC به روشی ساده اما کاملاً جامع صحبت خواهد کرد. این ساده است زیرا من از یک رابط نسبتاً &#34;کلاسیک&#34; برای برقراری ارتباط بین AVR و PC استفاده می کنم، رابط RS232 از طریق پورت های COM. جامع است زیرا من شما را از طریق انتقال بین AVR و PC، نحوه نوشتن رابط برنامه RS232 بر روی کامپیوتر و AVR راهنمایی خواهم کرد. به طور خاص این مقاله شامل:1. نمای کلی پورت COMپورت COM یا پورت سریال یک پورت ارتباطی است که بخشی از شکل &#34;پیری&#34; رایانه شخصی است، هم دسکتاپ و هم لپ تاپ. امروزه با ظهور و &#34;گسترش&#34; استاندارد USB، پورت COM (و پورت LPT یا پورت موازی) در حال از بین رفتن است.ارتباط پورت COM ارتباط سریال RS232 است. این استاندارد در مقایسه با USB بسیار کند است. با این حال، با روباتیک یا کنترل، COM-RS232 به دلیل سادگی و همچنین به دلیل ... این کاهش سرعت بسیار محبوب است. پورت های COM در رایانه های موجود (در صورت وجود) عمدتاً 9 پین مرد هستند. با این حال، جایی یک پورت COM 25 پین وجود دارد که تقریباً همان پورت LPT است، اما یک پورت نر است، در حالی که پورت LPT ماده است.نیاز به درک نکات اصلی در مورد مودم های تهی و پین اوت RS232.شکل 1 دو نوع پورت COM را نشان می دهد و جدول 1 عملکرد پورت ها را خلاصه می کند.بیشتر مورد توجه در پین های پورت COM، 3 پین 0 ولت SG (زمین سیگنال)، پین های فرستنده داده TxD و پین های دریافت داده RxD است. اینها سه پین اصلی برای ارتباط RS232 و سازگار با UART در AVR هستند. در صورتی که کاربر اطلاعاتی در مورد سازمان ثبت رایانه شخصی داشته باشد، می‌توان از پین‌های باقی‌مانده نیز استفاده کرد. با این حال، در بیشتر موارد، تنها از سه پین استفاده می شود.همانطور که در AVR5-UART بیان شد، استانداردهای RS232 و UART عموماً از نظر انتقال، نرخ باود یکسان هستند، اما از نظر ولتاژ و قطبیت متفاوت هستند. به مثال مقایسه در شکل 2 مراجعه کنید.در استاندارد UART (در AVR)، سطح 1 مربوط به ولتاژ بالا (5V، TTL) است در حالی که برای RS232 سطح 1 مربوط به ولتاژ پایین (ولتاژ منفی، شاید 12-V) است. واضح است که نیاز به یک &#34;مبدل&#34; بین این دو وجود دارد.خوشبختانه نیازی نیست خودمان این پل را طراحی کنیم زیرا آی سی های اختصاصی وجود دارد. MAX232 یکی از پر استفاده ترین آی سی های سوئیچ UART-RS232 است. البته، شما می توانید یک مدار ساده فقط با چند جزء مانند خازن، مقاومت، دیود و ترانزیستور ایجاد کنید اما پایداری آن تضمین نمی شود.شکل 3 نحوه استفاده از آی سی Max232 را برای اتصال بین UART در AVR و پورت COM PC نشان می دهد.مدار فوق فقط اثر تغییر سطح ولتاژ بین RS232 و UART را دارد. این حالت ارتباط این استانداردها را تغییر نمی دهد و بنابراین برنامه نویسی در رایانه شخصی و AVR جایگزین نیست، تغییر کنید. در واقع Max232 دارای دو ترانسوم است.در شکل 3، ما فقط از فرستنده گیرنده 1 استفاده می کنیم. پین TxD (پین 3) پورت COM متصل به R1IN (دریافت 1 ورودی) Max232 مطابق با خروجی R1OUT (دریافت) 1 است) باید به گیرنده RX متصل شود. AVR برای T1IN و T1OUT هم همینطور. مقدار خازن های 10uF نسبتا استاندارد است، اما زمانی که خازن را با 1uF جایگزین می کنید، مدار فعال باقی می ماند اما فاصله انتقال (کانکتور کابین) کوتاه تر خواهد بود (اگر زیاد طولانی باشد خطای ارتباطی ایجاد می کند). مقاومت های شکل 3 فقط برای محافظت از پورت های COM و IC ها کار می کنند، بنابراین ممکن است نیازی به استفاده از این مقاومت ها بدون تأثیر بر عملکرد مدار نباشد. Vcc و GND منابع مدارهای AVR هستند.2. پورت COM مجازی برای شبیه سازی ایجاد کنیدبرای برقراری ارتباط بین AVR و رایانه شخصی از طریق پورت COM، بدیهی است که به یک پورت COM نیاز دارید، علاوه بر این باید یک مدار AVR ایجاد کنید و Max232 را بریج کنید. متأسفانه همه رایانه ها این پورت را ندارند. اگر فقط می خواهید یاد بگیرید که چگونه با AVR-PC ارتباط برقرار کنید یا فقط می خواهید یک الگوریتم خاص را آزمایش کنید، شاید شبیه سازی راه حل ترجیح داده شود. به منظور شبیه سازی ارتباطات RS232، Proteus دوباره برای شبیه سازی انتقال داده ها با پورت های COM مفید است.بنابراین مشکل این است که چگونه می توان پورت های COM مجازی را روی کامپیوتر ایجاد کرد و آنها را به یکدیگر متصل کرد تا شبیه سازی های ارتباطی انجام شود. به دلیل ماهیت پورت COM فقط یک بار &#34;باز&#34;   (باز) است، به این معنی که این دو نرم افزار نمی توانند یک پورت را باز کنند.ایده ما ایجاد دو پورت COM مجازی است که با هم &#34;تقاطع&#34; شده اند (مانند COM2 و COM3). در خروجی پروتئوس UART به COM2 متصل است. در نرم افزار PC (مثلا HyperTerminal) به COM3 متصل می شویم. به این ترتیب ما توانستیم بین AVR (مدل پروتئوس) و کامپیوتر (نرم افزار HyperTerminal) ارتباط برقرار کنیم.نرم افزارهای خوبی وجود دارد که می تواند پورت های COM مجازی و اتصالات مجازی بین آنها را دقیقاً مطابق خواسته ما ایجاد کند. در این بخش به معرفی نرم افزار Electronic Team (Virtual Serial Port Driver) می پردازم.درایو پورت سریال مجازی (VSPD) پورت های سریال مجازی را شبیه سازی می کند و آنها را به صورت جفت از طریق کابل مودم تهی مجازی متصل می کند. برنامه های موجود در هر دو انتهای جفت قادر به تبادل داده ها به گونه ای خواهند بود که هر آنچه در پورت اول نوشته شده است در پورت دوم و به عقب ظاهر شود.رابط VSPD همانطور که در شکل 4 نشان داده شده استدر تب &#34;Manager ports&#34; نرم افزار به طور خودکار پیشنهاد می کند که می توان چند پورت COM مجازی ایجاد کرد، می توانید دوباره آنها را انتخاب کنید و روی &#34;Add pair&#34; کلیک کنید تا این دو پورت COM ایجاد شود. پورت COM مجازی ایجاد شده توسط VSPD در &#34;لیست دستگاه&#34; ویندوز ظاهر می شود و هنگامی که کاربر نرم افزار VSPD را خاموش می کند از بین نمی رود. مدیریت دستگاه ویندوز را اجرا کنید. در بخش Ports (COM &amp; LPT) پورت های COM مجازی ایجاد شده را مشاهده خواهید کرد (به مثال در شکل 5 مراجعه کنید).3. از کتابخانه صادرات استاندارد stdio.h در WinAVR استفاده کنیدهر کسی که تا به حال زبان برنامه نویسی C را یاد گرفته باشد، اولین برنامه &#34;سلام جهان&#34; خود را فراموش نخواهد کرد:این برنامه به سادگی کار تایپ &#34;hello, world&#34; را روی صفحه انجام می دهد. چاپ نامه توسط دستور &#34;printf&#34; در خط 3 انجام می شود. دستور printf در کتابخانه stdio به نام کتابخانه ورودی / خروجی استاندارد است. دستور printf در stdio فقط برای چاپ روی صفحه نیست، بلکه می تواند در هر دستگاه خروجی چاپ کند، حتی یک فایل را روی هارد کامپیوتر چاپ کند.برای AVR، اگر از کامپایلر استفاده می‌کنید وقتی printf را فراخوانی می‌کنید، رشته در ماژول UART چاپ می‌شود (خروجی می‌شود) (البته ابتدا باید رجیسترهای UART را نصب کنید تا UART فعال شود).خود CodevisionAVR UART را به عنوان دستگاه ورودی/خروجی پیش‌فرض برای دستورات موجود در کتابخانه stdio (printf، scanf ...) می‌داند. با این حال، با WinAVR (avr-gcc) همه چیز متفاوت است. برای استفاده از ورودی و خروجی استاندارد باید یک دستگاه ورودی و یک تابع ورودی &#34;پایه&#34; را اعلام کنیم. تابع اصلی تابعی است که توسط کاربر تعریف شده است و وظیفه آن صادر کردن (یا وارد کردن) یک کاراکتر به یک دستگاه ورودی است.به عنوان مثال، در ارتباط AVR5 - UART یک تابع &#34;uart_char_tx&#34; کاراکترهای خروجی به UART را به صورت زیر تعریف می کنیم:یا در TextLCD به تابع &#34;putChar_LCD&#34; نگاه می کنیم تا یک کاراکتر را به ال سی دی به صورت زیر تولید کنیم:هر دو &#34;uart_char_tx&#34; و &#34;putChar_LCD&#34; به عنوان مثال بالا می توانند به عنوان یک تابع واردات &#34;پایه&#34; برای توابعی مانند printf ... در کتابخانه های استاندارد صادرات sdtio استفاده شوند. با فرض استفاده از تابع &#34;uart_char_tx&#34;، هنگام فراخوانی تابع printf، رشته به UART صادر می شود.در مقابل، اگر تابع &#34;putChar_LCD&#34; به عنوان تابع پایه استفاده شود، تابع stdio printf رشته داده را به LCD خروجی می دهد. با استفاده از این روش، مترجم avr-gcc به ما امکان دسترسی انعطاف‌پذیرتر به کتابخانه stdio را می‌دهد، می‌توانید از توابع stdio برای صادرات/وارد کردن داده‌ها به هر دستگاهی مانند ترمینال UART، TextLCD، LCD گرافیکی یا حتی SD، کارت MMC استفاده کنید. شما تابع ورودی &#34;پایه&#34; را تعریف می کنید.برای نشان دادن نحوه استفاده از توابع در کتابخانه stdio، نمونه ای از خروجی داده ها به TextLCD و uart با استفاده از printf stdio را نشان می دهم. شبیه سازی مدار برای این مثال در شکل 6 در زیر نشان داده شده است.تمام داده های نمایش داده شده بر روی LCD و ترمینال uart در شکل 6 از طریق توابع printf و fprintf انجام می شود. همچنین در این مثال کاربر می تواند یک کاراکتر از صفحه کلید و کد اسکی وارد کند. کلید روی ترمینال چاپ می شود. کد نشان داده شده در List1.برای استفاده از توابع در کتابخانه خروجی استاندارد، باید فایل هدر کتابخانه را مانند خط 4 &#34;#include&#34; اضافه کنیم.توجه داشته باشید که هنگام استفاده از avr-gcc، توابع مربوط به avr -libc در زیر شاخه &#34;/ avr /&#34; دایرکتوری include قرار دارند.به عنوان مثال، هدر io.h یا interrupt.h حاوی توابع ویژه ای برای avr است، هنگام پیوست کردن این فایل ها چیزی مانند: &#34;#include&#34; را مشخص می کنیم ... با این حال، زبان استاندارد C (مانند stdio.h، math.h) ، ...) مستقیماً در دایرکتوری include قرار دارد، هنگام پیوست کردن این فایل ها باید مستقیماً مانند خط کد 4 نوشته شوند. همچنین به دلیل اینکه در این مثال از LCD استفاده شده است، باید کتابخانه myLCD.h را مانند خط 5 کپی و اضافه کنید ( بررسی TextLCD).همانطور که در بالا توضیح داده شد، برای استفاده از توابع در stdio به توابع اولیه ورودی/خروجی نیاز داریم. خطوط از 7 تا 11 توابع خروجی uart با نام &#34;uart_char_tx&#34; هستند که به عنوان تابع پایه برای توابع خروجی stdio استفاده خواهند شد. تابع &#34;uart_char_tx&#34; در درس UART مورد بحث قرار گرفت، جایی که یک تغییر کوچک در 8 خط &#34;if (chr == &#39;\ n&#39;) uart_char_tx (&#39;\ r&#39;)&#34; ایجاد شد، این خط به این معنی است که وقتی کاربر می خواهد کاراکتر &#34;\ n&#34; را خروجی کند، تابع &#34;uart_char_tx&#34; کاراکتر &#34;\r&#34; را خروجی می دهد.بنابراین اگر در انتهای جمله با یک &#39;\ n&#39; (با کد ASCII 10، به نام Line Feed - LF) در انتهای جمله برخورد کردید، ترکیبی از &#39;\ r&#39; + &#39;\ n&#39; (کد &#39;\ r&#39; = 13 نامیده می شود. Carriage Return - CR) به جریان ارسال خواهد شد. برای درک بهتر این موضوع، با Carriage Return Line Feed (CRLF) در ویندوز بیشتر آشنا خواهید شد.دو خط کد 13 و 14 هنگام استفاده از کتابخانه stdio بسیار مهم هستند. منظور از این دو خط ایجاد دو فایل مجازی (همچنین به عنوان جریان) برای صادرات داده است. ما خط 14 را بررسی می کنیم: یک جریان برای UART ایجاد کنید.static FILE uartstd = FDEV_SETUP_STREAM (uart_char_tx، NULL، _FDEV_SETUP_WRITE)؛ما یک متغیر به نام uartstd (با نام کاربری self-named) ایجاد می کنیم که از نوع FILE (نوع دستگاه مجازی) است، سپس از ماکرو &#34;FDEV_SETUP_STREAM&#34; برای مقداردهی اولیه و تنظیم پارامترها برای uartstd استفاده می کنیم. این ماکرو عملکرد باز کردن fdevopen و اختصاص &#34;ابزار&#34; برای وارد کردن به دستگاه را دارد.#define FDEV_SETUP_STREAM (قرار دادن، دریافت، rwflag)پارامتر پیوست شده &#34;FDEV_SETUP_STREAM&#34; شامل یک تابع اصلی به نام &#34;put&#34;، یک تابع اصلی به نام &#34;get&#34; و یک پرچم است که عملکرد خروجی یا ورودی دستگاه در حال باز شدن را نشان می دهد. به طور خاص، در خط 13، متغیر uartstd یک &#34;دستگاه مجازی&#34; است که برای خروجی داده ها استفاده می شود (به دلیل پارامتر _FDEV_SETUP_WRITE).ابزار خروجی uartstd تابع &#34;uart_char_tx&#34; است که در بالا ایجاد کردیم. هیچ تابعی برای دریافت داده از uartstd (پارامتر get = NULL) وجود ندارد. شما می توانید این را تصور کنید: متغیر uartstd یک ورق کاغذ است، تابع &#34;uart_char_tx&#34; یک &#34;مهر&#34; است که امکان چاپ یک کاراکتر را بر روی یک صفحه کاغذ uartstd می دهد. &#34;uart_char_tx&#34; را به usrtstd اختصاص می دهیم، سپس تمام چاپ روی کاغذ uartstd توسط &#34;uart_char_tx&#34; انجام می شود. بنابراین تابع &#34;uart_char_tx&#34; تابع پایه نامیده می شود.به طور مشابه، در خط 13 یک &#34;کاغذ&#34; دیگر به نام lcdstd ایجاد می کنیم و تابع اصلی آن از تابع &#34;putChar_LCD&#34; خارج می شود که قبلاً در کتابخانه myLCD.h تعریف شده است.خطوط موجود در برنامه اصلی از خطوط 17 تا 25 UART و TextLCD را شروع می کنند، می توانید برای درک بیشتر مقالات مرتبط را مرور کنید. پس از راه اندازی، UART و LCD برای صادرات داده آماده هستند. اکنون می توانیم از توابع موجود در کتابخانه stdio مانند printf یا sprint ... برای صادرات داده ها استفاده کنیم. شکل 6 را خواهید دید زیرا من از آن برای مقایسه با خطوط کد زیر استفاده خواهم کرد. خط 27 &#34;printf (&#34;در lan 1&#34;)، هدف چاپ رشته&#34; در lan 1&#34; روی LCD با استفاده از تابع printf است. اما همانطور که در شکل 6 نشان داده شده است، شما این رشته را مشاهده نمی کنید.اکنون به خط 28 &#34;fprintf (&amp; lcdstd, www.eltima.com&#34;)&#34; نگاه کنید و دوباره به شکل 6 نگاه کنید، این بار رشته &#34;www.eltima.com&#34; را روی LCD ظاهر کرده اید، با fprintf موفق شده است. عملکرد. تابع fprintf تابعی است که داده ها را به یک دستگاه مجازی خروجی می دهد، که در آن پارامتر اول تابع به دستگاه اشاره می کند و پارامتر دوم رشته داده برای چاپ است. در این مورد، ما از fprintf برای صادرات رشته «www.eltima.com» به ماشین مجازی lcdstd استفاده کردیم و موفق شدیم. در مورد تابع printf در خط 27 چطور؟ بیایید به خطوط 30 تا 32 نگاه کنیم. خط 30 ما یک بار دیگر از تابع printf &#34;printf (&#34; In lan 3 &#34;)&#34; برای چاپ &#34;lan 3&#34; روی LCD استفاده می کنیم اما هنوز موفق نبوده است (ال سی دی را در شکل 6 ببینید). . در خط 31 ما &#34;stdout = &amp; lcdstd&#34; را اختصاص می دهیم که در آن stdout یک متغیر (در واقع یک جریان یا دستگاه مجازی) از زبان C است که دستگاه پیش فرض را برای ورود داده ها تعریف می کند. هنگام اختصاص دادن stdout به lcdstd به عنوان خط 31، اعلام می کنیم که LCD دستگاه ورودی پیش فرض است. بنابراین، در خط 32 ما printf را &#34;printf (&#34; Lan 4:% i &#34;, x)&#34; می نامیم، موفق بودیم.این بار، روی LCD نگاه کنید، خط &#34;Lan Lan 4: 8205&#34; ظاهر می شود. در اینجا 8205 مقدار متغیر x در عبارت خط 32 است. به طور خلاصه، تابع fprintf اجازه چاپ مستقیم به یک دستگاه مجازی مشخص را می دهد در حالی که با استفاده از تابع printf باید دستگاه ورودی Precedes را برای متغیر stdout اختصاص دهیم. به کد خطوط 34 تا 37 و سه خط اول در ترمینال در شکل 6 نگاه کنید، که احتمالاً خودتان می دانید.در نهایت، سرور وقفه داده UART در خطوط کد 41 تا 44 قرار دارد. در این مثال، ما به سادگی خط &#34;Ma ASCII:&#34; را با مقدار دریافتی از &#34;UART موجود در ثبات UDR موجود است: &#34;fprintf (&amp; uartstd اجرا می کنیم. &#34;Ma ASCII:% i \ n &#34;، UDR)&#34;.برای درک کامل کتابخانه stdio در WinAVR، باید مستندات &#34;avr-libc Manual&#34;، بخش امکانات استاندارد IO را بخوانید.4. برنامه نویسی با پورت COM با استفاده از Visual Basic و Visual C ++در بسیاری از موارد، نیازمندی‌های ارتباطی به پیچیدگی بالاتری مانند ذخیره‌سازی داده یا نمودارهای متغیر نیاز دارند، بنابراین کاربران باید برنامه‌های خود را خودشان بنویسند. این آموزش به شما نشان می دهد که چگونه برنامه هایی را روی رایانه بنویسید تا داده ها را از پورت COM در Visual Basic و Visual C ++ 6.0 ارسال و دریافت کنید. توجه داشته باشید، هدف این مقاله بر روی AVR است، بنابراین برنامه ای که در ویندوز نوشته شده است، یک راه ساده برای درک اصل برای شما ارائه کردم. برای توسعه برنامه های پیچیده تر، خوانندگان باید خود را با دانش برنامه نویسی ویندوز مجهز کنند. در تمام آموزش‌های زیر فرض می‌کنم کمترین خوانندگان می‌دانند چگونه یک پروژه را در Visual Basic یا / و Visual C ++ ایجاد کنند.1. یک برنامه پورت COM با استفاده از ویژوال بیسیک 6.0 بنویسیداز زمان نسخه های بعدی ویندوز 2000، ارتباط با پورت های کامپیوتر سنتی، مانند پورت های LPT، در ویندوز نسبتا دشوار بود. با این حال، با پورت های COM، خوشبختانه مایکروسافت ابزاری (در واقع یک کنترل) به نام &#34;کنترل ارتباطات مایکروسافت&#34; یا به اختصار MSComm ارائه می دهد. MSComm در نرم افزارهای محبوب برنامه نویسی MS مانند Visual Basic یا Visual C ++ به عنوان یک &#34;کنترل&#34; ظاهر شده است. به عنوان یک &#34;کنترل کننده&#34; طراحی شده برای پورت های COM، MSComm شامل تمام ابزارهای مورد نیاز برای برقراری ارتباط با این پورت است، وظیفه برنامه نویس صرفاً اعلام و استفاده است. برای نشان دادن نحوه استفاده از MSComm در ویژوال بیسیک، دستورالعمل های زیر را دنبال کنید.اVisual Basic 6 را اجرا کنید، به منوی &#34;File / New Project&#34; بروید و یک &#34;Standard EXE&#34; ایجاد کنید. شما یک پروژه با نام &#34;Project1&#34; را با یک کادر محاوره ای پس زمینه به نام Form1 خواهید دید. شما می توانید هر پروژه و فرم اصلی را نام ببرید. از نوار ابزار Toolbox، روی کنترل &#34;textbox&#34; کلیک کنید و دو جعبه متن اصلی به نام‌های txtOuput و txtInput را رسم کنید (نام جعبه‌های متن را در پنجره Properties در سمت راست پایین سمت راست تغییر دهید). با txtOutput، پارامتر Multiple را روی True و ScrollBars را روی &#34;3 - هر دو&#34;سپس کنترل MSComm را در فرم اصلی قرار دهید. به طور پیش فرض، کنترل MSComm در جعبه ابزار ویژوال بیسیک موجود نیست، قبل از استفاده باید آن را به جعبه ابزار اضافه کنیم. برای افزودن MSComm به جعبه ابزار، منوی &#34;Project / Components&#34; را انتخاب کنید. یک کادر محاوره ای به نام Components را خواهید دید. همانطور که در تصویر نشان داده شده است &#34;Microsoft Comm Control 6.0&#34; را پیدا کرده و روی آن کلیک کنید و روی OK کلیک کنید. اکنون، در جعبه ابزار VB، نماد MSComm ظاهر می شود. روی این آیکون کلیک کنید و یک شی MSComm روی فرم اصلی بکشید. نام پیش فرض این شی MSComm1 است.یک کد بنویسید:هدف از این مثال به شرح زیر است: داده های دریافت شده از پورت COM در جعبه متن txtOutput نمایش داده می شود و زمانی که کاربر تایپ 1 کاراکتر در کاراکتر txtInput روی پورت COM منتقل می شود.</description><category>احمد کلاته</category><author>احمد کلاته</author><pubDate>Sat, 23 Jul 2022 18:18:21 +0430</pubDate></item><item><title>چرا باید از کرک درایور پورت سریال مجازی خودداری کنید؟</title><link>https://virgool.ir/@m_32163973/چرا-باید-از-کرک-درایور-پورت-سریال-مجازی-خودداری-کنید-wga0n7a5rpdb</link><description>مقدار زیادی از نرم افزارهای نصب شده در سراسر جهان غیرقانونی است. این واقعیتی است که قابل انکار نیست و همه ما باید به آن توجه کنیم. دزدی نرم افزاری بر توسعه دهندگانی که ثمره کار سختشان را دزدیده اند، تأثیر منفی می گذارد. همچنین پیامدهای منفی روی شخصی که نرم افزار را دزدیده است دارد. هنگام دزدی نرم افزاری باید عواقب واقعی را در نظر گرفت.به خواندن ادامه دهید تا دریابید که چگونه می توانید برای نسخه مجاز Virtual Serial Port Driver 9.0 به جای دانلود نرم افزار کرک شده Virtual Serial Port Driver 9.0 تخفیف دریافت کنید. پشتیبانی فنی سطح بالا و آخرین به روز رسانی ها برای کاربران دارای مجوز در دسترس است.در اینجا خطرات اصلی استفاده از نرم افزارهای غیرقانونی وجود دارد:✔ تهدید بدافزارسایت هایی که نرم افزارهای کرک شده را در آنها پیدا می کنید اغلب با بدافزار در حال خزیدن هستند. احتمال بسیار خوبی وجود دارد که همراه با بارگیری که شروع می کنید، تعدادی کد اضافی به شکل ویروس بیاید. این چیز ساده ای نیست، زیرا این ویروس ها می توانند بسیار مزاحم باشند. آنها می توانند عملکرد دستگاه شما را کاهش دهند و در بسیاری از موارد سعی می کنند دستگاه شما را برای شماره کارت اعتباری، رمز عبور و سایر داده های شخصی حساس جستجو کنند.✔ عدم به روز رسانی نرم افزار و پشتیبانی مشترییکی دیگر از مشکلات رایج نرم افزارهای غیرقانونی این است که به طور ناگهانی کار نمی کند، اغلب پس از به روز رسانی منظم. اگر بخواهید در مورد کرک درایور پورت سریال مجازی کمک بگیرید، یک نماینده خدمات مشتری دوستانه در طرف دیگر تلفن پیدا نخواهید کرد. ممکن است با مسدود کردن به‌روزرسانی‌های خودکار، برای مدتی این مشکل را برطرف کنید. این کار شما را فرا می‌گیرد زیرا وصله‌ها و رفع‌های امنیتی دریافت نمی‌کنید و رایانه‌تان را در برابر نفوذ غیرمجاز آسیب‌پذیر می‌کند.✔ کپی، نصب یا فروش غیر قانونی نرم افزار بدون مجوز مناسبنقض قوانین کپی رایت دارای برخی عواقب حقوقی قابل توجه است. اگر با کرک درایور پورت سریال مجازی نرم افزار Electronic Team گرفتار شوید، ممکن است مشمول جریمه هایی باشید که بسیار بیشتر از قیمتی است که برای یک نسخه قانونی و دارای مجوز می پرداختید.قانون حق چاپ ایالات متحده{Title 17 U.S.C. بخش 101 و بعد، عنوان 18 U.S.C. بخش 2319}نقض حق چاپ ممکن است تا پنج سال زندان و 250000 دلار جریمه محکوم شود. متخلفان مکرر می توانند تا 10 سال زندانی شوند. همچنین متخلفان می توانند از نظر مدنی در قبال خسارات واقعی، سود از دست رفته یا خسارت قانونی تا سقف 150000 دلار در هر کار مسئول شناخته شوند. اگر بخواهید کرک Virtual Serial Port Driver 8.0 را دانلود کنید، این به معنی ریسک جدی است. یک گزینه بسیار بهتر و مطمئن تر، خرید نسخه مجاز درایور پورت سریال مجازی است. همراه با آرامش خاطر، به پشتیبانی فنی، به‌روزرسانی‌ها و اصلاحات محصول، و ارتقای برنامه‌ها به محض در دسترس شدن دسترسی خواهید داشت. این مطمئناً به دانلود کرک درایور پورت سریال مجازی ارجحیت دارد. هنگام خرید محصولی که توسط Electronic Team توسعه داده شده است، می‌توانید احساس امنیت کنید که برنامه یک تست کنترل کیفیت را پشت سر گذاشته است که تضمین می‌کند برنامه پایدار و عاری از بدافزار است. با توجه به اینکه از نسخه غیرقانونی درایور پورت سریال مجازی استفاده می کنید</description><category>احمد کلاته</category><author>احمد کلاته</author><pubDate>Sat, 23 Jul 2022 13:45:17 +0430</pubDate></item><item><title>رابط ارتباطی سریال پین اوت RS232.</title><link>https://virgool.ir/@m_32163973/رابط-ارتباطی-سریال-پین-اوت-rs232-yvx1d3nkdi5x</link><description>پروتکل RS232 چیست؟پروتکل RS232 یک رابط سریال محبوب است که برای اتصال کامپیوترها به دستگاه های جانبی مانند مودم استفاده می شود. ما نگاهی به پین‌آت‌های پورت سریال مورد استفاده برای پیاده‌سازی RS232 و همچنین برخی اطلاعات مرجع اضافی در مورد پروتکل خواهیم انداخت.پروتکل RS232 داده های سیم ها را با سطوح سیگنال متفاوت با استاندارد 5 ولت به منظور به حداقل رساندن تداخل سیگنال ارسال می کند. انتقال ناهمزمان را با نرخ ثابتی انجام می دهد که با سطح سیگنال پالس شروع همگام است. فاصله تا 20 متر محدودیت انتقال داده قابل اعتماد با استفاده از رابط RS232 است.مخفف RS232 چیست؟استانداردهای انتقال داده توسط انجمن صنایع الکترونیک (EIA) توسعه یافته است. پیشوند RS یک استاندارد توصیه شده را نشان می دهد و همه استانداردهای EIA با آن کاراکترها شروع می شوند. مشخصات رسمی RS232 این است که رابطی است که از تبادل داده های سریالی باینری برای برقراری ارتباط بین دستگاه های DTE و DCE استفاده می کند. DTE مخفف Data Terminal Equipment است و DCE نشان دهنده Data Communication Equipment است. مثال اصلی این دو نوع تجهیزات، کامپیوتر را به عنوان یک دستگاه DTE با مودمی که نقش DCE را پر می کند، تعریف می کند.ارتباط سریال با انتقال داده سریال بین DTE و DCE پیاده سازی می شود. به عنوان مثال، یک کامپیوتر (DTE) ممکن است داده های باینری &#34;11011101&#34; را به صورت سریال به مودم (DCE) ارسال کند و سپس با ارسال &#34;11010101&#34; به دستگاه DTE پاسخ دهد.پروتکل RS232 حالت عملکرد، استانداردهای الکتریکی، تعداد بیت ها و سطوح ولتاژ مورد استفاده در هنگام انتقال داده بین DTE و DCE را مشخص می کند.کانکتورهای سریالدستگاه های ارتباطی سریال از کانکتورهای 9 یا 25 پین نوع D برای اتصالات کابلی خود استفاده می کنند. آنها معمولاً به عنوان DB-9 یا DB-25 با تعداد مورد استفاده برای تمایز بین تعداد پین ها تعیین می شوند. نام سازنده های مختلف ممکن است جایگزین DB در مشخصات شود. دوشاخه ها شامل سوکت ها و پین ها هستند که هر پایه شماره گذاری و برچسب گذاری شده است. نمودار پین اوت سریال در زیر ارائه شده است.پروتکل RS232 از یک پورت سریال 9 پین استفاده می کند که می تواند کانکتورهای مرد یا زن داشته باشد. آخرین نسخه این پروتکل با نام RS232C شناخته می شود.RS232C ویژگی های RS232 را حفظ می کند اما از 25 پین به جای پین اوت سریال 9 پین استفاده می کند. چه از پین اوت سریال DB9 یا یک اتصال 25 پین استفاده شود، فقط سه عدد از پین ها برای اتصال دستگاه های ترمینال مورد نیاز است.پیکره بندی PINOUT:RS232 جریان ارتباط بین DTE و DCE را با استفاده از پین اوت های سریال از انواع DB9 یا DB25 مدیریت می کند. این کانکتورهای D-sub می‌توانند با پین‌های مادگی RS232 یا پین‌های رابط نر DB25 یا DB9 خاتمه پیدا کنند. هر پین در پین اوت کانکتور 9 یا 25 سریال عملکرد مجزای خود را دارد. همچنین می توانید پینوت RS485 را یاد بگیرید.استاندارد دیگری که مشخصاتی مشابه RS232  ارائه کرده است CCITT  می باشد.  در این بینش پژوهان آتی استاندارد V.24  مشخصات عملکردی و V.28   مشخصات مکانیکی وسیله را معرفی می‌کند بنابراین هر جا روی پورت وسیله ای V.24 قید شده باشد باز منظور همان RS-232  است.سیر تکاملی این استاندارد از RS232-C  تا RS232-F  است   که RS232-C   از پرکاربردترین آنها محسوب می‌شود و معمولاً آن را با نام RS232  به کار می‌برند.  است ابتدا انتقال جانبی مثل ترمینال ها و پرینتر ها استفاده می شد ولی امروزه برای ارتباط سریال بین تجهیزات مختلف به کار میرود</description><category>احمد کلاته</category><author>احمد کلاته</author><pubDate>Sat, 23 Jul 2022 13:37:44 +0430</pubDate></item></channel></rss>