استفاده از پورت سریال در لینوکس

۲۱/۰۸/۲۰۱۵

برای استفاده از پورت Serial در لینوکس برنامه های مختلفی توسعه داده شده اند . مشهورترین برنامه minicom نام دارد که تقریبا در مخازن تمامی توزیع های معروف قابل دسترس است . در توزیع ARCH-Linux برنامه دیگری بنام dterm نیز وجود دارد .در این نوشته ابتدا با برنامه minicom یک پورت Serial باز میکنیم تنظیمات پورت Serial را در این برنامه یاد میگیریم . و در انتها با استفاده از تابع system در زبان برنامه نویسی c ، از برنامه dterm در برنامه نوشته شده خودمان استفاده میکنیم . ( روش استاندارد استفاده از fork و exec میباشد . )

ابتدا با خواندن فایل dmesg شماره پورت serial خود را پیدا میکنیم :

~/P/nutshell ❯❯❯ dmesg | grep tty
[    ۰٫۰۰۰۰۰۰] console [tty0] enabled
[    ۰٫۴۷۵۱۱۷] ۰۰:۰۳: ttyS0 at I/O 0x3f8 (irq = 4, base_baud = 115200) is a 16550A
[    ۵٫۶۰۸۶۱۲] systemd[1]: Created slice system-getty.slice.
[    ۸٫۹۴۹۷۳۱] usb 2-2: FTDI USB Serial Device converter now attached to ttyUSB0

که پورت Serial مورد‌نظر در آدرس dev/ttyUSB0/ قرار دارد . در صورتیکه قبل از اتصال مبدل USb به Serial از دستور dmesg |grep tty استفاده کنیم و بعد از اتصال مبدل نیز همین دستور را وارد کنیم ، به راحتی میتوان پورت سریال جدیدا اضافه شده را بدست آورد .

برنامه minicom را نصب میکنیم :
در توزیع های مبتنی بر دبیان

sudo apt-get update
sudo apt-get install minicom

در آرچ لینوکس

sudo pacman -Sy
sudo pacman -S minicom

سپس با تایپ کردن

 sudo minicom -s

وارد برنامه minicom میشویم .
با توجه به اینکه دسترسی به پورت Serial باید حتما توسط کاربر root انجام بگیرد ، در صورتیکه بدون تایپ sudo از این برنامه استفاده کنیم ، پورت Serial باز نخواهد شد و تلاش ما بی فایده خواهد بود .
minicom1
در قسمت Serial port setup میتوانیم تنظیمات مربوط به پورت سریال را انجام دهیم :

minicom2
با زدن کلید A میتوانیم آدرس پورت سریال را تغییر دهیم . با زدن کلید B محل Lockfile را به var/lock/ تغییر میدهیم . در صورت علاقه به تغییر Baud Rate کلید E را میزنیم و در صورت کنترل جریان -Flow Control- کلیدهای F و G این تنظیمات را برای ما انجام میدهند .

در انتها با خروج از صفحه تنظیمات و بازگشت به صفحه اصلی برنامه minicom با انتخاب exit برنامه آماده کار خواهد بود .

برنامه dterm :

برنامه سبکتر و ساده تر دیگر برنامه dterm میباشد . برنامه dterm در خط فرمان اجرا شده و پارامترهای آن توسط آرگومانهای خط فرمان به تابع پاس داده می‌شوند . مثلا برای تنظیمات Baud Rate برابر ۹۶۰۰ و طول فریم ۸ بیت و بدون پریتی چک و ۱ بین Stop در برنامه dterm بصورت زیر عمل میکنیم :

sudo dterm /dev/ttyUSB0 9600 8 n 1 

برای استفاده از برنامه dterm در برنامه خود ، به سادگی میتوانیم با استفاده از system برنامه dterm را به همراه آرگومانهای آن فراخوانی کنیم :

#include<stdlib.h>
int main (){

int return_value;
return_value = system("dterm /dev/ttyUSB0 9600 8 n 1 ");
return return_value;
}

بعد از اجرای dterm با فشار دادن کلید های/ و [+ctrl میتوانیم وارد command mode بشویم . با تایپ کاراکتر q میتوانیم از برنامه خارج شویم . لیست دستورات بشرح زیر است :


The following options can be used from command mode

- ۳۰۰, ۱۲۰۰, ۹۶۰۰ etc: Set speed, default 9600.
- ۵, ۶, ۷, ۸: Set bits per character, default 8.
- ۱, ۲: Set number of stop bits, default 1.
- e, o, n, m, s: Set parity to even, odd, none, mark or space, default none.
- cts, nocts: Enable / disable CTS flow control, default nocts.
- xon, noxon: Enable / disable XON/XOFF flow control, default noxon.
- modem: Enable / disable modem control (hang up modem on exit, exit if
modem hangs up), default nomodem.
- bs, nobs: Enable / disable mapping of Delete to Backspace, default nobs.
- del, nodel: Enable / disable mapping of Backspace to Delete, default nodel.
- maplf, nomaplf: Enable / disable mapping of LF to CR, default nomaplf.
- igncr, noigncr: Ignore / output carriage returns, default noigncr.
- crlf, nocrlf: Enable / disable sending LF after each CR, default nocrlf.
- ctrl, noctrl: Enable / disable control character display mode. In this
mode, non-printable characters are displayed as ^c for the codes 0-31 (except
CR, LF &amp;amp; TAB), [DEL] for 127, or [xx] for non-printing characters &amp;gt;= 128.
- hex, nohex: As for ctrl, but prints [xx] for all characters except 7-bit
printable ASCII, CR and LF.
- b: Send a 500 ms break.
- dtr, nodtr: Raise / lower DTR, default dtr.
- rts, norts: Raise / lower RTS, default rts.
- d, r: Toggle DTR / RTS.
- esc=&amp;lt;c&amp;gt;: Set command mode character to Ctrl/&amp;lt;c&amp;gt; (default ']')
- @&amp;lt;filename&amp;gt;: Read and process configuration from &amp;lt;filename&amp;gt;.
- !&amp;lt;command&amp;gt;: Execute shell command
- sx &amp;lt;filename&amp;gt;: Send a file using XMODEM.
- rx &amp;lt;filename&amp;gt;: Receive a file using XMODEM.
- sz &amp;lt;filename&amp;gt;: Send a file using ZMODEM.
- rz: Receive file(s) using ZMODEM.
- show: Display current configuration and modem status.
- help, h, ?: Display a summary of commands.
- version: Display version, copyright and warranty information.
- quit, q: Exit

برای آشنایی به برنامه minicom از سایت die.net میتوانید استفاده کنید .
Source برنامه dterm از اینجا قابل دانلود است .

Leave a Comment

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *