ورود

View Full Version : سوال: مشکل در تغییر baud rate در پورت سریالRS232 ؟



مهدی یزدان پناه
چهارشنبه 21 اردیبهشت 1390, 17:36 عصر
با سلام خدمت دوستان گرامی
من دارم یه برنامه با جاوا برای استفاده از پورت سریال Rs232 می نویسم و برنامه نیازمند تغییر باودریت در جاهای مختلف می باشد.
نتونستم متدی یا راه حلی برای این منظور پیدا کنم. اگه بخوام از متد setParam که در تنظیم اولیه پارامترهای پورت سریال به کار میره استفاده کنم ، پورت بسته شده و مجددا باز میشه که این قطع ارتباط روال منطقی برنامه رو به هم میزنه.
آیا کسی از دوستان میتونه راهنمایی کنه که چطوری بدون بسته شدن پورت ،باودریتو میشه تغییر داد؟
با تشکر

imnetco
سه شنبه 05 فروردین 1393, 18:54 عصر
با سلام خدمت دوستان گرامی
من دارم یه برنامه با جاوا برای استفاده از پورت سریال Rs232 می نویسم و برنامه نیازمند تغییر باودریت در جاهای مختلف می باشد.
نتونستم متدی یا راه حلی برای این منظور پیدا کنم. اگه بخوام از متد setParam که در تنظیم اولیه پارامترهای پورت سریال به کار میره استفاده کنم ، پورت بسته شده و مجددا باز میشه که این قطع ارتباط روال منطقی برنامه رو به هم میزنه.
آیا کسی از دوستان میتونه راهنمایی کنه که چطوری بدون بسته شدن پورت ،باودریتو میشه تغییر داد؟
با تشکر

یه نگاه به این کد بنداز


int bitrate = 0;
char baudrate = replyStr.charAt(4);
switch (baudrate)
{
case '0':
bitrate = 300;
break;
case '1':
bitrate = 600;
break;
case '2':
bitrate = 1200;
break;
case '3':
bitrate = 2400;
break;
case '4':
bitrate = 4800;
break;
case '5':
bitrate = 9600;
break;
case '6':
bitrate = 19200;
break;
default:
throw new Exception("Unknown baud rate.");
}
//Send ACK
//Send Protocol control character
byte controlCharacter = (byte)'2';// "2" HDLC protocol procedure (Mode E)
//Send Baudrate character
//Mode control character
byte ModeControlCharacter = (byte)'2';//"2" //(HDLC protocol procedure) (Binary mode)
//Set mode E.
byte[] tmp = new byte[] { 0x06, controlCharacter, (byte)baudrate, ModeControlCharacter, 13, 10 };
Imnet serial = (imnet) Media;
synchronized (Media.getSynchronous())
{
serial.setBaudRate(bitrate);
Media.send(tmp, null);
}
serial.setDataBits(8);
serial.setParity(Parity.NONE);
serial.setStopBits(StopBits.ONE);
}

imnetco
سه شنبه 05 فروردین 1393, 19:01 عصر
اینم خوبه !
https://java.net/projects/solaris/sources/on-src/content/usr/src/cmd/ttymon/tmautobaud.c?rev=13149