Skip to content

Instantly share code, notes, and snippets.

@geminorum
Last active July 30, 2019 14:14
Show Gist options
  • Save geminorum/c7ef52823205aa9999666906d0898862 to your computer and use it in GitHub Desktop.
Save geminorum/c7ef52823205aa9999666906d0898862 to your computer and use it in GitHub Desktop.
علی آرش خداداد ۱۳۸۴
کد ۱۲۸ امکان کد گذاری همهٔ ۱۲۸ حرف مربوط به مجموعه کاراکترهای کد اسکی را ارائه می‌کند. این کد با استفاده از خطوط و فضاهای خالی با ۴ پهنای مختلف، به بیشترین فشردگی ممکن سمبل‌ها نسبت به روش‌های قدیمی‌تر خود که از خطوط و فضاهای خالی با ۲ ضخامت مختلف استفاده می‌کردند، رسیده است

کد ۱۲۸ ممکن است به صورت دو طرفه (از هر دو جهت) اسکن شود و محدودیتی هم برای تعداد کاراکترها در هر بارکد وجود ندارد. هر چند ممکن است طول بارکد با توجه به نوع اسکنر مورد استفاده و یا مکان مورد نظر برای چاپ بارکد محدود شود. اما این روش محدودیتی برای طول بارکد ایجاد شده ندارد.

کد ۱۲۸ سه مجموعه کاراکتری متفاوت دارد که در جدول مشخصات بارکد به نام‌های Code Set A و Code Set B و Code Set C مشخص شده است. هر کدام از این سه مجموعه کد می‌تواند با کاراکتر شروع مربوط به خودش مورد انتخاب واقع شود. کاراکتر خاص «shift» در هر مجموعه به شما امکان می‌دهد تا بتوانید در بین یک کد ست از کد ست‌های دیگر هم استفاده کنید با این توصیف امکان استفاده ازچند کد ست در یک بار کد وجود دارد. با استفاده از این روش طول بارکد چاپ شده می‌تواند به کمترین حد ممکن خود برسد.

در صورتی که داده‌ها فقط شامل اعداد باشد استفاده از مجموعه کد C باعث می‌شود تا طول بارکد چاپ شده به کمترین حد ممکن تقلیل پیدا کند. البته باید این نکته را در نظر داشته باشید که برای استفاده از Code Set C بایستی تعداد ارقام رشته ای که می‌خواهید بارکد آن را چاپ کنید زوج بوده و حداقل ۴ رقم و یا بیشتر طول داشته باشد.

هر کدام از مجموعه کدهای A، B، C یک یا چند کاراکتر برای توابع خاص رزرو کرده اند

از ویژگی‌های کد ۱۲۸ استفاده از رقم کنترل برای بررسی صحت بارکد خوانده شده توسط دستگاه اسکنر بارکد می‌باشد.

ساختار بارکد ۱۲۸ به صورت زیر است

- یک فضای یکنواخت و یا خالی در سمت چپ خطوط بارکد - کاراکتر شروع - تعداد نامحدودی از داده‌ها - رقم کنترل صحت - کاراکتر خاتمه - یک فضای یکنواخت و یا خالی در سمت راست خطوط بارکد - پهنای فضای یکنواخت و یا خالی حداقل باید ۱۰ برابر پهنای نازکترین خط / نازکترین فاصله خالی در بارکد باشد.

هر کاراکتر در بارکد ۱۲۸‌ترکیبی از ۳ خط و ۳ فاصله است. (کاراکتر خاتمه دارای ۴ خط و ۳ فاصله می‌باشد). هر خط / فاصله خالی می‌تواند یکی از ۴ واحد پهنای مختلف را داشته باشد. نازکترین خط / فاصله خالی باید یک چهارم پهن‌ترین خط/ فاصله خالی باشد. جدول مشخصات بارکد پهنای خط/ فاصله خالی برای همه مجموعه کاراکترهای مربوط به کد ۱۲۸ را نشان می‌دهد. دقت کنید که مجموع پهنای خطوط در هر یک از کاراکتر‌ها عددی زوج و مجموع فواصل خالی برای هر کدام از کاراکترها عددی فرد است. اولین ستون در جدول با عنوان «value» حاوی عددی است که برای محاسبه رقم کنترل بکار می‌رود.

نحوه محاسبه رقم کنترل

رقم کنترل عبارت است از باقیمانده مجموع ارزش عددی محاسبه شده برای رشته قابل تبدیل تقیسم بر عدد ۱۰۳. برای محاسبه مجموع ارزش عددی رشته قابل تبدیل مقدار مربوط به کاراکتر شروع را با حاصلضرب موقعیت هر کاراکتر در مقدار مربوط به آن جمع می‌کنید و در نهایت عدد حاصل را به ۱۰۳ تقسیم می‌کنیم. باقیمانده بدست آمده از این تقسیم مقدار مربوط به کاراکتر رقم کنترل می‌باشد که باید در انتهای کاراکترها و قبل از کاراکتر Stop آورده شود.

فرض کنید بخواهید عبارت Code ۱۲۸ را به بارکد تبدیل کنید. در صورتی که بخواهید از کاراکتر ست B برای این منظور استفاده کنید.

  حرف مقدار مقدار مجموع
كاراكتر شروع كد ست B Start B 104 104
موقعيت 1 C 35 35 = 1*35
موقعيت 2 o 79 158= 2*79
موقعيت 3 d 68 204= 3*68
موقعيت 4 e 69 276 = 4*69
موقعيت 5   0 0= 5*0
موقعيت 6 1 17 102= 6*17
موقعيت 7 2 18 126 = 7 * 18
موقعيت 8 8 24 192 = 8 * 24
جمع كل 1197

11=103/1197 و باقیمانده برابر 64 است. بنابراین رقم کنترل برابر کاراکتری است که عدد موجود در ستون مقدار آن برابر 64 باشد.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment