پورت گربه در کامپیوتر چیست؟ پورت های یک کامپیوتر شخصی چیست؟ و آنها چه هستند؟ چگونه می توان پورت های USB را غیرفعال کرد وقتی کامپیوتر را خاموش می کنید

شرح رابط RS-232، فرمت اتصالات مورد استفاده و تخصیص خروجی ها، سیگنال ها، پروتکل تبادل اطلاعات.

توضیحات عمومی

رابط RS-232، کاملا به طور رسمی به نام "EIA / TIA-232-E" نامیده می شود، اما بهتر است به عنوان رابط "COM Port" شناخته شده، قبلا یکی از رایج ترین رابط ها بود تکنسین کامپیوتر. او هنوز هم ملاقات می کند کامپیوترهای رومیزیعلیرغم ظهور سرعت بیشتر و "هوشمند" رابط های مانند USB و Fireware. مزایای آن از نقطه نظر آماتورهای رادیویی می تواند به حداقل کم سرعت و سادگی اجرای پروتکل در دستگاه خانگی نسبت داده شود.

رابط فیزیکی توسط یکی از دو نوع اتصالات اجرا می شود: DB-9M یا DB-25M، دومی در رایانه های موجود در حال حاضر عملا یافت نمی شود.

انتصاب نتیجه 9 پین اتصال


9 پین DB-9M نوع پلاگین
شماره تماس پین
جهت سیگنال ها نسبت به میزبان (کامپیوتر) نشان داده شده است
مخاطب علامت جهت شرح
1 سی دی ورود بارگیری شناسایی شده است
2 RXD ورود داده های پذیرفته شده
3 TXD خروجی داده های منتقل شده
4 DTR. خروجی میزبان آماده است
5 gnd - سیم مشترک
6 dsr ورود دستگاه آماده است
7 RTS خروجی میزبان آماده برای انتقال است
8 CTS ورود دستگاه آماده دریافت است
9 ری ورود یک چالش یافت شد

انتصاب نتیجه 15 پین اتصال

مخاطب علامت جهت شرح
1 سپر - صفحه نمایش
2 TXD خروجی داده های منتقل شده
3 RXD ورود داده های پذیرفته شده
4 RTS خروجی میزبان آماده برای انتقال است
5 CTS ورود دستگاه آماده دریافت است
6 dsr ورود دستگاه آماده است
7 gnd - سیم مشترک
8 سی دی ورود بارگیری شناسایی شده است
9 - - ذخیره
10 - - ذخیره
11 - - استفاده نشده
12 SCD ورود حامل شناسایی شده است # 2
13 SCTS ورود دستگاه آماده برای پذیرش # 2
مخاطب علامت جهت شرح
14 STXD خروجی داده های منتقل شده # 2
15 trc ورود فرستنده
16 srxd ورود اطلاعات پذیرفته شده # 2
17 RCC ورود تاکید بر گیرنده
18 lloop خروجی حلقه محلی
19 srts خروجی میزبان آماده انتقال # 2 است
20 DTR. خروجی میزبان آماده است
21 rloop خروجی حلقه بیرونی
22 ری ورود یک چالش یافت شد
23 drd ورود سرعت داده ها تعیین می شود
24 trco خروجی فرستنده خارجی را بگیرید
25 تست ورود حالت تست

جدول نشان می دهد که رابط 25 پین با حضور یک کانال دریافتی کامل کامل (سیگنال های نشان داده شده "# 2")، و همچنین سیگنال های کنترل و کنترل متعدد را مشخص می کند. با این حال، اغلب، با وجود حضور در کامپیوتر "گسترده"، سیگنال های اضافی به سادگی به آن متصل نیست.

ویژگی های الکتریکی

سطح فرستنده منطقی: "0" - از +5 تا +15 ولت، "1" - از -5 تا -15 ولت.

سطح منطقی گیرنده: "0" - بالاتر از +3 ولت، "1" - زیر -3 ولت.

مقاومت ورودی گیرنده حداقل 3 کام.

این ویژگی ها توسط استاندارد به عنوان حداقل تعریف می شود، تضمین سازگاری دستگاه، با این حال، ویژگی های واقعی معمولا به طور قابل توجهی بهتر است، که اجازه می دهد، از یک طرف، برای تغذیه دستگاه های کم قدرت از پورت (به عنوان مثال، تعداد زیادی کابل داده های خانگی خانگی است طراحی شده برای تلفن های همراه)، و از سوی دیگر - برای ارسال به بندر بندر معکوس سطح TTL به جای سیگنال دو قطبی.

شرح سیگنال های اصلی رابط

سی دی - دستگاه این سیگنال را تنظیم می کند زمانی که آن را تشخیص حامل در سیگنال دریافت شده. به طور معمول، این سیگنال توسط مودم ها استفاده می شود، بنابراین میزبان را در کشف مودم کار در انتهای دیگر خط گزارش می دهد.

RXD - دریافت اطلاعات میزبان از دستگاه. شرح جزئیات در بخش "پروتکل تبادل اطلاعات" شرح داده شده است.

