انجمن‌های فارسی اوبونتو

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید

نویسنده موضوع: ارتباط با پورت سریال در لینوکس با استفاده از زبان جاوا  (دفعات بازدید: 3771 بار)

0 کاربر و 1 مهمان درحال مشاهده موضوع.

آفلاین t3.nano

  • Newbie
  • *
  • ارسال: 9
سلام دوستان
امیدوارم هر جا هستیدخوب و سلامت باشید
من سعی دارم برنامه ای برای اتصال به \ورت سریال در لینوکس با استفاده از زبان جاوا بنویسیم
پس از جستجو و مطالعه منابعُ دو فایل 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میباشد و بنابراین برنامه به درستی کار نمیکند
خواهش میکنم در صورت امکان راهنمایی بفرمایید
با تشکر
منابع مورد استفاده:
http://en.wikibooks.org/wiki/Serial_Programming/Serial_Java

http://www.agaveblue.org/howtos/Comm_How-To.shtml

http://blog.omidbiz.com/omidplanet/entry/send_sms_via_java
http://www.geeksville.com/~kevinh/linuxcomm.html
http://rxtx.qbang.org/wiki/index.php/Main_Page
http://rxtx.qbang.org/wiki/index.php/Installation_on_Linux

اطلاعات : سیستم عامل : ubuntu 12
محیط برنامه نویسی : netbeans
نسخه جاوا : java-7-openjdk
 
« آخرین ویرایش: 15 شهریور 1392، 11:29 ب‌ظ توسط t3.nano »

آنلاین nixoeen

  • ناظر انجمن
  • *
  • ارسال: 4872
  • جنسیت : پسر
  • masoft قدیم
خروجی این دستور چیه؟
ls /dev/tty*

آفلاین t3.nano

  • Newbie
  • *
  • ارسال: 9
سلام
ممنون از پاسختون
خروجی را در زیر گذاشتم
/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

ولی اگر در برنامه بجای ttya از tty* استفاده کنم هیچ بهبودی حاصل نمیشه و باز هم مشکل قبلی را دارد
با تشکر

آنلاین nixoeen

  • ناظر انجمن
  • *
  • ارسال: 4872
  • جنسیت : پسر
  • masoft قدیم
خروجی این:
ls -l /dev/ttyS0

آفلاین t3.nano

  • Newbie
  • *
  • ارسال: 9
ممنون از پیگیریتون
crw-rw---- 1 root dialout 4, 64 Sep  7 07:20 /dev/ttyS0
بازم تشکر میکنم که وقت میزارین و راهنمایی میکنین

آنلاین nixoeen

  • ناظر انجمن
  • *
  • ارسال: 4872
  • جنسیت : پسر
  • masoft قدیم
برای اینکه بتونید به پورت سریال دسترسی داشته باشید، باید کاربر خودتون رو عضو گروه dialout بکنید.

آفلاین t3.nano

  • Newbie
  • *
  • ارسال: 9
ممنون از راهنماییتون
میتونین کمکم کنید یا لینکی بدید که بفهمم چطوری این کار را باید بکنم؟
مرسی

آفلاین t3.nano

  • Newbie
  • *
  • ارسال: 9
برای اینکه بتونید به پورت سریال دسترسی داشته باشید، باید کاربر خودتون رو عضو گروه dialout بکنید.
باز هم سلام
با استفاده از سه دستور زیر کاربر خود را عضو یdialout کردم
sudo adduser <the user you want to add> dialout
sudo reboot
id -Gn
ولی متاسفانه هنوز مشکل حل نشده - دستورات وپاسخهایی که گفتید را باز هم تست کردم و همینجا گذاشتم

ls -l /dev/ttyS0
crw-rw---- 1 root dialout 4, 64 Sep  7 18:24 /dev/ttyS0

sudo adduser t3nano dialout
The user `t3nano' is already a member of `dialout'.

آنلاین nixoeen

  • ناظر انجمن
  • *
  • ارسال: 4872
  • جنسیت : پسر
  • masoft قدیم
این برنامه رو کامپایل و اجرا کنید و ببینید خروجی برنامه چیه؟
Enumeration portIdentifiers = CommPortIdentifier.getPortIdentifiers();
System.out.println("Start");
while (portIdentifiers.hasMoreElements())
{
    CommPortIdentifier pid = (CommPortIdentifier) portIdentifiers.nextElement();
    System.out.println(pid.getName());
}
System.out.println("End");

آفلاین t3.nano

  • Newbie
  • *
  • ارسال: 9
run:
Start
End
BUILD SUCCESSFUL (total time: 0 seconds)

ممنون

آنلاین nixoeen

  • ناظر انجمن
  • *
  • ارسال: 4872
  • جنسیت : پسر
  • masoft قدیم
احتمالا مشکل از فایل javax.comm.properties هستش. محتویات این فایل چیه و اینکه توی جای درستی قرار گرفته؟

آفلاین t3.nano

  • Newbie
  • *
  • ارسال: 9
احتمالا مشکل از فایل javax.comm.properties هستش. محتویات این فایل چیه و اینکه توی جای درستی قرار گرفته؟
متاسفانه نتونستم این فایل را پیدا کنم - لطفا راهنمایی میکنید که چطوری میتونم این فایل را پیدا کنم؟
ممنون از زحماتی که میکشید