/*-------------------------------------------------------------------------
| RXTX License v 2.1 - LGPL v 2.1 + Linking Over Controlled Interface.
| RXTX is a native interface to serial ports in java.
| Copyright 1997-2008 by Trent Jarvi tjarvi@qbang.org and others who
| actually wrote it. See individual source files for more information.
|
| A copy of the LGPL v 2.1 may be found at
| http://www.gnu.org/licenses/lgpl.txt on March 4th 2007. A copy is
| here for your convenience.
|
| This library is free software; you can redistribute it and/or
| modify it under the terms of the GNU Lesser General Public
| License as published by the Free Software Foundation; either
| version 2.1 of the License, or (at your option) any later version.
|
| This library is distributed in the hope that it will be useful,
| but WITHOUT ANY WARRANTY; without even the implied warranty of
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
| Lesser General Public License for more details.
|
| An executable that contains no derivative of any portion of RXTX, but
| is designed to work with RXTX by being dynamically linked with it,
| is considered a "work that uses the Library" subject to the terms and
| conditions of the GNU Lesser General Public License.
|
| The following has been added to the RXTX License to remove
| any confusion about linking to RXTX. We want to allow in part what
| section 5, paragraph 2 of the LGPL does not permit in the special
| case of linking over a controlled interface. The intent is to add a
| Java Specification Request or standards body defined interface in the
| future as another exception but one is not currently available.
|
| http://www.fsf.org/licenses/gpl-faq.html#LinkingOverControlledInterface
|
| As a special exception, the copyright holders of RXTX give you
| permission to link RXTX with independent modules that communicate with
| RXTX solely through the Sun Microsytems CommAPI interface version 2,
| regardless of the license terms of these independent modules, and to copy
| and distribute the resulting combined work under terms of your choice,
| provided that every copy of the combined work is accompanied by a complete
| copy of the source code of RXTX (the version of RXTX used to produce the
| combined work), being distributed under the terms of the GNU Lesser General
| Public License plus this exception. An independent module is a
| module which is not derived from or based on RXTX.
|
| Note that people who make modified versions of RXTX are not obligated
| to grant this special exception for their modified versions; it is
| their choice whether to do so. The GNU Lesser General Public License
| gives permission to release a modified version without this exception; this
| exception also makes it possible to release a modified version which
| carries forward this exception.
|
| You should have received a copy of the GNU Lesser General Public
| License along with this library; if not, write to the Free
| Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
| All trademarks belong to their respective owners.
--------------------------------------------------------------------------*/
package gnu.io;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.IOException;
import java.util.TooManyListenersException;
import java.lang.Math;
/**
* An extension of gnu.io.SerialPort
* @see gnu.io.SerialPort
*/
final public class RXTXPort extends SerialPort
{
/* I had a report that some JRE's complain when MonitorThread
tries to access private variables
*/
protected final static boolean debug = false;
protected final static boolean debug_read = false;
protected final static boolean debug_read_results = false;
protected final static boolean debug_write = false;
protected final static boolean debug_events = false;
protected final static boolean debug_verbose = false;
private static Zystem z;
static
{
try {
z = new Zystem();
} catch ( Exception e ) {}
if(debug )
z.reportln( "RXTXPort {}");
System.loadLibrary( "rxtxSerial" );
Initialize();
}
/** Initialize the native library */
private native static void Initialize();
boolean MonitorThreadAlive=false;
/**
* Open the named port
* @param name the name of the device to open
* @throws PortInUseException
* @see gnu.io.SerialPort
*/
public RXTXPort( String name ) throws PortInUseException
{
if (debug)
z.reportln( "RXTXPort:RXTXPort("+name+") called");
/*
commapi/javadocs/API_users_guide.html specifies that whenever
an application tries to open a port in use by another application
the PortInUseException will be thrown
I know some didnt like it this way but I'm not sure how to avoid
it. We will just be writing to a bogus fd if we catch the
exeption
Trent
*/
// try {
fd = open( name );
this.name = name;
MonitorThreadLock = true;
monThread = new MonitorThread();
monThread.start();
waitForTheNativeCodeSilly();
MonitorThreadAlive=true;
// } catch ( PortInUseException e ){}
timeout = -1; /* default disabled timeout */
if (debug)
z.reportln( "RXTXPort:RXTXPort("+name+") returns with fd = " +
fd);
}
private native synchronized int open( String name )
throws PortInUseException;
/* dont close the file while accessing the fd */
int IOLocked = 0;
Object IOLockedMutex = new Object();
/** File descriptor */
private int fd = 0;
/** a pointer to the event info structure used to share information
between threads so write threads can send output buffer empty
from a pthread if need be.
long for 64 bit pointers.
*/
long eis = 0;
/** pid for lock files */
int pid = 0;
/** DSR flag **/
static boolean dsrFlag = false;
/** Output stream */
private final SerialOutputStream out = new SerialOutputStream();
/**
* get the OutputStream
* @return OutputStream
*/
public OutputStream getOutputStream()
{
if (debug)
z.reportln( "RXTXPort:getOutputStream() called and returning");
return out;
}
/** Input stream */
private final SerialInputStream in = new SerialInputStream();
/**
* get the InputStream
* @return InputStream
* @see java.io.InputStream
*/
public InputStream getInputStream()
{
if (debug)
z.reportln( "RXTXPort:getInputStream() called and returning");
return in;
}
/**
* Set the SerialPort parameters
* 1.5 stop bits requires 5 databits
* @param b baudrate
* @param d databits
* @param s stopbits
* @param p parity
* @throws UnsupportedCommOperationException
* @see gnu.io.UnsupportedCommOperationException
* If speed is not a predifined speed it is assumed to be
* the actual speed desired.
*/
private native int nativeGetParity( int fd );
private native int nativeGetFlowControlMode( int fd );
public synchronized void setSerialPortParams( int b, int d, int s,
int p )
throws UnsupportedCommOperationException
{
if (debug)
z.reportln( "RXTXPort:setSerialPortParams(" +
b + " " + d + " " + s + " " + p + ") called");
if ( nativeSetSerialPortParams( b, d, s, p ) )
throw new UnsupportedCommOperationException(
"Invalid Parameter" );
speed = b;
if( s== STOPBITS_1_5 ) dataBits = DATABITS_5;
else dataBits = d;
stopBits = s;
parity = p;
z.reportln( "RXTXPort:setSerialPortParams(" +
b + " " + d + " " + s + " " + p +
") returning");
}
/**
* Set the native serial port parameters
* If speed is not a predifined speed it is assumed to be
* the actual speed desired.
*/
private native boolean nativeSetSerialPortParams( int speed,
int dataBits, int stopBits, int parity )
throws UnsupportedCommOperationException;
/** Line speed in bits-per-second */
private int speed=9600;
/**
* @return int representing the baudrate
* This will not behave as expected with custom speeds
*/
public int getBaudRate()
{
if (debu
没有合适的资源?快使用搜索试试~ 我知道了~
android版RXTX源码
共85个文件
java:36个
h:12个
xml:6个
4星 · 超过85%的资源 需积分: 10 59 下载量 107 浏览量
2011-12-31
15:56:30
上传
评论
收藏 231KB ZIP 举报
温馨提示
关于android串口开发的源码,我编译虽然没有通过,但是可以借鉴方法,国内网站很难下载到的,这里跟大家分享一下,配合android_serial_api源码以前看对android串口编程很有帮助!
资源推荐
资源详情
资源评论
收起资源包目录
vladistan-gnu.io.android-7e5cca9.zip (85个子文件)
vladistan-gnu.io.android-7e5cca9
librxtxSerial
Android.mk~ 36B
res
drawable-ldpi
icon.png 2KB
drawable-hdpi
icon.png 4KB
values
strings.xml~ 554B
strings.xml 447B
drawable-mdpi
icon.png 3KB
layout
main.xml 1KB
AndroidManifest.xml~ 614B
jni
SerialImp.c 169KB
config.h 2KB
termios.c 76KB
gnu_io_RXTXPort_SerialOutputStream.h 310B
Parallel.def 1KB
Android.mk~ 598B
Android.mk 542B
init.cc 717B
SerialImp.h 16KB
gnu_io_RXTXPort_SerialInputStream.h 430B
gnu_io_ParallelPort.h 845B
gnu_io_RXTXPort_MonitorThread.h 610B
gnu_io_Zystem.h 727B
init.c 781B
gnu_io_RXTXCommDriver.h 1KB
SerialImp.cpp 55KB
gnu_io_RXTXPort.h 13KB
linux
serial.h 7KB
fixup.c 3KB
gnu_io_RXTXVersion.h 458B
portmode.c 5KB
fuserImp.c 8KB
gnu_io_CommPortIdentifier.h 1KB
Android.mk 312B
src
gnuio
test
GNUIOTest.java 9KB
TestSerialPort.java 7KB
gnu
io
NoSuchPortException.java 4KB
RXTXPort.java 58KB
SerialPortEvent.java 4KB
CommDriver.java 3KB
UnSupportedLoggerException.java 4KB
UnsupportedCommOperationException.java 4KB
PortInUseException.java 4KB
SerialPort.java 7KB
CommPortOwnershipListener.java 4KB
RXTXVersion.java 4KB
RXTXCommDriver.java 26KB
SerialPortEventListener.java 3KB
CommPort.java 5KB
Zystem.java 8KB
CommPortEnumerator.java 5KB
CommPortIdentifier.java 17KB
AndroidManifest.xml 620B
README 0B
gnu.io.test
res
drawable-ldpi
icon.png 2KB
drawable-hdpi
icon.png 4KB
values
strings.xml 554B
drawable-mdpi
icon.png 3KB
layout
main.xml 1KB
default.properties 362B
proguard.cfg 1KB
src
gnu
io
test
GNUIOTest.java 9KB
TestSerialPort.java 7KB
.project 812B
.classpath 344B
.gitignore 22B
AndroidManifest.xml 615B
.gitignore 33B
gnu.io
.settings
org.eclipse.jdt.core.prefs 617B
src
gnu
io
NoSuchPortException.java 4KB
RXTXPort.java 58KB
SerialPortEvent.java 4KB
CommDriver.java 3KB
UnSupportedLoggerException.java 4KB
UnsupportedCommOperationException.java 4KB
PortInUseException.java 4KB
SerialPort.java 7KB
CommPortOwnershipListener.java 4KB
RXTXVersion.java 4KB
RXTXCommDriver.java 26KB
SerialPortEventListener.java 3KB
CommPort.java 5KB
Zystem.java 8KB
CommPortEnumerator.java 5KB
CommPortIdentifier.java 17KB
.project 364B
.classpath 295B
共 85 条
- 1
羽皓
- 粉丝: 0
- 资源: 8
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页