یک بخش مهم در برنامه نویسی برای سخت افزار های جانبی که به کامپیوتر متصل می شوند ساخت رابط نرم افزاری مناسب برای اینجور سخت افزار هاست اگر شما علاقه به روباتیک یا الکترونیک داشته باشید حتما براتون اتفاق افتاده که بخواهید یک سخت افزار ساخت خودتون رو به کامپیوتر شخصیتون متصل کنید برای این کار راهی نیست بجر اینکه خودتون آستین ها رو بالا بزنید و شروع کنید به کد نویسی…
در سیستم عامل لینوکس که برای برنامه نویس ها و به دست برنامه نویس ها خلق شده این امکان به خوبی تعبیه شده که شما بتونید به راحتی برای پورت های کامپیوتری مانند پورت موازی ( Parallel Port ) پورت سریال (Serial Port ) و همینطور پورت USB و پورت درگاه بازی و غیره برنامه تهیه کنید در این نوشتار قصد دارم نحوه کد نویسی و ساخت یک برنامه برای کنترل پورت موازی رو شرح بدم:
پورت موازی:
پورت موازی یا رابط سنترونیک یک پورت 25 پین هست که در ابتدا برای ارتباط چاپگر به کامپیوتر ایجاد شده و امکانات خوبی برای اتصال چاپگر به این پورت در اون تعبیه شده است در نمای زیر می تونید آرایش پین های این پورت رو ببینید:

| D25- Pin Number | Centronics 36 Pin Number | Function |
| 1 | 1 | Strobe |
| 2 to 9 |
2 to 9 |
Data Lines |
| 10 | 10 | Acknowledgement |
| 11 | 11 | Busy |
| 12 | 12 | Out of Paper |
| 13 | 13 | Select |
| 14 | 14 | Auto feed |
| 15 | 15, 32 | Error |
| 16 | 16, 31 | Init |
| 17 | 17, 36 | Select In |
| 18 to 25 | 18 to 30, 33 | GND |
| - | 34, 35 | N/C |
| Register | LPT1 | LPT2 |
| Data register (Base Address + 0) | 0×378 | 0×278 |
| Status register (Base Address + 1) | 0×379 | 0×279 |
|
Control register (Base Address + 2) |
0×37a | 0×27a |
در لینوکس یک فراخوانی سیستمی به نام ioperm وجود دارد که به شما اجازه دسترسی به پورت ها را می دهد جهت استفاده از این فذاخوانی سیستمی و نحوه کد نویسی آن به مثال زیر توجه کنید:
#include “stdio.h”
#include “stdlib.h”
#include “unistd.h”
#define base 0×378 /* printer port base address */
#define value 255 /* numeric value to send to printer port */
main(int argc, char **argv)
{
if(ioperm(base,1,1))
fprintf(stderr, “Couldn’t get the port at %x\n”, base), exit(1);
outb(value, base);
}
تابع outp دو آرگومان دارد که اولی مقداری است که در پورت می ریزیم و دومی آدرس پورت است.
برای کامپایل برنامه بالا بعد از ذخیره آن با نام lpt_test.c دستور زیر را اجرا کنید:
gcc -O lpt_test.c -o lpt_test
برای اجرای برنامه فوق شما باید با مجوز مدیر ( ROOT ) به سیستم وارد شوید در صورتی که می خواهید اجازه اجرای این برنامه را فقط با مجوز owner صادر کنید از دستور زیر باید استفاده کنید:
chmod +s lpt_test
برنامه بالا عدد 255 را بر روی پورت پارالل می نویسد برای تست برنامه فوق کافی است یک مالتی متر داشته باشید و پین های 1 تا 9 پورت پارالل کامپیوتر خود را چک کنید خواهید دید که همه آنها با مقدار 5 ولت ( یا یک منطقی ) مقدار دهی شده اند شما همین کار را می توانید با LED ها نیز انجام دهید…
برای اینکه برنامه خود را به صورت گرافیکی و مبتنی بر محیط X طراحی کنید می توانید از کتابخانه gtk استفاده نماید و برای برنامه خود ظاهری کاربر پسند بسازید.
برای توضیحات بیشتر اینجا رو ببینید.