جدول کدهای کلید صفحه کلید را اسکن کنید. در مورد مسئله ارزیابی سیگنال های دیجیتال پمین. صفحه کلید نحوه اسکن کدهای QR در اندروید

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

تعیین کد اسکن کلید

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

برای پیدا کردن کد کلید، باید از ابزار xev همراه با سرور X استفاده کنید. پس از راه اندازی آن، پنجره Event Tester ظاهر می شود، اکنون کلیدها را به ترتیب فشار دهید و کد صادر شده را به خاطر بسپارید:

$xev
...
رویداد KeyRelease، سریال 31، مصنوعی NO، پنجره 0x3e00001،
root 0x67, subw 0x0, time 279734676, (311,611), root:(1104,687)
حالت 0x2000، کد کلید 236 (keysym 0x1008ff19، XF86Mail)، همان_صفحه بله،

XFilterEvent برمی گرداند: False
رویداد KeyRelease، سریال 31، مصنوعی NO، پنجره 0x2600001،
root 0x67, subw 0x0, time 265877259, (883,334), root:(886,358)
حالت 0x0، keycode 161 (keysym 0x0، NoSymbol)، same_screen YES،
XLookupString 0 بایت می دهد:
XFilterEvent برمی گرداند: False

خروجی می تواند بسیار زیاد باشد زیرا هر حرکت ماوس هنگام عبور از پنجره Event Tester ردیابی می شود. کلید توسط بلوک KeyRelease توصیف می شود، به ویژه، مقدار کد کلید دقیقاً کد اسکنی است که می خواهیم بدانیم. در مثال نشان داده شده دو کلید فشار داده شده است. کد کلید 236 مربوط به کد کلید برای سرور X مشخص شده در keysym و همچنین عملکرد XF86Mail است که در KDE سرویس گیرنده ایمیل پیش فرض را راه اندازی می کند. برای کلید شماره 161، کد و عمل تعریف نشده است.

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

از «setkeycodes 0xec» استفاده کنید "برای اطلاع رسانی.

یعنی به شما پیشنهاد می شود که کد اسکن کلید را خودتان با استفاده از setkeycodes تنظیم کنید و انتخاب مقدار keycode بسیار ساده است. رقم حاصل را به یک عدد اعشاری تبدیل کنید (اکثر ماشین حساب ها می توانند این کار را انجام دهند) و 128 را اضافه کنید. در این مثال 0xec = 236، یعنی کد اسکن 364 را دریافت می کنیم. اگر شک دارید، لیست کدهای اسکن استفاده شده و استفاده نشده می تواند باشد. با اجرای ابزار getkeycodes در کنسول یا dumpkeys مشاهده می شود. به عنوان مثال، اگر خروجی "getkeycodes | grep<код клавиши>"چیزی نداد، بنابراین می توان با خیال راحت از این کد استفاده کرد.

ابزار XKeycaps (www.jwz.org/xkeycaps)، که یک جلوی گرافیکی برای Xmodmap است، همچنین می‌تواند به تعیین کد اسکن کمک کند.

برنامه xev البته در کنسول کار نمی کند. برای پیدا کردن کد اسکن صادر شده توسط هسته، باید از ابزار showkey یا getkeycodes استفاده کنید:

$showkey
صفحه کلید در حالت یونیکد بود
هر کلیدی را فشار دهید (برنامه 10 ثانیه پس از آخرین فشار به پایان می رسد)...
0xe0 0x6c 0xe0 0xec

دو رقم اول مربوط به کلید فشرده شده است، دومی - به عدم فشار دادن.

تنظیم اتصال کد اسکن در X-Window

بنابراین، اکنون ما کدهای اسکن را داریم، باید به سرور X نشان دهیم که با فشار دادن این کلید واقعاً چه کاری باید انجام دهد، یعنی یک نام نمادین به آن اختصاص دهیم. فهرستی از نام نمادها در فایل هدر XF86keysym.h آمده است. به طور پیش فرض، فایل های هدر سرور X بر روی توزیع های مدرن نصب نمی شوند. برای دیدن آن در اوبونتو، باید بسته x11proto-core-dev را نصب کنید، پس از آن این فایل در پوشه /usr/include/X11 قرار می گیرد. یا می توانید با سرور X.Org CVS تماس بگیرید. بیایید نگاه بیندازیم:

$ cat /usr/include/X11/XF86keysym.h
/*
* کلیدهای موجود در برخی از صفحه کلیدهای "اینترنتی".
*/
#define XF86XK_Standby 0x1008FF10
#define XF86XK_AudioLower Volume 0x1008FF11
#define XF86XK_AudioRaise Volume 0x1008FF13
#define XF86XK_AudioPlay 0x1008FF14
#define XF86XK_AudioStop 0x1008FF15
#define XF86XK_Mail 0x1008FF19

اگر خط آخر را با خروجی xev مقایسه کنیم، می بینیم که مقادیر با کلید 236 مطابقت دارند - keysym 0x1008ff19، XF86Mail (بدون پسوند XK_). می توانید لیستی از تمام مقادیر موجود را همانطور که باید در /usr/share/X11/XKeysymDB استفاده کنید پیدا کنید.

دو راه برای ایجاد طرح بندی خود وجود دارد: توضیحی برای صفحه کلید خود ایجاد کنید یا از Xmodmap استفاده کنید. آخرین روش ساده ترین است، بنابراین در مورد آن بیشتر صحبت خواهیم کرد. در فهرست اصلی کاربر یک file.Xmodmap ایجاد کنید که در آن مقادیر مورد نظر را وارد می کنیم:

$ mcedit ~/. Xmodmap

کد کلید 161 XF86 ماشین حساب
کد کلید 174 XF86AudioLower Volume
کد کلید 176 XF86AudioRaise Volume
کد کلید 162 XF86AudioPause

و به همین ترتیب، اصل، به نظر من، روشن است. علاوه بر این، کد کلید را می توان به دو صورت اعشاری و هگزادسیمال وارد کرد. طبق مشاهدات من، کدهای اکثر کلیدها استاندارد شده اند. بنابراین، اگر پاسخ یک کلید را یک بار فشار دهید و فایل را به رایانه دیگری منتقل کنید، این احتمال وجود دارد که در صفحه کلید دیگری واکنش به فشار دادن کلیدی که امضا شده است نیز مشابه باشد. کاربران دسکتاپ Gnome با GDM می توانند تمام این خطوط را در فایل گسترده سیستم /etc/X11/Xmodmap بنویسند.

در موارد دیگر، همچنان باید به سرور X بگوییم که از فایل تولید شده استفاده کند. این در توزیع‌های مختلف به طور متفاوتی اجرا می‌شود، ایده اصلی این است که دستور /usr/bin/xmodmap $HOME/.Xmodmap را زمانی که کاربر وارد سیستم می‌شود یا زمانی که X شروع می‌شود، اجرا شود. در اینجا هرکسی هر طور که می‌خواهد می‌رقصد. در انجمن‌ها استفاده از فایل $HOME/.xsession (در برخی توزیع‌ها ممکن است .Xsession نامیده شود)، xprofile. یا سیستم /etc/X11/Xsession را پیشنهاد می‌کنند. و من می ترسم که این همه چیز نیست گزینه های ممکن. بیایید ببینیم چگونه در KUbuntu انجام می شود:

$ sudo grep -iR xmodmap /etc

در نتیجه، یک فایل بسیار جالب /etc/X11/Xsession.d/80ubuntu-xmodmap با محتوای زیر پیدا کردیم:

$ cat /etc/X11/Xsession.d/80ubuntu-xmodmap

/usr/bin/xmodmap /usr/share/apps/kxkb/ubuntu.xmodmap || درست است، واقعی

USRMODMAP="$HOME/.Xmodmap"

اگر [ -x /usr/bin/xmodmap ]; سپس
اگر [ -f "$USRMODMAP" ]; سپس
/usr/bin/xmodmap "$USRMODMAP" || درست است، واقعی
فی
فی

یعنی محتویات فایل ubuntu.xmodmap و user.Xmodmap در صورت وجود بارگذاری می شود. وقتی ubuntu.xmodmap را در ویرایشگر باز می‌کنید، فهرستی از کدهای کلید و نام‌های نمادین مرتبط را خواهید دید. از این می توانیم نتیجه بگیریم: اگر یک توسعه دهنده گزارش دهد که توزیع او از صفحه کلیدهای چند رسانه ای پشتیبانی می کند، با احتمال بالایی می توانید یک فایل مشابه را پیدا کنید. سایر توزیع ها سیستم مشابهی برای راه اندازی فایل های xmodmap سفارشی دارند.

اکنون که نام های نمادین به کلیدها اختصاص داده شده است، می توانید اقدامات مورد نظر را به آنها اختصاص دهید. برخی از محیط های پنجره مانند KDE می توانند اقدامات مبتنی بر نام های نمادین را انجام دهند. بنابراین، وقتی دکمه XF86AudioPlay (QUESTION) را فشار می دهید، پخش کننده پیش فرض شروع به پخش می کند. برای تنظیم ترکیب مورد نظر، کافی است به "KDE Control Center -> Regional and Accessibility Options -> Keyboard Combinations" بروید (در KUbuntu، به "System Setting -> Keyboard & Mouse" نگاه کنید). یک آیتم منوی مشابه هم در Gnome (شما می توانید به سادگی gnome-keyboard-bindings) و هم در XFce وجود دارد. به علاوه، برخی از برنامه‌ها مانند Amarok، Konqueror، MPD نیز می‌توانند ضربه‌های کلید را پردازش کنند. در محیط های دیگر بدون
ابزارهای پیکربندی گرافیکی به احتمال زیاد نیاز به مداخله دستی در فایل های پیکربندی دارند. به عنوان مثال، به این ترتیب که در IceWM، با فشار دادن کلیدی با نام نمادین XF86AudioPlay، پخش کننده XMMS شروع می شود، و با فشار دادن مجدد، مکث می کند، باید خط را به فایل ~/.icewm که پس از اولین راه اندازی ظاهر می شود اضافه کنید:

$ mcedit ~/.icewm

کلید XF86AudioPlay xmms --play-pause

در Fluxbox خط راه اندازی پخش کننده به شکل زیر است:

$ mcedit ~/.fluxbox/keys

هیچ XF86AudioPlay: ExecCommand xmms --play-pause

معمولاً نمونه هایی در کانفیگ ها وجود دارد، بنابراین فکر می کنم شما به راحتی می توانید بقیه مدیران ویندوز را خودتان کشف کنید.

تنظیم واکنش در کنسول

در کنسول، رویه کمی متفاوت است. همانطور که به یاد دارید، خروجی dmesg توصیه می کرد که کدهای کلید را با استفاده از دستور setkeycodes اختصاص دهید. اما در اینجا تفاوت هایی وجود دارد - بیش از 128 دستور کلیدی در کنسول وجود ندارد، باید مقادیر را از 0 تا 127 انتخاب کنید:

$setkeycodes 0xec 118

می توانید مقادیر رایگان را در فایل طرح بندی صفحه کلید فعلی مشاهده کنید. در اوبونتو و همه توزیع‌های مبتنی بر دبیان، این معمولاً /etc/console-setup/boottime.kmap.gz است. اگر بعد از راه‌اندازی هیچ مشکلی با کلیدها وجود نداشت، این خط را به یکی از اسکریپت‌های راه‌اندازی اضافه کنید، به عنوان مثال در /etc/init.d/rc.local.

اکنون تنها چیزی که باقی می ماند تنظیم تناظر بین کلید و عمل در حال انجام است. در اینجا حتی فضای بیشتری برای خلاقیت نسبت به X وجود دارد. در keymaps (5)، روش تطبیق یک کد کلید به شرح زیر است:

(ساده | ) keycode keynumber = keysym

# با فشار دادن کلید با کد 105، کنسول را به عقب برگردانید
کد کلید 105 = Decr_Console
# وقتی روی آن کلیک می‌کنید، کنسول یکی را به جلو می‌برد و یک کلید با کد 106
کد کلید alt 106 = Incr_Console

اما می توانید با تعیین دستور در متغیرها گزینه های خود را ایجاد کنید:

کد کلید 120 = F100
string F100 = "/sbin/shutdown -h now\n"

به عبارت دیگر، با فشار دادن کلید با کد 120 عمل مشخص شده در متغیر F100 انجام می شود. در مورد ما، کامپیوتر برای خاموش شدن تنظیم شده است. البته به جای F100 می توانید از هر نام دیگری استفاده کنید.

اکنون یک بخش به همان اندازه مهم این است که کجا باید همه اینها را یادداشت کرد. اسناد و نکات متعدد پیشنهاد می کند که از فایل طرح بندی کنسول فعلی استفاده کنید (در مورد من، boottime.kmap.gz). به هر حال، این تنها فایلی است که طرح‌بندی‌های موجود پس از نصب KUbuntu را توصیف می‌کند. برای دیدن گزینه های دیگر، باید بسته کنسول-داده را نصب کنید. پس از این، در /usr/share/keymaps/i386/ می توانید چندین زیرشاخه با فایل های داخل آن پیدا کنید. اما اگر نیاز به تغییر به طرح بندی دیگری دارید (در اوبونتو و برخی توزیع های دیگر از فایل /etc/default/console-setup یا ~/.console-setup برای این منظور استفاده می شود)، تمام تنظیمات باید به دیگری منتقل شوند. فایل، که تا حدودی است
ناراحت. اگر تصمیم به انجام این مرحله دارید، از ورودی های موجود به عنوان یک الگو استفاده کنید، بدون اینکه چیزی در موقعیت اول بنویسید، و فراموش نکنید که در پایان یک خط خالی بگذارید.

کمی در مورد لپ تاپ

تاکنون با لپ‌تاپ‌ای برخورد نکرده‌ام که کدهای اسکن کلید آن را نتوان تعیین کرد. بنابراین، تنظیمات در اینجا با آنچه در بالا توضیح داده شد تفاوتی ندارد. اگرچه یک تکنیک وجود دارد که می خواهم در مورد آن صحبت کنم. به نظر من حالت خواب زمستانی برای استفاده بسیار راحت است، زمانی که وقتی کامپیوتر را روشن می کنید، همه چیز را در جای خود پیدا می کنید. توزیع های مدرن، به عنوان یک قاعده، از آن پشتیبانی می کنند، اگرچه راه اندازی به طور کلی ساده است - فقط بسته hibernate را نصب کنید و پارامترهای لازم را در فایل پیکربندی لغو کنید. تنها نکته این است که هر بار برای تغییر به این حالت باید اسکریپت /usr/sbin/hibernate را اجرا کنید که همیشه راحت نیست. فقط می خواهم درب لپ تاپ را ببندم و دوباره روشنش کنم
غذا، هر چیزی را در جای خود کشف کنید.

انجام این کار با استفاده از دیمون acpid بسیار آسان است، که نوعی رابط کاربری است که به شما امکان می‌دهد هر رویداد ACPI موجود از طریق /proc/acpi/event را مدیریت کنید. در این مورد، acpid مجموعه ای از فایل های پیکربندی را از دایرکتوری /etc/acpi/events/ می خواند. اگر بسته با دیمون در توزیع موجود نیست، آن را از مخزن نصب کنید. آخرین نسخه را می توانید از وب سایت phobos.fs.tum.de/acpi دریافت کنید. پس از نصب، باید دو فایل در پوشه /etc/acpi/events ایجاد کنید: lid و power. اولی واکنش به بستن درب را توضیح می دهد، دومی به فشار دادن دکمه پاور.

$ sudo mcedit /etc/acpi/events/lid

رویداد=دکمه/درپوش.*
action=/usr/sbin/hibernate

$ sudo mcedit /etc/acpi/events/power

رویداد=دکمه/توان.*
action=/sbin/shutdown -h now

اینها تا حدودی گزینه های ساده شده ای هستند؛ در KUbuntu شما اسکریپت های پیچیده تری پیدا خواهید کرد. پس از این، شما باید دیمون acpid را مجددا راه اندازی کنید:

$ sudo /etc/init.d/acpid restart

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

راه اندازی برنامه ها

اگر دوست ندارید با فایل های پیکربندی دست و پنجه نرم کنید، من چندین برنامه را پیشنهاد می کنم که به شما در پیکربندی عملکرد کلیدهای چند رسانه ای کمک می کند. به عنوان مثال، هدف اولیه برنامه Sven (sven.linux.kiev.ua) پیکربندی کلیدهای اضافی روی صفحه کلید چند رسانه ای است، اما با شروع نسخه 0.4، می تواند خطاهای تایپ را تصحیح کند و طرح صفحه کلید را تغییر دهد. علاوه بر این، حتی اگر یک صفحه کلید معمولی دارید، با کمک آن می توانید کلیدهای چندرسانه ای را با استفاده از میانبرهای صفحه کلید شبیه سازی کنید. همچنین می توانید اقداماتی را به دکمه های خاص ماوس اختصاص دهید. او تقریباً 10000 کلمه روسی و 9500 کلمه انگلیسی را می فهمد. اگر برنامه تغییر نکند
پس از آن می توان طرح را به صورت دستی با استفاده از یک کلید مشخص شده تغییر داد (به طور پیش فرض شکستن). یک کلید جداگانه (قفل پیمایش) می تواند حروف کلمات را تغییر دهد (بالا، پایین، حرف اول بالا، بقیه پایین تر). نشانگر سوئیچ چیدمان صفحه کلید وضعیت خود را برای هر پنجره به خاطر می آورد، بنابراین اگر مرتب بین برنامه ها جابه جا می شوید، دیگر نیازی به تغییر طرح اضافی ندارید. این برنامه قابلیت های فوق العاده ای دارد و به شما توصیه می کنم نگاهی به آن بیندازید. تمام تنظیمات با استفاده از برنامه گرافیکی، ساخته شده بر روی کتابخانه های +GTK. Sven روی لینوکس آزمایش شد، اما در اصل باید روی سیستم های *BSD کار کند. مدیر پنجره استفاده شده است
مهم نیست

قابلیت های KeyTouch (keytouch.sf.net) تا حدودی کمتر است؛ این ابزار منحصراً برای تنظیم کلیدهای چند رسانه ای استفاده می شود. اگرچه با کمک آن می توانید یک عمل متفاوت را به هر کلیدی که با تنظیمات پیش فرض متفاوت است اختصاص دهید. در وب سایت برنامه، علاوه بر متن ها و بسته های منبع برای برخی از توزیع ها، می توانید تنظیمات آماده برای صفحه کلیدهای چندرسانه ای از اکثر سازندگان مشهور را بیابید.

یکی دیگر راه حل جالب- xbindkeys (hocwp.free.fr/xbindkeys/xbindkeys.html) - به شما امکان می دهد هر دستوری، از جمله دستورات پوسته، را به هر دکمه صفحه کلید و ماوس اختصاص دهید. تمامی تنظیمات در یک فایل پیکربندی انجام می شود که فرمت ساده و قابل فهمی دارد.

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

1. کدخوان QR را روی گوشی خود باز کنید.

2. دستگاه خود را روی کد QR نگه دارید تا به وضوح روی صفحه نمایش گوشی هوشمند شما قابل مشاهده باشد.

اگر گوشی هوشمند خود را به درستی روی کد QR نگه دارید، موارد زیر رخ می دهد:

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

3. در صورت نیاز دکمه مشخص شده را فشار دهید.

فوق العاده! تلفن هوشمند شما کد را می خواند و پیوند داده شده را دنبال می کند، که همیشه فوراً اتفاق نمی افتد. در اکثر دستگاه‌ها این ممکن است چند ثانیه طول بکشد.

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

نحوه اسکن کدهای QR در اندروید

اکنون به شما خواهیم گفت که چگونه از برنامه اسکن کد QR در اندروید استفاده کنید.

به طور خلاصه:
1. باز کنید فروشگاه Play .
2. جستجو کنید کدخوان QR .
3. انتخاب کنید کدخوان QR(از طریق اسکن).
4. روی "کلیک کنید" نصب".
5. برنامه را باز کنید خواندن کد QR.
7. دوربین را به سمت کد QR بگیرید.
8. روی "کلیک کنید" خوب".

مرحله 1. Play Store را در اندروید باز کنید.این یک نماد در یک برنامه یا در صفحه اصلی است.

گام 2. QR code reader را در موتور جستجو وارد کنید.لیستی از برنامه های کاربردی برای خواندن کد QR ظاهر می شود.

  • این مقاله نحوه استفاده از QR Code Reader را توضیح می‌دهد، اما شما می‌توانید برنامه‌ای را که دوست دارید انتخاب کنید. فقط قبل از دانلود حتما در مورد برنامه مطالعه کنید.
  • مراحل باید برای همه برنامه‌های خواندن کد QR یکسان باشد.

مرحله 3.روی QR Code Reader توسعه یافته توسط Scan کلیک کنید.نام توسعه دهنده در زیر هر برنامه ذکر شده است. ممکن است مجبور شوید برای پیدا کردن برنامه ساخته شده توسط Scan به پایین بروید.

مرحله 4.روی Install کلیک کنید.یک پنجره پاپ آپ ظاهر می شود که از شما می خواهد اجازه دسترسی به اطلاعات اندروید خود را بدهید.

مرحله 5.روی Accept کلیک کنید.اکنون QR Code Reader بر روی دستگاه اندرویدی شما نصب خواهد شد.

    • هنگامی که برنامه دانلود شد، دکمه "نصب" به "باز" ​​تغییر می کند و یک نماد جدید در برنامه خواهید داشت.

مرحله 6.QR Code Reader را باز کنید.این نمادی است که شبیه یک کد QR در برنامه است. با این کار برنامه ای باز می شود که شبیه یک صفحه دوربین استاندارد است.

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


مرحله 8روی "OK" کلیک کنید تا وب سایت باز شود.این مرورگر وب پیش‌فرض شما را راه‌اندازی می‌کند و به URL موجود در کد QR هدایت می‌شود.

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

به طور کلی، دستگاه ساده است. به خصوص مدل‌های قدیمی که به پورت PS/2 متصل هستند، نیستند. همانطور که داده های تجربی متعدد نشان می دهد، تراشه کنترل صفحه کلید، ضربه های کلید را اسکن کرده و آنها را به صورت کد سریال به پورت منتقل می کند. فرکانس ساعت این انتقال چندگانه (در اکثر موارد) 6.3 یا 10 کیلوهرتز است. اگرچه نویسنده در سال های اخیر با چند نسخه مواجه شده است که فرکانس ساعت آنها حدود 20 کیلوهرتز بود.

همه صفحه‌کلیدها، وقتی هر کلیدی را فشار داده و نگه می‌دارید، (پس از یک مکث) شروع به تکرار ارسال کد کلید «ad infinitum» می‌کنند. در حالت عادی، این معمولاً منجر به سرریز بافر کنترلر و خرابی آن در عرض چند ثانیه می شود. ظاهر می شود سیگنال صوتیسیستم "دینامیک" - "جیغ". ماهیت حالت تست (به طور کلی پذیرفته شده) مسدود کردن فرمان سرریز بافر است که به شما امکان می دهد با فشار دادن یک کلید، از انتقال بی پایان کاراکتر انتخاب شده از طریق کابل "صفحه کلید" اطمینان حاصل کنید.

مانند همیشه، برای محاسبه صحیح بعدی نتیجه، لازم است یک تناوب ثابت از پالس ها در بسته کد ایجاد شود. برای کدهای صفحه کلید، دو ترکیب از این قبیل می تواند وجود داشته باشد:

10101010 (55) کلید "+; ="

01010101 (AA) در جداول استاندارد - قابل اجرا نیست

جدول کلی کدهای اسکن در جدول 14.1 آورده شده است

جدول 14.1- کدهای اسکن صفحه کلید

کلید

اسکن کد

کلید

اسکن کد

کلید

اسکن کد

کلید

اسکن کد

بنابراین، هنگام اجرای حالت تست و به عنوان مثال، قرار دادن وزنه روی کلید "+"، یک توالی بی نهایت از بسته های پالس در کابل صفحه کلید وجود دارد. در این حالت، دوره تکرار پالس در بسته (یعنی فرکانس ساعت) برابر با 6.10 یا 20 کیلوهرتز خواهد بود و فرکانس تکرار بسته بسیار کمتر خواهد بود. فرمت داده در شکل 14.1 نشان داده شده است

برای تبادل داده در کابل صفحه کلید، دو خط وجود دارد - KBData و KBSync. هنگام ارسال کدهای اسکن، صفحه کلید بیت بعدی داده را روی خط KBData تنظیم می کند و با انتقال سیگنال از "1" به "0" در خط KBSync، انتقال را تایید می کند.

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



همانطور که از موارد بالا بر می آید، در طیف PEMIN کابل صفحه کلید باید اجزای فرکانس با فرکانس ساعت 1/76.04·10 -6 = 13.15 کیلوهرتز را انتظار داشت. علاوه بر این، به دلیل وجود دو سیگنال تغییر فاز با دوره های مختلف (اما چندگانه!)، اجزای فرکانس زوج و فرد در دامنه متفاوت خواهند بود.

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

عملا تنها راه- یک کد اسکن با حداقل تعداد "1" منطقی در بسته را انتخاب کنید. اینها کلیدهای "F3" و F9 هستند (03 و 01 در کد هگز). کد "00" استفاده نمی شود.

اسیلوگرام کد اسکن "F3" در زیر نشان داده شده است.


به طور دقیق "از نظر انرژی"، اگر تمام اجزای فرکانس PEMIN را با کد "=" و به عنوان مثال، کد "F9" اندازه گیری کنید، تفاوت در قرائت گیرنده در هر یک از اجزای فرکانس اطلاعات واقعی است. بخشی از انرژی PEMIN علاوه بر این، این یک حداکثر حداکثر است. اگر نتوان آن را به یک "ماشین اتوماتیک" سپرد، کار بسیار پیچیده و خسته کننده است. اجزای بسیار PEMIN برای چنین فرکانس های پایینبه راحتی قابل شناسایی نیستند. بنابراین همچنین برای "گرفتن" تفاوت ها ...



در عمل SI، در اکثریت قریب به اتفاق موارد، آنها به سادگی سطوح PEMIN را اندازه گیری می کنند (بدون کم کردن چیزی) و پارامتر امنیتی را محاسبه می کنند. این ممکن است، "با یک ذخیره"، اما متخصص موظف است از وضعیت واقعی امور مطلع شود.

در پایان بررسی - "pinout" اتصالات صفحه کلید AT و PS/2.


"تصاویر" روی گیرنده بسیار "کلاسیک" به نظر نمی رسد، اما هنوز کاملاً قابل تشخیص است. در اینجا نمونه هایی وجود دارد



طیف به وضوح افزایش دامنه مولفه ها را با کاهش فرکانس نشان می دهد.

همچنین ویژگی های اندازه گیری "کلاو" در این ناحیه فرکانس (از ده ها کیلوهرتز و بالاتر) وجود دارد. واقعیت این است که صفحه کلید، در محل معمول خود، نه چندان دور از آن قرار دارد واحد سیستم. و در بالای SB قرار دارد بلوک پالسمنبع تغذیه قدرتمندترین منبع PEMIN برای هر دو بخش "E" و "H" است. در «نور» چنین نورافکن تئاتری، دیدن «نور» ضعیف صفحه کلید هنر خاصی است! بنابراین، من تکنیک زیر را پیشنهاد می کنم. صفحه کلید را تا حد امکان از SB دور کنید. بهتر - در یک توسعه دهنده PS/2. حدود 2-2.5 متر.

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

همه موارد فوق برای یک صفحه کلید با رابط PS/2 اعمال می شود. اما اکنون به طور گسترده ای با صفحه کلیدهایی با رابط USB جایگزین شده اند.

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

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

حداکثر اندازه محموله DATA برای دستگاه های کم سرعت 8 بایت است. یعنی این دقیقا همان چیزی است که کد اسکن صفحه کلید نیاز دارد.

مشاهده سیگنال (یعنی داده) روی خط USB کار آسانی نیست. با این وجود، این همان چیزی است که دقیقاً در کابل یک "صفحه کلید" USB معمولی مدل GENIUS KB-06XE، به ویژه در خط "داده +" (سیم) آشکار شد (شکل 14.10).


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

فرکانس این بسته ها به شدت تثبیت شده است (شکل 14.11)، و مدت زمان هر یک (در اسیلوگرام قابل مشاهده است) حدود 1 ± 34 میکرو ثانیه است.


بسته ها هر 4 میلی ثانیه دنبال می شوند. با این حال، لازم به ذکر است که انتهای هر بسته دائماً «جلو می‌کند» و «ژیت» کلاسیک قابل توجه است. بنابراین، تصویر طیفی تا حدی تار است و تنها با میانگین گیری طولانی مدت واضح می شود.


علاوه بر این، باید در نظر داشت که به دلیل دوره های تکرار پالس های مختلف و مدت زمان متفاوت آنها، طیف دارای ویژگی مخلوطی از یک طیف پیوسته و خطی است. با این وجود، خصیصه لوبی طیف، طبیعی برای یک توالی نامتناهی از بسته‌ها و چندگانه در «لوب‌های» آن در طول متوسط ​​بسته، به وضوح حفظ می‌شود. فقط "صفرهای" تابع توسط جیتر و یک دوره تکرار غیر متغیر تک تک پالس ها صاف می شوند. با این حال، خود تصویر کاملاً معمولی است. با وضوح فرکانس ریزتر، طیف شروع به تبدیل شدن به "خطوط" تعیین شده توسط نرخ تکرار بسته (250 هرتز) می کند (شکل 14.13). شناسایی و تجسم بخش هایی از قاب (بسته) که مسئول انتقال داده ها هستند، شکست خورده است. با این حال، می توان ادعا کرد که PEMIN کابل صفحه کلید همچنان این خواهد بود و هیچ چیز دیگری. واضح است که در چه فرکانس هایی به دنبال آن بگردیم، واضح است که ماهیت آن پیوسته خواهد بود (در هر صورت با وضوح فرکانس گیرنده بیش از 0.3 کیلوهرتز). و واضح است که چه مقداری را به عنوان مقدار ساعت در محاسبات جایگزین کنیم (حداقل دوره پالس در یک بسته در آزمایش 1.322 میکرو ثانیه بود). اندازه گیری این در هر SI با یک اسیلوسکوپ با پهنای باند حداقل 200 مگاهرتز یک کار بی اهمیت است. حالت تست، در واقع، هر کدام است، می‌توانید هر کلیدی را فشار دهید یا چیزی را نمی‌توانید فشار دهید. بسته ها به هر حال از طریق رابط منتقل می شوند. و برای اولین تقریب، آنها را آموزنده می دانیم (تا زمانی که خلاف آن ثابت شود).

اسیلوسکوپ ها و طیف های داده شده با استفاده از یک اسیلوسکوپ AKIP-4108/2 متصل به همان رایانه ای که اندازه گیری ها روی آن انجام شد به دست آمد (لازم به ذکر است که این یک تکرار بسیار کاربردی از توسعه شرکت فناوری PICO توسط ما است. خیر. بدتر از چینی ها :)).

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

برای حالت های دیگر رابط USB، به یک اسیلوسکوپ با پهنای باند بسیار گیگاهرتز نیاز دارید.

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

چیزی که من را بر آن داشت تا روی دستگاهی از این دست کار کنم، این واقعیت بود که اکثر دستگاه‌های Gamemort با قابلیت تکثیر آسان اجازه اجرای تعداد کافی دکمه‌های کنترلی را نمی‌دادند. یک پورت بازی رایانه شخصی در ابتدا برای حداکثر چهار دکمه طراحی شده بود. انواع پسوندها نیز انعطاف مطلوبی ندارند. به عنوان مثال، برنامه افزودنی CH Flightstick Pro، که در بین افراد DIYers محبوب است، به شما امکان می دهد تا حداکثر 14 دکمه را اجرا کنید، اما نمی توانید از هیچ دو دکمه به طور همزمان استفاده کنید - در مورد پرواز با چنین دستگاه هایی در بازی هایی که باید دائماً خود را بچرخانید. سر» - در همان پرندگان، می توانید فراموش کنید. برخی از برنامه‌های افزودنی از یک رابط کاملاً دیجیتالی استفاده می‌کنند - داده‌های مربوط به فشار دادن دکمه‌ها و انحراف دستگیره در امتداد خطوط پورت بازی دیجیتال، که در ابتدا برای انتقال داده‌های مربوط به چهار دکمه "استاندارد" در نظر گرفته شده بودند، منتقل می‌شوند. من حتی چنین پسوندهایی را تا حدودی زائد می دانم. و تبدیل داده های آنالوگ به دیجیتال طراحی جوی استیک را پیچیده می کند. علاوه بر این، هر بازی نمی خواهد بفهمد که چه نوع هیولایی به آن "چسبیده است". و صفحه کلید - اینجاست، با تمام شکوه 102 کلیدی خود! علاوه بر این، مشترکین RU.GAME.FLIGHT به آتش سوخت می افزایند و هر از گاهی می پرسند "چگونه می توانم صفحه کلید را رام کنم و با شادی از آن عبور کنم؟" و بدون هیچ چیز رفتن

به طور خلاصه، وظیفه دستگاه «نشستن» روی اتوبوس بین صفحه کلید و رایانه شخصی و شبیه سازی ضربه های کلید روی صفحه کلید مطابق با دکمه های فشرده شده روی دستگاه است.

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

اصول اولیه انتقال داده

همه موارد زیر در مورد صفحه کلیدهای PS/2 و AT صادق است که فقط در طراحی کانکتور متفاوت هستند (از طریق آداپتور قابل اتصال هستند).

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

اسکن کدها

کلید اسکن کد کلید اسکن کد کلید اسکن کد کلید اسکن کد
1 16 2 1E 3 26 4 25
5 2E 6 36 7 سه بعدی 8 3E
9 46 0 45 - 4E + 55
بک اسپیس 66 Tab 0D س 15 دبلیو 1D
E 24 آر 2 بعدی تی 2C Y 35
U 3C من 43 O 44 پ 4d
[ 54 ] 5B وارد 5A Ctrl(L) 14
آ 1C اس 1B دی 23 اف 2B
جی 34 اچ 33 جی 3B ک 42
L 4B ; 4C " 52 ` 0E
Shift (L) 12 \ 61 ز 1A ایکس 22
سی 21 V 2A ب 32 ن 31
م 3A , 41 . 49 / 4A
Shift(R) 59 Alt(L) 11 فضا 29 کلید Caps Lock 58
خروج 76 F1 05 F2 06 F3 04
F4 0C F5 03 F6 0B F7 83
F8 0A F9 01 F10 09 F11 78
F12 07 قفل اسکرول 7E * 7C Num Lock 77
7 6C 8 75 9 7D - 7B
4 6B 5 73 6 74 + 5A
1 69 2 72 3 7A 0 70
. 71 Alr(R) E0-11 Ctrl(R) E0-14 صفحه چاپ E0-12-E0-7C
درج کنید E0-70 حذف E0-71 ترک کرد E0-6B صفحه اصلی E0-6C
پایان E0-69 بالا E0-75 پایین E0-72 PageUp E0-7D
صفحه پایین E0-7A درست E0-74 وارد E0-5A / E0-4A

توجه: صفحه کلید AT در واقع دارای سه مجموعه مختلف اسکن کد است. من فقط مقادیر مجموعه شماره 2 - پیش فرض را داده ام.

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

کلیدهای ترکیبی با Shift، Alt و Ctrl به صورت دنباله ای از دو کد اسکن منتقل می شوند. از منظر کنترلر، این کلیدها هیچ تفاوتی با کلیدهای دیگر ندارند. به همین ترتیب، حالت‌های Num Lock و Caps Lock در سطح سخت‌افزار متفاوت نیستند - آنها در سطح نرم‌افزار با برنامه‌ای که صفحه‌کلید را قطع می‌کند، متفاوت هستند.

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

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

شرح پروتکل مبادله

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

دو خط برای تبادل داده وجود دارد - KBData و KBSync. هنگام ارسال کدهای اسکن، صفحه کلید بیت بعدی داده را روی خط KBData تنظیم می کند و با انتقال سیگنال از "1" به "0" در خط KBSync، انتقال را تایید می کند. هنگام دریافت داده از کنترلر، صفحه کلید بیت داده را از خط KBData می خواند و با انتقال سیگنال روی خط KBSync از "1" به "0" دریافت را تایید می کند. کنترل کننده می تواند عدم آمادگی خود را برای انتقال/دریافت داده با سطح پایین در خط KBSync علامت دهد. بقیه زمان ها، زمانی که هیچ داده ای برای انتقال وجود ندارد، هر دو خط دارای سطح سیگنال بالایی هستند. نرخ تکرار پالس خط KBSync حدود 10-25 کیلوهرتز است.

داده ها به ترتیب زیر منتقل می شوند: یک بیت شروع - "0"، هشت بیت داده، یک بیت برابری (مجموع همه بیت ها +1)، یک بیت توقف - "1". پس از دریافت هر بایت داده، کنترل‌کننده خط KBSync را پایین می‌آورد و به این ترتیب سیگنال می‌دهد که مشغول پردازش داده‌های دریافتی است و برای دریافت بعدی آماده نیست. این را می توان تاییدیه پذیرش در نظر گرفت. صفحه کلید هر بایت فرمان دریافتی را با صدور کد 0FAh تایید می کند. اگر در حین انتقال خطایی رخ دهد، کنترلر ممکن است با صدور فرمان 0FEh، درخواست کند که ارسال آخرین بایت تکرار شود. صفحه کلید متفاوت رفتار می کند - به سادگی خطاها را نادیده می گیرد. من هیچ چیز کشنده ای در این نمی بینم - اگر سیستم شما به طور مکرر خراب می شود، پس جایی در دسکتاپ شما ندارد.

به احتمال زیاد، توضیحات من بیش از حد گیج کننده بود، بنابراین سعی می کنم آنها را با چندین نمودار زمانی توضیح دهم.

نمای کلی انتقال داده از صفحه کلید (S1 - بیت شروع؛ S2 - بیت توقف؛ D0-D7 - داده؛ P - بیت برابری؛ W - پردازش داده های دریافتی)

نمونه ای از انتقال بایت 74 ساعت - کلید "6" در numpad. در این مثال، هنگامی که یک انتقال توسط صفحه کلید آغاز می شود، کنترلر سیگنال می دهد که آماده دریافت داده نیست و صفحه کلید منتظر می ماند تا خط KBSync آزاد شود.

پیاده سازی سخت افزار

اکنون مستقیماً به توضیحات پیاده سازی دستگاه در سخت افزار می پردازم.

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

این دستگاه بر اساس یک میکروکنترلر تک تراشه AT89C2051 ساخته شده است. میکروکنترلر Atmel AT89C2051 از خانواده MCS-51 ( آنالوگ داخلی- MK-51). تفاوت اصلی بین AT89C2051 و i8051 مصرف انرژی کمتر، کاهش تعداد خطوط ورودی/خروجی به 15 و عدم استفاده از حافظه خارجی است. بیشتر اطلاعات دقیق AT89C2051 و i8051 را می توانید در www.atmel.com و www.intel.com پیدا کنید. به جای AT89C2051، می توانید از AT89C51، i8051 (KR1816BE51) یا i8031 (KR1816BE31) با رام اکسترنال استفاده کنید. اما دو گزینه آخر به دلیل افزایش مصرف برق می توانند منجر به منفجر شدن فیوز کنترل صفحه کلید شوند.

در میکروکنترلرهای Atmel، پس از تعیین اصلی، حداکثر فرکانس ژنراتور ساعت بر حسب مگاهرتز نشان داده شده است. من به شما توصیه می کنم یک میکروکنترلر طراحی شده برای فرکانس 24 مگاهرتز و کوارتز با فرکانس بالاتر - 16-20 مگاهرتز نصب کنید.

نمودار شماتیک. (R1-R4 - 47K؛ R5 - 10K؛ C1, C2 - 18pF؛ C3 - 1uF؛ D1 - AT89C2051؛ BQ1 - کوارتز 12-24 مگاهرتز)

خط P1.4 به عنوان خروجی فعال کردن دکمه نظرسنجی استفاده می شود. این پایه ای برای توسعه های آینده است - از خطوط P1.4-P1.7 برای صدور آدرس خط برای نظرسنجی دکمه های فشار داده شده استفاده می شود (تا 16 خط از هر دکمه 4 دکمه). "0" در خط P1.0-P1.3 به این معنی است که دکمه مربوطه فشرده شده است.

عناصر C3 و R5 مداری را پیاده‌سازی می‌کنند که هنگام اعمال برق، سیگنال تنظیم مجدد تولید می‌کند.

خطوط KBData از صفحه کلید و کنترلر به ورودی های P3.2 (INT0) و P3.3 (INT1) عرضه می شوند. بنابراین، تلاش برای شروع انتقال داده از صفحه کلید یا کنترلر باعث وقفه مربوطه می شود. روال های سرویس دهی به این وقفه ها به سادگی سیگنال های مربوط به انتقال یک بایت را از طریق میکروکنترلر پخش می کنند. هنگامی که میکروکنترلر مشغول انتقال داده نیست، خطوط P1.0-P1.4 نظرسنجی می شوند، داده های دریافتی پردازش می شوند و کدهای اسکن مربوطه برای کنترل کننده صادر می شوند. این نسخه به داده های ارسال شده توسط خود دستگاه اولویت می دهد. بنابراین، گاهی اوقات داده های صفحه کلید ممکن است از بین برود.

برای پایان دادن به این بخش، پین اوت کانکتورهای صفحه کلید AT و PS/2 را ارائه می کنم.

سیگنال -KBRset یک سیگنال اختیاری است. برخی از کنترلرها ممکن است از این برای تنظیم مجدد صفحه کلید استفاده کنند.

متن سفت افزار

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

Org 0 sjmp start org 3 jmp from_keyboard ; INT0 org 13h jmp to_keyboard ; شروع حرکت INT1 a,#5 ; تنظیم نوع وقفه mov tcon,a ; INT0 و INT1 در جلو - mov a,#0 ; انتقال از "1" به "0" mov ip,a mov a,#85h mov ie,a mov a,#0ffh ; آخرین mov 6,a در آدرس 06h ذخیره می شود. کد پردازش شده clr p1.4; فعال کردن حلقه نظرسنجی mov a,p1 ; وضعیت دکمه ها و a,#15 خوانده می شود. - کم اهمیت ترین چهار بیت پورت P1. D0 - بالا؛ D1 - سمت راست؛ D2 - پایین؛ D3 - سمت چپ mov dptr,#hat_table ; خواندن اطلاعات مربوط به چهار دکمه movc a,@a+dptr ; به هشت جهت گسترش یافت. D0 - بالا؛ D1 - سمت راست؛ D2 - پایین؛ D3 - سمت چپ؛ D4 - راست به بالا؛ D5 - راست به پایین؛ D6 - چپ به پایین؛ D7 - سمت چپ mov r2,a ; ذخیره داده mov r0,a xrl a,6 ; اگر داده های جدید با حلقه jz تفاوتی نداشته باشند. دریافت شده در چرخه قبلی - تکرار نظرسنجی mov r1,#8 ; حلقه هشت بیتی loop3 jnb acc.7,loop2 ; "1" - یک تغییر وجود دارد push acc mov a,r1 mov dptr,#key_table-1 ; کد اسکن مربوطه را استخراج کنید movc a,@a+dptr push acc mov a,r0 ; ثبت R0 - علامت فشار دادن / رها کردن rlc a ; کلید شبیه سازی شده mov r0,a ; "1" - "کلید" منتشر شد pop acc mov acc.7,c ; اگر D7=1 - قبل از کد اسکن 0f0h تماس ارسال می شود. صدور یک کد اسکن pop acc sjmp loop2a loop2 push acc mov a,r0 rlc a mov r0,a pop acc loop2a rl a djnz 1,loop3 mov 6,r2 sjmp loop send_key mov ie,#80h ; وقفه غیر فعال تماس ارسال 2comp ; ارسال کد اسکن mov ie,#85h ; interrupts enabled ret send2comp jnb acc.7,send ; در صورت لزوم، 0f0h push acc mov a,#0f0h acall send pop acc clr acc.7 mov b,#200 l9 nop djnz b,l9 send push 1 push 0 clr p3.3 ; P3.3 - KBData mov b,#6 ; صدور بیت شروع l10 nop djnz b,l10 clr p3.5 mov b,#15 l2 nop djnz b,l2 setb p3.5 mov b,#6 l3 nop djnz b,l3 mov r0,#8 ; خروجی هشت بیت داده و شمارش برابری mov r1,#1 byte_loop xrl 1h,a rrc a mov p3.3,c mov b,#6 l6 nop djnz b,l6 clr p3.5 mov b,#15 l4 nop djnz b, l4 setb p3.5 mov b,#6 l5 nop djnz b,l5 djnz r0,byte_loop mov a,r1 mov c,acc.0 mov p3.3,c ; بیت برابری خروجی mov b,#6 l8 nop djnz b,l8 clr p3.5 mov b,#15 l12 nop djnz b,l12 setb p3.5 mov b,#6 l13 nop djnz b,l13 setb p3.3 ; خروجی توقف بیت mov b,#6 l7 nop djnz b,l7 clr p3.5 mov b,#15 l11 nop djnz b,l11 setb p3.5 mov b,#200 l14 nop djnz b,l14 setb p3.5 pop 0 pop 1 ret from_keyboard ; انتقال یک بایت به کنترلر mov یعنی #80h push psw push acc push b mov b,#2 in6 jnb p3. 4,in8 djnz b,in6 sjmp in7 in8 mov b,#10 in1 mov a,p3 rl a orl a,#11010111b mov p3,a jnb p3.4,in1 in2 mov a,p3 rl a orl a,#11010111b mov p3,a jb p3.4,in2 djnz b,in1 in3 mov a,p3 rl a orl a,#11010111b mov p3,a jnb p3.4,in3 mov p3,#0ffh in4 jb p3.5,in4 in5 jnb p3 .3,in7 clr p3.4 jnb p3.5,in5 in7 mov p3,#0ffh pop b pop acc pop psw mov tcon,#5 mov ie,#85h reti to_keyboard ; انتقال یک بایت به صفحه کلید mov یعنی #80h push psw push acc push b mov b, #5 out61 jb p3.5, out7 djnz b, out61 setb p3.4 setb p3.2 out62 jnb p3.5, out62 out6 mov c,p3.4 mov p3.5,c mov c,p3.3 mov p3.2,c jb p3.4,out6 out8 mov b,#10 out1 mov c,p3.4 mov p3.5,c mov c , p3.3 mov p3.2, c jnb p3.4, out1 out2 mov c, p3.4 mov p3.5, c mov c, p3.3 mov p3.2, c jb p3.4, out2 djnz b, out1 out3 mov c,p3.4 mov p3.5,c mov c,p3.2 mov p3.3,c jnb p3.2,out3 out7 mov p3,#0ffh pop b pop acc pop psw mov tcon,#5 mov یعنی #85h reti hat_table ; جدول برای گسترش داده های خوانده شده از پورت P1؛ ایندکس در جدول یک کد باینری چهار بیتی است. داده - وضعیت هشت کلید شبیه سازی شده؛ "0" - کلید فشرده db 0ffh ; چپ+راست+بالا+پایین=ترکیب ممنوع db 0ffh ; چپ+راست+پایین=ترکیب ممنوع db 0ffh ; چپ+بالا+پایین=ترکیب ممنوع db 0bfh ; چپ + پایین = چپ به پایین db 0ffh ; چپ+راست+بالا=ترکیب ممنوع db 0ffh ; چپ+راست=ترکیب ممنوع db 07fh ; چپ+بالا=چپ بالا db 0f7h ; db سمت چپ 0ffh ; راست+بالا+پایین=ترکیب ممنوع db 0dfh ; پایین+راست=پایین-راست db 0ffh ; بالا+پایین=ترکیب ممنوع db 0fbh ; پایین db 0efh ; راست+بالا=راست بالا db 0fdh ; راست db 0feh ; تا db 0ffh ; بدون دکمه فشرده key_table ; جدول کد اسکن db 75h; numpad 8 db 74h ; numpad 6 db 72h ; numpad 2 db 6bh ; numpad 4 db 7dh ; numpad 9 db 7ah ; numpad 3 db 69h ; numpad 1 db 6ch ; numpad 7

در آرشیو tools.zip دو برنامه پیدا خواهید کرد: a51.exe - یک اسمبلر، hex2bin - یک تبدیل فایل های هگز، که در خروجی اسمبلر به دست می آیند، به فرمت باینری مناسب برای فلش کردن رام میکروکنترلر با برنامه نویس. .

مونتاژ و عیب یابی

می توانید دستگاه را طبق نمودار بالا بر روی تخته نان، تخته ای که در منزل حک شده و یا به صورت صنعتی ساخته شده است مونتاژ کنید. یک سوکت باید زیر میکروکنترلر قرار داده شود. بهتر است فضایی روی برد برای بسته های 2-3 16 پین DIP بگذارید - آنها در نسخه های بعدی اضافه خواهند شد.

در مرحله بعد، پس از انجام تغییرات مورد نظر، متن منبع ریز برنامه با استفاده از برنامه a51.exe مونتاژ می شود. برای فلش کردن فریمور با برنامه نویس، فایل هگز به دست آمده توسط برنامه hex2bin.exe به یک تصویر باینری تبدیل می شود.

پس از مونتاژ کامل دستگاه، آن را به صفحه کلید و کامپیوتر متصل می کنیم. سه... دو... یک... برویم!.. دستگاهی که به درستی از اجزای خوب شناخته شده مونتاژ شده باشد باید فوراً کار کند. اگر نه، نصب صحیح و وجود برق روی میکروکنترلر را بررسی کنید. با استفاده از یک اسیلوسکوپ، بررسی کنید که آیا ژنراتور ساعت شروع به کار کرده است یا خیر و آیا هنگام روشن شدن برق، یک پالس سطح بالا به ورودی RST می رسد یا خیر. هنگام فشار دادن کلیدهای روی صفحه کلید، پالس های خطوط P3.3 و P3.5 باید به ترتیب در خطوط P3.2 و P3.4 با کمی تأخیر تکرار شوند. هنگامی که دکمه‌های دستگاه را فشار می‌دهید/رها می‌کنید، پالس‌ها نیز باید در خطوط P3.3 و P3.5 ظاهر شوند. اگر این کمکی نکرد، برای من بنویسید ( راشپیلدر بندرنقطه ru) گزارش اشکال، نشان دهنده مدل و نوع (AT, PS/2) صفحه کلید، مادربرد/مولتی کارت، میکروکنترلر استفاده شده و فرکانس استفاده شده تشدید کننده کوارتز. سعی کردم دستگاه را با حداکثر تعداد موجود تست کنم مادربردهاو صفحه کلید - هیچ مشکلی شناسایی نشد. در مورد من، کوارتز 14.2 مگاهرتز استفاده شد.

اشکالات شناخته شده

نسخه فعلی سیستم عامل دارای نقص های زیر است:

  • کدهای اسکن دو بایتی ردیابی نمی شوند. این منجر به این واقعیت می شود که گاهی اوقات، هنگام استفاده از کلبه و صفحه کلید به طور همزمان، کلیدهای صفحه کلید هنگام فشار دادن یا درک نادرست "یخ می زنند".
  • گاهی اوقات داده ها به اشتباه از کنترلر به صفحه کلید منتقل می شوند. این را می توان به عنوان مثال در این واقعیت بیان کرد که LED ها با فشار دادن کلیدهای Num Lock، Caps Lock، Scroll Lock وضعیت خود را تغییر نمی دهند.
  • صدا دادن تماس های دکمه های کلبه. تا کنون این برای من در بازی کشنده نبوده است.

برنامه های آینده

در اینجا لیست کوتاهی از آنچه می خواهم در نسخه های بعدی پیاده سازی کنم آورده شده است:

  • رفع اشکالات جزئی - پردازش سیگنال صحیح تر. ردیابی کدهای اسکن دو بایتی؛
  • اتصال ماتریس 16x4 - پشتیبانی از حداکثر 64 دکمه یا دو کلبه و حداکثر 56 دکمه.
  • پشتیبانی از حداکثر 16 طرح بندی کد اسکن مختلف ذخیره شده در رام میکروکنترلر.
  • اتصال یک تراشه NVRAM با قابلیت ذخیره و برنامه‌ریزی مجدد "در حال پرواز" تا 32 طرح کد اسکن.

نتیجه

من سعی کردم تمام داده های لازم برای درک اصل عملکرد دستگاه خود را ارائه دهم. این توصیف ادعا نمی کند که 100٪ از نظر فنی دقیق است. اگر در مورد چیزی اشتباه می کنم، لطفاً نسخه خود را از رویدادها به من بگویید. اگر می توانید بهبودها و اضافاتی را در مدار و/یا سیستم عامل من انجام دهید، اگر ایده هایی برای توسعه بیشتر مدار دارید، لطفاً به من نیز اطلاع دهید. علاوه بر این، منتظر اطلاعاتی از صنعتگرانی هستم که توانسته اند این دستگاه را برای انواع دیگر میکروکنترلرها تکثیر یا تطبیق دهند.