TXD - خط انتقال داده میزبان به دستگاه. شرح جزئیات در بخش "پروتکل تبادل اطلاعات" شرح داده شده است.

DTR. - میزبان این سیگنال را هنگام آماده سازی داده ها آماده می کند. در حقیقت، هنگامی که پورت برنامه ارتباطی را باز می کنید، سیگنال تنظیم می شود و همیشه در این حالت باقی می ماند تا پورت باز باشد.

dsr - دستگاه این سیگنال را تنظیم می کند زمانی که فعال و آماده است تا داده ها را با میزبان مبادله کند. این و سیگنال های قبلی (DTR) باید برای تبادل اطلاعات نصب شوند.

RTS - میزبان این سیگنال را قبل از شروع انتقال داده به دستگاه تنظیم می کند و همچنین آمادگی برای دریافت اطلاعات از دستگاه را نشان می دهد. هنگامی که کنترل سخت افزاری مبادله داده ها استفاده می شود استفاده می شود.

CTS - دستگاه این سیگنال را در پاسخ به نصب میزبان قبلی (RTS) تنظیم می کند زمانی که آماده است تا داده ها را دریافت کند (به عنوان مثال، زمانی که داده های میزبان قبلی ارسال داده ها به خط منتقل می شود یا یک فضای آزاد در میان می باشد بافر)

ری - دستگاه (معمولا مودم) این سیگنال را تنظیم می کند هنگام دریافت تماس از سیستم از راه دور، به عنوان مثال، هنگام دریافت تماس تلفنیاگر مودم پیکربندی شده برای دریافت تماس ها باشد.

پروتکل تبادل اطلاعات

پروتکل RS-232 دو روش مدیریت داده ها وجود دارد: سخت افزار و نرم افزار، و همچنین دو حالت انتقال: همزمان و همزمان. پروتکل به شما امکان می دهد از هر یک از روش های مدیریت همراه با هر حالت انتقال استفاده کنید. کار بدون کنترل جریان نیز مجاز است، که نشان می دهد آمادگی مداوم میزبان و دستگاه برای دریافت اطلاعات زمانی که اتصال تنظیم شده است (DTR و سیگنال های DSR نصب شده).

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

روش مدیریت نرم افزار این انتقال میزبان نمادهای توقف ویژه (نماد با کد 0x13، به نام Xoff) و تمدید (نماد با کد 0x11، به نام Xon) انتقال است. هنگام دریافت این شخصیت ها، حزب انتقال باید انتقال را متوقف کند یا آن را از سر بگیرد (اگر اطلاعاتی برای انتقال وجود دارد). با این حال، این روش از لحاظ پیاده سازی تجهیزات ساده تر است، با این حال، واکنش کندتر را فراهم می کند و بر این اساس، نیاز به اعلان فرستنده فرستنده زمانی که فضای آزاد در بافر دریافت شده به حد مشخصی کاهش می یابد.

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

حالت انتقال آسنکرون این این است که هر بایت داده (و کنترل زوج، در صورت حضور آن)، "تبدیل" یک دنباله هماهنگ از یک صفر شروع و یک یا چند بیت تک تک. نمودار جریان داده ها در حالت آسنکرون در شکل مشخص شده است.

یکی از الگوریتم های احتمالی گیرنده ذیل:

  1. انتظار می رود سطح "0" سیگنال پذیرش (RXD در مورد میزبان، TXD در مورد دستگاه).
  2. شمارش نیمی از مدت باتری و بررسی کنید که سطح سیگنال هنوز "0" است
  3. تعداد بیت کامل و سطح سیگنال فعلی را به دسته اطلاعات جوانتر ارسال کنید (بیت 0)
  4. آیتم قبلی را برای تمام بیت های داده دیگر تکرار کنید
  5. شمارش طول مدت کامل و سطح سیگنال فعلی را برای استفاده از صحت پذیرش پذیرش با استفاده از کنترل زوج (نگاه کنید به زیر)
  6. مدت زمان کامل را فشار دهید و اطمینان حاصل کنید که سطح فعلی سیگنال "1".

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

اگر چه رابط هایی مانند اترنت، فایروایر و USB، همه داده ها را به عنوان یک جریان متوالی ارسال می کنند، اصطلاح "پورت سریال" به طور معمول شناسایی می شود سخت افزار، بیشتر یا کمتر سازگار با استاندارد RS-232، در نظر گرفته شده برای ارتباط با یک مودم یا با یک لینک ارتباطی مشابه.

رایانه های مدرن بدون پورت سریال ممکن است به مبدل ها با یک رابط سریال نیاز داشته باشند تا اطمینان حاصل شود سازگاری با دستگاه های سریال RS-232. پورت های سریال هنوز در برنامه های کاربردی مانند سیستم های اتوماسیون صنعتی، دستگاه های علمی، سیستم های فروش و برخی از کالاهای صنعتی و مصرفی استفاده می شود. رایانه های سرور می توانند از یک پورت سریال به عنوان یک کنسول مدیریت یا تشخیص استفاده کنند. تجهیزات شبکه (به عنوان مثال، روترها و سوئیچ ها) اغلب از کنسول سریال برای پیکربندی استفاده می کنند. پورت های سریال هنوز در این مناطق استفاده می شود، زیرا آنها ساده، ارزان هستند و توابع کنسول آنها بسیار استاندارد و گسترده هستند.

پورت پورت پورت (RS232)

تعداد دوم پورت COM، 25 پین قدیمی اتصال وجود دارد و جایگزین اتصال 9 پین جدیدتر آن شده است.

در زیر یک نمودار استاندارد استاندارد استاندارد 9 پین RS232 با اتصالات است، این نوع اتصال نیز اتصال DB9 نامیده می شود.

  1. تشخیص حامل (DCD).
  2. اطلاعات به دست آوردن (RXD).
  3. انتقال داده (TXD).
  4. آمادگی برای مبادله از گیرنده (DTR).
  5. زمین (GND).
  6. آمادگی مبادله از منبع (DSR).
  7. درخواست انتقال (RTS).
  8. آمادگی انتقال (CTS).
  9. سیگنال تماس (RI).

RJ-45 به DB-9 اطلاعات در مورد خروجی آداپتور پورت پیوسته برای سوئیچ

پورت کنسول رابط سریال RS-232 است که از اتصال RJ-45 برای اتصال به دستگاه کنترل مانند یک کامپیوتر یا لپ تاپ استفاده می کند. اگر پین پین DB-9 در لپ تاپ یا کامپیوتر شما وجود نداشته باشد، شما می خواهید یک لپ تاپ یا کامپیوتر را به سوئیچ وصل کنید، از ترکیب آداپتور RJ-45 و DB-9 استفاده کنید.

DB-9RJ-45.
اطلاعات به دست آوردن2 3
انتقال داده3 6
آمادگی تبادل4 7
زمین5 5
زمین5 4
آمادگی تبادل6 2
درخواست انتقال7 8
آمادگی برای انتقال8 1

رنگ های سیم:

1 سیاه
2 قهوه ای
3 قرمز
4 نارنجی
5 زرد
6 سبز
7 آبی
8 خاکستری (یا سفید)

گاهی اوقات شما باید کار ارتباطی را حل کنید دستگاه الکترونیکی با یک رایانه، آیا این به سادگی داده ها یا کنترل از راه دور را مبادله می کند. این مقاله توضیح می دهد که چگونه این را می توان با استفاده از یک پورت سریال اجرا کرد. مزیت اصلی آن این نرم افزار استاندارد است رابط ویندوز (API) به شما اجازه می دهد تا به طور مستقیم کنترل خطوط خروجی را کنترل کنید، کنترل مستقیم آنها را کنترل کنید و از انتظار یک رویداد خاص مربوط به پورت COM استفاده کنید. همچنین، استاندارد RS-232 که پورت COM ساخته شده است، اجازه می دهد تا شما را به اتصال و خاموش کردن کابل در طول عملیات دستگاه (پلاگین داغ).

شرح

پورت COM (پورت سریال) - رابط دو طرفه انتقال داده ها در یک فرم متوالی (بیت فراتر از) از طریق پروتکل RS-232. این یک پروتکل نسبتا رایج است که برای برقراری ارتباط یک دستگاه (به عنوان مثال، یک کامپیوتر) با سایر سیمهای تا 30 متر استفاده می شود. سیگنال های منطقی در اینجا از استاندارد متفاوت هستند: سطح واحد منطقی از +5 تا 15V است، سطح صفر منطقی از -5 تا -15V است که نیاز به تحولات اضافی مدار دارد، اما ایمنی خوب را فراهم می کند.

یک اتصال 9 پین (DB-9M) را در نظر بگیرید. زیر این است که pinout آن است:

خروجی № نام شخصیت سیگنال علامت
1 DCD ورودی تشخیص داده ها
2 RXD خروجی انتقال داده ها
3 TXD ورودی دریافت داده ها
4 DTR. خروجی ترمینال داده آماده است
5 gnd - زمین
6 dsr ورودی داده ها آماده شده است
7 RTS خروجی درخواست ارسال
8 CTS ورودی پاک کردن برای ارسال
9 ری ورودی نشانگر حلقه

بیشتر از همه، ما به پین \u200b\u200bها 2 (انتقال داده)، 3 (پذیرش داده) و 5 (زمین) علاقه مند خواهیم شد. این حداقل مجموعه ای برای امکان وسایل دو طرفه است.

شروع جزئیات در توضیحات پروتکل نخواهد بود. برای این وجود دارد GOST و مانند آن. بنابراین، ما بیشتر خواهیم رفت و بیایید در مورد چگونگی مدیریت این جانور صحبت کنیم.

کاربرد

همانطور که قبلا ذکر شد، سطوح RS-232 از سطح استاندارد TTL متفاوت است. بنابراین، ما باید به نوعی تبدیل مقادیر ولتاژ تبدیل شود. کسانی که. 5V از + 15V و 0V از -15V (و بالعکس). یکی از راه ها (و احتمالا، ساده ترین) - استفاده از microcircuit ویژه Max232. آسان است درک کنید و در عین حال می توانید دو سیگنال منطقی را تبدیل کنید.

در زیر طرح ورود آن است:


من فکر می کنم هیچ مشکلی وجود ندارد. این یکی از استفاده از این تراشه است: انتقال داده از یک میکروکنترلر بر روی یک کامپیوتر و بالعکس. سیگنال منتقل شده بر روی پاها قرار می گیرد ایکس.در یک طرف و در R ایکس.از سوی دیگر. سیگنال های ورودی از t حذف می شوند ایکس.خارج و ر. ایکس.به ترتیب، به ترتیب.

برنامه نويسي

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

در زیر آدرس های پورت COM است که ما باید کار کنیم:

نام پورت نشانی IRQ
com 1 3f8h 4
com 2 2f8h 3
com 3 3E8h 4
com 4 2e8h 3

آنها ممکن است متفاوت باشند. تنظیم مقادیر در تنظیمات BIOS. این آدرس های اساسی است. آنها همچنین به آدرس رجیستر مسئول کار پورت ها بستگی دارند:

نشانی ضربت زدن خواندن نوشتن اختصار نام ثبت نام
+ 0 =0 نوشتن فرستنده برگزاری بافر
=0 خواندن. گیرنده گیرنده
=1 خواندن / نوشتن Divisor Latch Low Byte
+ 1 =0 خواندن / نوشتن ایر وقفه ثبت نام را فعال کنید
=1 خواندن / نوشتن بایت Divisor Latch
+ 2 - خواندن. ایر ثبت شناسایی وقفه
- نوشتن FCR سیستم کنترل FIFO
+ 3 - خواندن / نوشتن lcr. خط کنترل خط
+ 4 - خواندن / نوشتن MCR مدارک کنترل مودم
+ 5 - خواندن. lsr ثبت نام وضعیت خط.
+ 6 - خواندن. msr ثبت نام حالت مودم
+ 7 - خواندن / نوشتن خراش ثبت نام

ستون اول آدرس ثبت نام مربوط به اساسی است. به عنوان مثال، برای COM1: آدرس ثبت نام LCR 3F8H + 3 \u003d 3FB خواهد بود. ستون دوم - DLAB (بیت دسترسی Divisor Latch) بیت، تعریف یک هدف دیگر برای همان ثبت نام .. به عنوان مثال این اجازه می دهد تا شما را به کار با 12 رجیستر با استفاده از تنها 8 آدرس. به عنوان مثال، اگر DLAB \u003d 1، سپس با اشاره به 3F8H، ما ارزش بایت جوانتر از فرکانس ژنراتور ساعت را تعیین می کنیم. اگر DLAB \u003d 0، سپس با اشاره به همان آدرس، بایت منتقل شده یا پذیرفته شده در این ثبت نام ثبت می شود.

ثبت نام صفر

این مطابق با رجیستر های انتقال / داده های انتقال داده ها و ضریب تقسیم فرکانس ژنراتور است. همانطور که در بالا ذکر شد، اگر DLAB \u003d 0، پس از آن ثبت نام برای ضبط داده های دریافت شده / انتقال استفاده می شود، اگر 1 باشد، مقدار بایت پایین تر از تقسیم فرکانس ژنراتور ساعت تنظیم شده است. نرخ انتقال داده ها بستگی به ارزش این فرکانس دارد. بایت دیجیتال بزرگتر به سلول حافظه بعدی نوشته شده است (به عنوان مثال، برای پورت COM1، 3F9h خواهد بود). در زیر وابستگی نرخ داده از ضریب تقسیم کننده است:

وقفه فعال کردن ثبت نام (IER)

اگر DLAB \u003d 0، آن را به عنوان ثبت نام ثبت نام از وقفه از یک آداپتور ناهمزمان استفاده می شود، اگر DLAB \u003d 1، پس از آن یک بایت ارشد از فرکانس ژنراتور ساعت را تعیین می کند.

ثبت نام شناسایی وقفه (IIR)

وقفه یک رویداد است که اجرای برنامه اصلی متوقف می شود و روش وقفه آغاز می شود. این ثبت نام نوع وقفه را تعیین می کند.

ثبت خط کنترل خط (LCR)

این ثبت کنترل است.

بیت 7 1 بیت دسترسی به Divisor Latch - سرعت تبادل اطلاعات
0 حالت مشترک (کنترل وقفه، انتقال پذیرش / داده)
بیت 6 تقلید خط شکستن (یک توالی از چند صفر را ارسال می کند)
بیت 3 - 5 بیت 5 بیت 4 بیت 3 انتخاب اعتقاد
ایکس. ایکس. 0 هیچ زوج نیست
0 0 1 زوج عجیب
0 1 1 حتی زوجین
1 0 1 پارتی بالا (چسبنده)
1 1 1 پارتی کم (چسبنده)
بیت 2 تعداد بیت های متوقف
0 1 توقف بیت
1 2 بیت را در 6/7 یا 8 بیت داده یا 1.5 بیت متوقف کنید با 5 بیت داده.
بیت 0 و 1 بیت 1 بیت 0 تعداد بیت های داده
0 0 5 بیت
0 1 6 بیت
1 0 7 بیت
1 1 8 بیت

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

متوقف کردن بیت به معنی پایان انتقال داده ها.

ثبت کنترل مودم (MCR)

مدارک کنترل مودم

بیت مقدار
0 خط DTR
1 خط RTS
2 خط خارج 1 (یدکی)
3 خط خارج 2 (یدکی)
4 شروع تشخیص هنگام ورود به یک آداپتور ناهمزمان، در خروجی آن بسته شده است.
5-7 برابر 0

ثبت وضعیت خط (LSR)

ثبت نام تعریف وضعیت خط.

بیت مقدار
0 داده ها به دست آمده و آماده خواندن، به صورت خودکار هنگام خواندن داده ها تنظیم مجدد می شوند.
1 خطای سرریز یک بایت داده جدید تصویب شد، و یکی از آنها هنوز توسط این برنامه خوانده نشده است. بایت قبلی از دست رفته است
2 آماده سازی خطا پس از خواندن وضعیت خط تنظیم می شود.
3 خطای هماهنگ سازی
4 یک درخواست برای قطع انتقال "شکستن" شناسایی شده است - یک ردیف طولانی از صفر.
5 ثبت نام انتقال فرستنده خالی است، شما می توانید یک بایت جدید برای انتقال را ضبط کنید.
6 ثبت نام انتقال فرستنده خالی است. این ثبت نام داده ها را از ثبت ذخیره سازی دریافت می کند و آنها را به یک نوع سریال برای انتقال تبدیل می کند.
7 زمان خروج (دستگاه به کامپیوتر متصل نیست).

ثبت نام وضعیت مودم (MSR)

وضعیت مودم ثبت نام

خودشه. این برنامه ها را مدیریت می کنید، می توانید به طور مستقیم با پورت COM ارتباط برقرار کنید، انتقال و پذیرش داده ها را کنترل کنید. اگر نمی خواهید با حافظه آشنا شوید، می توانید از اجزای آماده شده برای محیط های مختلف برنامه نویسی استفاده کنید: C ++، VB، دلفی، پاسکال و غیره آنها شهودی هستند، بنابراین، من فکر می کنم که اینجا ارزش توجه نیست.

Stopbits - تعداد بیت های متوقف را تعیین می کند. میدان ممکن است
مقادیر زیر را انجام دهید:


  • Onestopit - یک بیت متوقف؛
  • one5stopbit - بیت های یک و نیم متوقف (عملا نه
    استفاده شده)؛
  • twostopit - دو بیت متوقف

پس از تمام زمینه های ساختار DCB پر شده است، شما نیاز دارید
پیکربندی پورت با فراخوانی تابع setcommstate:

