انجمن کاربران لینوکس ایران - تکنوتاکس سابق

نسخه ي کامل: ارتباط با پورت سریال در لینوکس با استفاده از زبان جاوا
شما در حال مشاهده نسخه ي متني اين صفحه هستيد. مشاهده نسخه کامل تر با قالب بندي صحيح
سلام دوستان
امیدوارم هر جا هستیدخوب و سلامت باشید
من سعی دارم برنامه ای برای اتصال به \ورت سریال در لینوکس با استفاده از زبان جاوا بنویسیم
پس از جستجو و مطالعه منابعُ دو فایل RXTXcomm.jar و comm.jar را به پروژه جاوا اضافه کردم و برنامه زیر را در mainبرنامه قرار میدهم
کد :
String wantedPortName = "/dev/ttya";
///dev/ttyS0 و /dev/ttyS1 نیز تست شد
Enumeration portIdentifiers = CommPortIdentifier.getPortIdentifiers();
CommPortIdentifier portId = null;  // will be set if port found
while (portIdentifiers.hasMoreElements())
{
    CommPortIdentifier pid = (CommPortIdentifier) portIdentifiers.nextElement();
    if(pid.getPortType() == CommPortIdentifier.PORT_SERIAL &&
       pid.getName().equals(wantedPortName))
    {
        portId = pid;
        break;
    }
}
if(portId == null)
{
    System.err.println("Could not find serial port " + wantedPortName);
    System.exit(1);
}
ولی متاسفانه خروجی تابع portIdentifiers.hasMoreElements() برابر falseمیباشد و بنابراین برنامه به درستی کار نمیکند
خواهش میکنم در صورت امکان راهنمایی بفرمایید
با تشکر
منابع مورد استفاده:
<!-- m --><a class="postlink" href="http://en.wikibooks.org/wiki/Serial_Programming/Serial_Java">http://en.wikibooks.org/wiki/Serial_Pro ... erial_Java</a><!-- m -->

<!-- m --><a class="postlink" href="http://www.agaveblue.org/howtos/Comm_How-To.shtml">http://www.agaveblue.org/howtos/Comm_How-To.shtml</a><!-- m -->

<!-- m --><a class="postlink" href="http://blog.omidbiz.com/omidplanet/entry/send_sms_via_java">http://blog.omidbiz.com/omidplanet/entr ... s_via_java</a><!-- m -->
<!-- m --><a class="postlink" href="http://www.geeksville.com/~kevinh/linuxcomm.html">http://www.geeksville.com/~kevinh/linuxcomm.html</a><!-- m -->
<!-- m --><a class="postlink" href="http://rxtx.qbang.org/wiki/index.php/Main_Page">http://rxtx.qbang.org/wiki/index.php/Main_Page</a><!-- m -->
<!-- m --><a class="postlink" href="http://rxtx.qbang.org/wiki/index.php/Installation_on_Linux">http://rxtx.qbang.org/wiki/index.php/In ... n_on_Linux</a><!-- m -->

اطلاعات : سیستم عامل : ubuntu 12
محیط برنامه نویسی : netbeans
نسخه جاوا : java-7-openjdk
اینها را با یوزر روت در شل تست کن ببین کدوم جواب میده.
کد :
echo "hello" > /dev/ttyS0
echo "hello" > /dev/ttyS1
echo "hello" > /dev/ttyS2
echo "hello" > /dev/ttyS3
echo "hello" > /dev/ttyS4

مثلا روی لپتاب من echo "hello" > /dev/ttyS4 کار میده و اگر بزنم cat /dev/ttyS4 رشته hello چاپ میشه
سلام
ممنون از جوابی که دادین
خروجی دستوراتی که فرمودید به همراه یکسری دستورات زیر که فکر کردم ممکنه به درد بخورن را براتون گذاشتم
ممنون

کد :
t3nano@t3nano-K42JP:~$ sudo echo "hello" > /dev/ttyS1
[sudo] password for t3nano:
echo: write error: Input/output error
t3nano@t3nano-K42JP:~$ sudo echo "hello" > /dev/ttyS2
echo: write error: Input/output error
t3nano@t3nano-K42JP:~$ sudo echo "hello" > /dev/ttyS3
echo: write error: Input/output error
t3nano@t3nano-K42JP:~$ sudo echo "hello" > /dev/ttyS4
echo: write error: Input/output error
t3nano@t3nano-K42JP:~$ sudo echo "hello" > /dev/ttyS5
echo: write error: Input/output error
t3nano@t3nano-K42JP:~$ sudo echo "hello" > /dev/ttyS0
echo: write error: Input/output error
t3nano@t3nano-K42JP:~$ ls /dev/tty*
/dev/tty    /dev/tty23  /dev/tty39  /dev/tty54      /dev/ttyS10  /dev/ttyS26
/dev/tty0   /dev/tty24  /dev/tty4   /dev/tty55      /dev/ttyS11  /dev/ttyS27
/dev/tty1   /dev/tty25  /dev/tty40  /dev/tty56      /dev/ttyS12  /dev/ttyS28
/dev/tty10  /dev/tty26  /dev/tty41  /dev/tty57      /dev/ttyS13  /dev/ttyS29
/dev/tty11  /dev/tty27  /dev/tty42  /dev/tty58      /dev/ttyS14  /dev/ttyS3
/dev/tty12  /dev/tty28  /dev/tty43  /dev/tty59      /dev/ttyS15  /dev/ttyS30
/dev/tty13  /dev/tty29  /dev/tty44  /dev/tty6       /dev/ttyS16  /dev/ttyS31
/dev/tty14  /dev/tty3   /dev/tty45  /dev/tty60      /dev/ttyS17  /dev/ttyS4
/dev/tty15  /dev/tty30  /dev/tty46  /dev/tty61      /dev/ttyS18  /dev/ttyS5
/dev/tty16  /dev/tty31  /dev/tty47  /dev/tty62      /dev/ttyS19  /dev/ttyS6
/dev/tty17  /dev/tty32  /dev/tty48  /dev/tty63      /dev/ttyS2   /dev/ttyS7
/dev/tty18  /dev/tty33  /dev/tty49  /dev/tty7       /dev/ttyS20  /dev/ttyS8
/dev/tty19  /dev/tty34  /dev/tty5   /dev/tty8       /dev/ttyS21  /dev/ttyS9
/dev/tty2   /dev/tty35  /dev/tty50  /dev/tty9       /dev/ttyS22
/dev/tty20  /dev/tty36  /dev/tty51  /dev/ttyprintk  /dev/ttyS23
/dev/tty21  /dev/tty37  /dev/tty52  /dev/ttyS0      /dev/ttyS24
/dev/tty22  /dev/tty38  /dev/tty53  /dev/ttyS1      /dev/ttyS25
t3nano@t3nano-K42JP:~$ sudo echo "hello" > /dev/tty0
bash: /dev/tty0: Permission denied

t3nano@t3nano-K42JP:~$ sudo echo "hello" > /dev/tty
hello

t3nano@t3nano-K42JP:~$ sudo echo "hello" > /dev/tty5
bash: /dev/tty5: Permission denied
t3nano@t3nano-K42JP:~$ ^C
t3nano@t3nano-K42JP:~$ sudo adduser t3nano dialout
The user `t3nano' is already a member of `dialout'.
خروجی دستور زیر رو بزارید :
کد :
grep tty /var/log/message
البته امکان داره به جای فایل message شما syslog داشته باشید
کد :
grep tty /var/log/syslog