开发工具 myeclipse 7.0 JDK6.0 JRE6.0 USB来电显示盒一个 电话机一台(未开通来电显示)
操作系统:wimdows xp
我想知道来电显示可以通过自己截取MODEL信号来实现吗?
如果能,该怎么实现,我在网上找过一个比较正规的例子(下面有介绍),但是结果不行。
我按照里面的测试,超级终端开启不了,这个又改怎么解决。
具体并且详细的超级终端测试步骤应该是怎么样的?
我现在的测试步骤是这样的
------------------------------
链接上来电显示盒---->安装好驱动文件------>链接好TEL1线与LINE1线--->打开超级终端-->输入名称(确定)-->不修改在确定-->不修改继续确定-->修改一下(ASCII码设置里面的本地回显键入的字符)-->输入at按回车或者CTRL+H-->等半天没有网上说的OK出现。
------------------------------
测试串口我用的是COMM.JAR包。
我现在的串口代码是这么写的。我不是很明白其中的意思。也测试不懂。希望高手能够详细的解答一下JAVA实现来电弹屏的原理。
另外如果实现难度特别大,有没有一些二次开发的。二次开发也请帮忙简单介绍一下。
package comm;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Enumeration;
import java.util.TooManyListenersException;
import javax.comm.CommDriver;
import javax.comm.CommPortIdentifier;
import javax.comm.PortInUseException;
import javax.comm.SerialPort;
import javax.comm.SerialPortEvent;
import javax.comm.SerialPortEventListener;
import javax.comm.UnsupportedCommOperationException;
import javax.swing.JApplet;
/**
*
* 项目名称:PhoneTest
* 类名称:SimpleWrite
* 类描述:
* 创建人:彭**
* 创建时间:2010-10-19下午02:33:57
* 修改人:彭**
* 修改时间:2010-10-19下午02:33:57
* 修改备注:
* @version V1.0
*/
public class SimpleWrite {
static { System.setSecurityManager(null); }
public static void main(String[] args) {
// System.loadLibrary("win32com");
CommDriver driver = null;
String driverName = "com.sun.comm.Win32Driver";
// SerialPort sPort = (SerialPort) driver.getCommPort("COM4",
// CommPortIdentifier.PORT_SERIAL);
Enumeration<CommPortIdentifier> enumeration = CommPortIdentifier
.getPortIdentifiers();
while (enumeration.hasMoreElements()) {
CommPortIdentifier portId = enumeration.nextElement();
System.out.println(portId.getName() + "============");
if (portId.getName().equals("COM1")) {
try {
System.out.println("jjj");
final SerialPort sp = (SerialPort) portId.open(
"SimpleWrite", 1000);
sp.setSerialPortParams(2400, SerialPort.DATABITS_8,
SerialPort.STOPBITS_2, SerialPort.PARITY_NONE);
final InputStream is = sp.getInputStream();
final OutputStream os = sp.getOutputStream();
os.write(100);
os.flush();
os.close();
//Set notifyOnDataAvailable to true to allow event driven input.
sp.notifyOnDataAvailable(true);
// Set notifyOnBreakInterrup to allow event driven break
// handling.
sp.notifyOnBreakInterrupt(true);
// Set receive timeout to allow breaking out of polling loop
// during input handling.
sp.enableReceiveTimeout(30);
final StringBuffer linkWgt = new StringBuffer();// 存放获取的数据
sp.addEventListener(new SerialPortEventListener() {
public void serialEvent(SerialPortEvent e) {
int newData = 0;
// Determine type of event.
switch (e.getEventType()) {
// Read data until -1 is returned. If \r is received
// substitute
// \n for correct newline handling.
case SerialPortEvent.DATA_AVAILABLE:
while (newData != -1) {
try {
newData = is.read();
if (newData == -1) {
break;
}
if ('\r' == (char) newData) {
} else {
linkWgt.append((char) newData);
}
} catch (IOException ex) {
System.err.println(ex);
return;
}
}
// Append received data to messageAreaIn.
try {
System.out
.println("linkWgt ---------||||| "
+ Double.valueOf(linkWgt
.toString()));
} catch (Exception ew) {
ew.printStackTrace();
} finally {
try {
// 用完了,记得关闭端口。
is.close();
sp.close();
} catch (Exception c) {
c.printStackTrace();
}
}
break;
// If break event append BREAK RECEIVED message.
case SerialPortEvent.BI:
System.out
.println("\n--- BREAK RECEIVED ---\n");
}
}
});
} catch (PortInUseException e) {
e.printStackTrace();
} catch (UnsupportedCommOperationException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (TooManyListenersException e) {
e.printStackTrace();
}
}
}
}
}
这个是报的错误
Caught java.lang.ClassNotFoundException: com.sun.comm.Win32Driver while loading driver com.sun.comm.Win32Driver Error loading SolarisSerial: java.lang.UnsatisfiedLinkError: no SolarisSerialPar allel in java.library.path Caught java.lang.UnsatisfiedLinkError: com.sun.comm.SolarisDriver.readRegistrySe rial(Ljava/util/Vector;Ljava/lang/String;)I while loading driver com.sun.comm.So larisDriver
从错误的名称来看是这样的,但是comm.jar包我已经放进去了。并且放在了任何可能需要的地方。
-------------------
comm.jar可以放在JDK中的jre\lib\ext目录下
win32com.dll可以直接放在JDK中的bin目录下
javax.comm.properties放在JDK中的jre\lib目录下就可以。
-------------------
还有一个非常重要的疑问,JAVA能够实现截取USB来电显示盒信息实现来电显示吗?