بول setcommstate (

HFILE را اداره کنید

LPDCB LPDCB.

در صورت تکمیل موفقیت آمیز، تابع از صفر باز خواهد گشت
ارزش، و در صورت خطا - صفر.

دوم ساختار اجباری برای پیکربندی پورت است
ساختار CommThateouts. این پارامترهای تاخیر موقت را تعریف می کند
هنگام دریافت در اینجا شرح این ساختار است:

typedef Struct _Commtimeouts (

dword ReadIntervaltimeout؛

DWORD READTOTALTHATEOUTOMIERTIPLIER؛

DWORD READTOTOLTIMTOUTOUTANTANT؛

DWORD WRITETOLTIMETOUTOUTIPLIER؛

dword writetoltoutouttant؛

) commtimeouts، * lpCommtimeouts؛

زمینه های ساختار CommThateouts دارای مقادیر زیر هستند:


  • ReadIntervaltimeout - فاصله زمانی حداکثر
    (در میلی ثانیه) مجاز بین دو قابل خواندن است
    خط ارتباطی توسط شخصیت های متوالی در حین
    زمان خواندن دوره زمانی شروع به شمارش می کند
    پذیرش اولین نماد اگر فاصله بین دو
    کاراکترهای متوالی از مقدار مشخص شده، عملیات
    خواندن و تمام داده های انباشته شده در بافر منتقل می شوند
    در برنامه. مقدار صفر این زمینه بدین معنی است که داده شده است
    زمان استفاده نمی شود
  • readtotaltimeoutoutmultiplier. - ضریب را مشخص می کند (در


    ضرب شده توسط تعداد کاراکترهای درخواست شده برای خواندن.
  • readtotaltimeoutoutconstant - ثابت ثابت (در

    عملیات خواندن برای هر عملیات خواندن، این مقدار
    به علاوه به نتیجه ضرب readtotaltimeoutmultiplier در
    تعداد کاراکترها درخواست شده برای خواندن. زمینه صفر
    readtotaltimeoutoutmultiplier و readtotaltimeoutouttant به معنی
    که زمان کلی برای خواندن عملیات استفاده نمی شود.
  • writetotaltimeoutoutmultiplier - ضریب را مشخص می کند (در
    میلی ثانیه) استفاده می شود برای محاسبه کل زمان

    ضرب شده توسط تعداد شخصیت های نوشته شده.
  • writetotaltimeotouttant - ثابت ثابت (در
    میلی ثانیه) استفاده می شود برای محاسبه کل زمان
    عملیات ضبط برای هر عملیات ضبط، این مقدار
    اضافه شده به نتیجه ضرب WritettotalTimeOutOuttiplier در
    تعداد شخصیت های قابل جابجایی. زمینه صفر
    writetotaltimeoutoutmultiplier و writetotaltimeotouttant به معنی
    که زمان کلی برای عملیات ضبط استفاده نمی شود.

کمی جزئیات بیشتر در مورد زمانبندی. اجازه دهید ما از پورت 50 بخوانیم
نمادها با سرعت 9،600 بیت / ثانیه. اگر 8 بیت استفاده شود
بر روی نماد، علاوه بر پارتی و یک بیت متوقف، سپس یکی
نماد در خط فیزیکی برای 11 بیت (از جمله شروع بیت ها) حساب می شود.
این بدان معنی است که 50 کاراکتر با سرعت 9،600 بیت پذیرفته خواهند شد

50 × 11/9600 \u003d 0.0572916 با

یا حدود 57.3 میلی ثانیه، فاصله زمانی صفر را ارائه داد
بین دریافت شخصیت های متوالی اگر فاصله بین
شخصیت ها تقریبا نیمی از زمان انتقال یک است
نماد، I.E. 0.5 میلی ثانیه، زمان پذیرش خواهد بود

50 × 11/9600 + 49 × 0.0005 \u003d 0،0817916

یا حدود 82 میلی ثانیه. اگر بیشتر در روند خواندن
82 میلی ثانیه، پس ما حق داریم فرض کنیم که یک خطا رخ داده است
کار دستگاه خارجی و می توانید خواندن را متوقف کنید، به این ترتیب
اجتناب از انجماد برنامه. این عملیات کلی زمان وقفه است
خواندن به طور مشابه، مدت زمان کل عملیات رکورد وجود دارد.

فرمول برای محاسبه عملیات کل زمان، به عنوان مثال،
خواندن، به نظر می رسد این:

NUMOFCHAR X READTOTOTALTHATEOUTMULTIPLIERE +
readtotaltimeoutoutconstant

جایی که Numofchar تعداد کاراکترهای درخواست شده برای عملیات خواندن است.

در مورد ما، ضبط Timeout نمی تواند مورد استفاده قرار گیرد و
آنها را برابر صفر قرار دهید.

پس از پر کردن ساختار commtimeoutts، شما باید تماس بگیرید
ویژگی نصب Timeout:

Setcommtimeouts Bool (

HFILE را اداره کنید

lpcommtimeouts lpcommtimeouts.

از آنجا که عملیات پذیرش انتقال در سرعت کم انجام می شود،
استفاده از داده های بافر برای تنظیم اندازه بافر پذیرش و
انتقال باید توسط تابع استفاده شود:

Setupcomm Bool (

HFILE را اداره کنید

dword dwinqueue،

dword dwoutqueue.

فرض کنید شما با بسته های دستگاه خارجی مبادله می کنید
اطلاعات اندازه 1024 بایت، سپس اندازه معقول بافر
مقدار 1200 خواهد بود. تابع Setupcomm جالب است زیرا می تواند
فقط ابعاد خود را با توجه به تنظیمات خود و یا
به طور کلی، اندازه های بافر ارائه شده توسط شما را رد می کند - در این مورد
این ویژگی با یک خطا کامل شده است.

من نمونه ای از باز کردن و پیکربندی پیوسته را ارائه خواهم داد
پورت COM1 برای کوتاه بودن - بدون تعریف خطا. در این مثال
بندر باز می شود تا با سرعت 9،600 بیت / C کار کند، از 1 استفاده می شود
بیت متوقف، بیت بیت استفاده نمی شود:

#عبارتند از.

. . . . . . . . . .

دسته دسته؛

commtimeouts commtimeouts؛

DCB DCB؛

دستگیره \u003d createFile ("com1"، generic_read | generic_write،
null، null، open_existing، file_flag_overlapped، null)؛

SETUPCOMM (دسته، اندازه، اندازه، اندازهبف)؛

GetCommState (دسته، & DCB)؛

dcb.baudrate \u003d CBR_9600؛

dcb.fballing \u003d درست؛

dcb.foutxctsflow \u003d false؛

dcb.foutxdsrflow \u003d false؛

dcb.fdtrcontrol \u003d dtr_control_handshake؛

dcb.fdsssensitiity \u003d false؛

dcb.fnull \u003d false؛

dcb.frtscontrol \u003d rts_control_disable؛

dcb.fabortonError \u003d false؛

dcb.bytesize \u003d 8؛

dcb.parity \u003d noparity؛

dcb.stopbits \u003d 1؛

setcommstate (دسته، و DCB)؛

commtimeouts.readintervaltimeout \u003d 10؛

commtimeouts.readtotaltimeoutomultiplier \u003d 1؛

// مقادیر این زمان - خروجی ها کاملا به اندازه کافی برای اطمینان هستند
پذیرش

// حتی در سرعت 110 بار

commtimeouts.readtotaltimeoutouttant \u003d 100؛

// استفاده از b این مورد مانند زمان انتظار
بسته

commtimeouts.writetaltimeoutmultiplier \u003d 0؛

commtimeouts.writetaltimeptant \u003d 0؛

setcommtimeouts (دسته، و commtimeouts)؛

PurgeComm (دسته، Purge_RxClear)؛

PurgeComm (دسته، purge_txclear)؛

پس از باز کردن پورت، اولین چیزی که باید آن را از دست بدهید، بنابراین
همانطور که در بافر پذیرش و انتقال می تواند "زباله" باشد. بنابراین ب.
پایان نمونه ما عملکرد قبلا به ما اطلاع داده نشده است
PurgeComm:

Bool PurgeComm (

HFILE را اداره کنید

dword dwflags

این ویژگی می تواند دو وظیفه را انجام دهد: صف را تمیز کنید
پذیرش و انتقال در راننده یا تکمیل تمام عملیات
I / O دقیقا اقدامات انجام شده، به دیگری تنظیم کنید
پارامتر:


  • purge_txabort
    سوابق حتی اگر آنها کامل نشده باشند
  • purge_rxabort - بلافاصله تمام عملیات را متوقف می کند
    خواندن، حتی اگر آنها کامل نشده باشند؛
  • purge_txclear - صف انتقال را در راننده پاک می کند؛
  • purge_rxclear - صف پذیرش را پاک می کند
    راننده.
    این مقادیر را می توان با استفاده از ضرب و شتم ترکیب کرد
    عملیات یا. بافر های تمیز پس از خطاها توصیه می شود
    پذیرش و پس از اتمام با بندر.

وقت آن است که به طور مستقیم عملیات را در نظر بگیریم
خواندن و نوشتن برای پورت همانطور که برای کار با فایل ها، استفاده می شود
ویژگی های ReadFile و WriteFile. در اینجا نمونه های اولیه آنها هستند:

bool readfile (

HFILE را اداره کنید

lpvoid lpbuffer،

dword nnumofbytestoread،

lpdword lpnumofbytesread،

lpoverlapped lpoverlapped.

bool writefile (

HFILE را اداره کنید

lpvoid lpbuffer،

dword nnumofbytewrite،

lpdword lpnumofbyteswritenten،

lpoverlapped lpoverlapped.

تخصیص پارامترهای این توابع را در نظر بگیرید:


  • هوس - توصیفگر پرونده باز ارتباط
    بندر؛
  • lpbuffer - آدرس بافر برای نوشتن داده های عملیات از
    این بافر به بندر منتقل می شود. برای خواندن عملیات در این
    بافر توسط داده های گرفته شده از خط قرار می گیرد؛
  • nnumofbytestoread، nnumofbytewrite. - تعداد مورد انتظار
    برای دریافت یا در نظر گرفته شده برای انتقال بایت؛
  • nnumofbytesread، nnumofbyteswrity. - تعداد واقعی
    bytes پذیرفته شده یا منتقل شده. اگر پذیرفته شود یا کمتر منتقل شود
    داده ها از درخواست شده، آن را به فایل دیسک نشان می دهد
    در مورد خطا، و برای پورت ارتباطی لزوما نیست.
    علت در زمانبندی
  • lpoverlapped - آدرس ساختار همپوشانی استفاده شده
    برای عملیات ناهمزمان.

در صورت تکمیل طبیعی، عملکرد به آن بازگردانده می شود
متفاوت از صفر، در صورت خطا - صفر.

من نمونه ای از خواندن و نوشتن عملیات را ارائه خواهم داد:

#عبارتند از.

…………..

DWORD NUMBYTS، NUMBYTES_OK، TEMP؛

comstat comstate؛

همپوشانی همپوشانی؛

char buf_in \u003d "سلام!"؛

numbytes \u003d 6؛

// اگر TEMP صفر نیست، به این معنی است که پورت قادر است
خطاهای

اگر (! temp) writefile (دسته، buf_in، numbytes،
& numbytes_ok، & همپوشانی)؛

ClearcommError (دسته، & Temp، & Comstate)؛

اگر (! temp) readfile (دسته، buf_in، numbytes، & numbytes_ok،
& همپوشانی)

// در متغیر numbytes_ok شامل یک عدد واقعی است
انتقال یافته

// بایت پذیرفته شده

در این مثال، ما قبلا از دو ناشناخته استفاده کردیم
COMSTAT و سازه های همپوشانی، و همچنین عملکرد ClearCommError. برای
مورد ارتباط ما "در سه سیم" ساختار همپوشانی
در نظر بگیرید (فقط از مثال استفاده کنید). تابع نمونه اولیه
ClearCommError فرم دارد:

bool clearcommerror (

HFILE را اداره کنید

lpdword lperrors،

lpcomstat lpstat.

این ویژگی علامت خطای پورت را بازنشانی می کند (اگر هر کدام
محل) و اطلاعات مربوط به وضعیت پورت را در ساختار باز می گرداند
comstat:

typedef Struct _Comstat.

DWORD FCTSHOLD: 1؛

DWORD FDSRHOLD: 1؛

dword frlsdhold: 1؛

dword fxoffhold: 1؛

DWORD FXOFFSENT: 1؛

DWORD FEOF: 1؛

DWORD FTXIM: 1؛

DWORD GRANDED: 25؛

dword cbinque؛

dword cboutque؛

) comstat، * lpcomstat؛

ما می توانیم از دو زمینه از این ساختار استفاده کنیم:


  • کابین - تعداد کاراکترهای بافر دریافت کننده. این نمادها
    گرفته شده از خط، اما هنوز توسط عملکرد readfile خوانده نشده است؛
  • cboutque - تعداد کاراکترهای در بافر انتقال. اینها
    نمادها هنوز به خط منتقل نشده اند.

زمینه های باقی مانده این ساختار حاوی اطلاعاتی هستند
خطاها

در نهایت، پس از اتمام کار با پورت، باید بسته شود.
بستن شی در Win32 عملکرد Closehandle را اجرا می کند:

Bool Closehandle (

دستگیره را انجام دهید

در سایت ما شما می توانید متن کامل کلاس را برای کار با آن پیدا کنید
پورت متوالی در حالت آسنکرون "در سه سیم" و
همچنین یک نمونه از یک برنامه با استفاده از این کلاس. این همه
نوشته شده تحت سازنده C ++، اما به دلیل تنها توابع استفاده می شود.
API Win32، متن برنامه برای هر کامپایلر C ++ آسان است.
همچنین ممکن است که کلاس کاملا نوشته نشده است "با توجه به قوانین" - من بپرسم
ببخشید، نویسنده یک برنامه نویس "حق" نیست و می نویسد
چگونه راحت J است.

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

چه چیزی از طریق پورت کام متصل است

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

با استفاده از پورت COM، شما می توانید دو کامپیوتر را با استفاده از "کابل صفر مودم" به اصطلاح متصل کنید (نگاه کنید به زیر). استفاده از MS-DOS Times برای پمپ کردن فایل ها از یک کامپیوتر به دیگری، در یونیکس برای دسترسی ترمینال به دستگاه دیگری، و در ویندوز (حتی مدرن) - برای اشکال زدایی سطح هسته.

اما در جهان شبکه از طریق پورت کاماتصال به بندر کانتینر دستگاه های شبکه (سوئیچ ها، روترها، مارک ها مانند سیسکو یا قایقرانی)

مدار اتصال به اتصال به سوئیچ ها از طریق پورت سریال چیست؟ به عنوان مثال، آداپتورها، از یک آزمایشگاه ST در یک انتهای USB وجود دارد که شما به یک کامپیوتر متصل می شوید و دوم یک پورت کام است.

نصب پورت USB درایور COM در ویندوز

متاسفانه در دستگاه های متصل ویندوز، USB به COM همیشه به طور خودکار در سیستم نصب نشده است، و شما باید برای رانندگان آنها جستجو کنید. اگر خودتان آن را خریداری کردید، درایو با رانندگان گنجانده شده بود، و شما می توانید از آن استفاده کنید اگر اینطور نیست، سپس به نحوه پیدا کردن رانندگان نگاه کنید.

مدیر دستگاه را در ویندوز باز کنید. اگر شما نمی دانید چگونه، سپس CTR + Pause Breake را فشار دهید، یا WIN + R را فشار دهید و Devmgmt.msc را وارد کنید. همانطور که می توانید در بخش پورت ها (COM و LPT) ببینید، من در سومین سیم پورت پورت ناشناخته یافتم، و رانندگان او را از سیستم پیدا نکردند، که آیکون زرد به ما می گوید.

به خواص بروید این دستگاه و شناسه تجهیزات را انتخاب کنید، شما باید چیزی را با نوع USB \\ VID_067B و PID_2303 & REV_0300، در اینجا شما آن را کپی کنید و در Google یا Yandex جستجو کنید.

سپس بر روی کلیک راست بر روی دستگاه در دستگاه دستگاه کلیک کنید و نصب رانندگان را انتخاب کنید، مسیر را به آنها نشان دهید و اگر همه چیز درست باشد، آن را قرار دهید آیکون ناپدید خواهد شد هشدارها

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

امیدوارم یاد بگیرید و چگونگی اتصال پورت USB COM را در ویندوز کنید.