ولادیمیر "راسپ" کلیموس (راشپیلدر ukrنقطه خالص)

  1. در بالای پنجره Google Play وجود دارد رشته جستجو. این دقیقاً همان چیزی است که ما استفاده خواهیم کرد. ما نام اپلیکیشن خود را فعال کرده و می نویسیم. لازم نیست تمام مسیر را وارد کنید. به محض اینکه شی مشخص شده در اسکرین شات در نتایج جستجو ظاهر شد، به سادگی روی آن ضربه بزنید.
  1. ما به صفحه اصلی برنامه هدایت می شویم. یک دکمه سبز بزرگ وجود دارد که می گوید "INSTALL". روی آن کلیک کنید.
  1. ما منتظر هستیم تا دانلود برنامه به پایان برسد. از آنجایی که وزن آن کمتر از 5 مگابایت است، فرآیند زمان زیادی را نمی گیرد.
  1. آماده. پس از اتمام نصب خودکار، می‌توانیم برنامه را مستقیماً از اینجا اجرا کنیم.
  1. همچنین در صفحه اصلی(اگر در تنظیمات فعال شده باشد) میانبر راه اندازی ظاهر می شود.

در این مرحله نصب برنامه به پایان رسیده است و می توانیم به بررسی کلی کار با آن بپردازیم.

در اسکرین شات زیر مشاهده می کنید رابط نرم افزاری. در اینجا به 3 تب اصلی تقسیم می شود. همچنین یک نماد تنظیمات ساخته شده به شکل چرخ دنده وجود دارد. در برگه اصلی "SCAN" 4 ابزار اصلی وجود دارد:

  • اسکن بارکد این یک اسکنر QR است که از طریق دوربین کار می کند.
  • کلید ورودی دستی عملکرد ورود اطلاعات کد دستی.
  • رمزگشایی از فایل رمزگشایی از یک فایل از اینجا می توانید کد QR دانلود شده قبلی را باز کرده و آن را بخوانید.
  • رمزگشایی از آدرس اینترنتی اسکن با لینک

در پایین چندین دکمه وجود دارد که عملکرد مفیدی را ارائه نمی دهند. شما نباید به آنها توجه کنید.

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

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

به محض اینکه بخواهیم اسکن را شروع کنیم و خود اسکنر را راه اندازی کنیم، برنامه درخواست دسترسی به منابع سیستم لازم را می دهد. طبیعی است که باید حل شود. روی دکمه مشخص شده در اسکرین شات کلیک کنید.

در مرحله بعد، قاب اسکنر را طوری قرار می دهیم که نوار افقی مستقیماً روی QR بیفتد. سعی کنید دست خود را تکان ندهید و در عین حال مراقب تمرکز خود باشید. بدون وضوح معمولی، اسکن موفق نخواهد شد.

برای فعال کردن اسکنر بارکد QR برای عملکرد در شرایط کم نور، یک نور پس زمینه وجود دارد.

پس از شناسایی کد، اطلاعات نشان داده شده در تصویر زیر را مشاهده خواهید کرد.

علاوه بر اسکن QR ها، می توانید آنها را نیز در اینجا ایجاد کنید. برای این کار به تب سوم بروید. ما آن را در اسکرین شات علامت گذاری کردیم. این لیست همه انواع داده هایی را که می توان رمزگذاری کرد را نشان می دهد. موارد زیر پشتیبانی می شود:

  • تماس دفترچه تلفن؛
  • شماره تلفن؛
  • URL;
  • پست الکترونیک؛
  • کاربرد؛
  • محل؛
  • هر متنی؛
  • نشانک؛
  • رویداد تقویم

همه چیز به این شکل است:

هنگامی که نوع داده انتخاب و مشخص شد، تنها کاری که باید انجام دهیم این است که روی دکمه "Encode" کلیک کنیم. در این صورت لینک را رمزگذاری کرده ایم.

بیایید سعی کنیم متن دلخواه را نیز رمزگذاری کنیم. برای انجام این کار، مورد مورد نظر را انتخاب کنید.

عبارت را در قسمت مشخص شده وارد کنید و دکمه "Encode" را فشار دهید.

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

سایه مورد نظر را از پالت انتخاب کنید.

و ما QR دریافتی را تحسین می کنیم.

بیایید به سراغ برنامه بعدی برویم که عملکرد چشمگیری نیز دارد.

اسکنر کد QR Droid

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

این همان چیزی است که میانبر راه اندازی QR Droid Code Scanner به نظر می رسد - روی آن کلیک کنید.

این برنامه، بر خلاف برنامه قبلی، به زبان روسی ساخته شده است و به محض شروع، باید روی دکمه ای کلیک کنیم که می گوید: "شروع کنید".

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

در منوی اصلی 6 تایل دکمه ای قابل مشاهده است که کاربر را به قسمت مورد نظر هدایت می کند. آن ها اینجا هستند:

بنابراین، برای استفاده از اسکنر، باید آن را در منوی اصلی فعال کنید و با اشاره به کد QR، دکمه "خواندن" را فشار دهید.

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

بعد می توانیم مکانیسم اسکن را نصب کنیم. یکی از الگوریتم های اختصاصی استفاده می شود: Zapper یا ZXing. در زیر می توانید crosshair را فعال یا غیرفعال کنید، پیکربندی کنید عمل خودکارپس از اسکن و فعال کردن نمایش نکات ابزار یا کپی کردن پیوند به کلیپ بورد.

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

سپس قادر به صادرات یا واردات خواهیم بود نسخه پشتیبانیا تاریخ تعیین کنید

اجازه ارسال داده های ناشناس را بدهید (بهتر است غیرفعال شود)، تأیید پیوند امنیتی دریافت شده در حین اسکن را فعال کنید، یا اسکن دسته ای را پیکربندی کنید. ویژگی هایی مانند بزرگنمایی یا برجسته سازی در زیر موجود است.

اما تنظیمات ما به همین جا ختم نمی شود. علاوه بر توابع فوق، موارد زیر را نیز داریم:

  • تنظیم جهت صفحه نمایش؛
  • کار با دوربین جلو؛
  • تجزیه پیوند؛
  • نمایش فروشگاه ها
  • عملکرد لغزش گسترده؛
  • ممنوعیت برخی از شخصیت های خاص؛
  • فعال سازی پیش نمایش وب؛
  • جستجوی تصاویر ذخیره شده

آخرین صفحه تنظیمات شامل ویژگی های جالبی مانند تنظیم حداکثر تعداد موقعیت ها، پیکربندی CSV های سفارشی، تکان دادن ساعت هوشمند و ذخیره موقعیت های تکراری است.

علاوه بر تنظیمات، در منوی QR Droid Code Scanner موردی به نام "بیشتر" وجود دارد. بیایید عملکرد آن را در نظر بگیریم.

در اینجا احتمالات زیر وجود دارد:

بیایید به آخرین، اما نه کمتر کاربردی، برنامه در لیست خود نگاه کنیم.

NeoReader QR و بارکد اسکنر

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

اولین باری که راه اندازی می کنیم، باید درخواست دسترسی را برآورده کنیم. روی “ALLOW” کلیک کنید.

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

در واقع می توانید اسکن را شروع کنید. دوربین خود را به سمت کد QR بگیرید و NeoReader QR & Barcode Scanner به طور خودکار محتوای آن را تشخیص می دهد.

ما فکر می کنیم که این سه برنامه برای هر شخصی کاملاً کافی است. یکی را انتخاب کنید که برای شما راحت تر است و به صلاحدید خود از آن استفاده کنید. ما در مورد برخی از ویژگی های دستگاه های چینی صحبت خواهیم کرد.

عملکرد استاندارد

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

بیایید آن را جمع بندی کنیم

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

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

آموزش تصویری




بالا