先不说了,上代码
import org.xvolks.jnative.JNative;
import org.xvolks.jnative.Type;
import org.xvolks.jnative.exceptions.NativeException;
import org.xvolks.jnative.pointers.Pointer;
import org.xvolks.jnative.pointers.memory.MemoryBlockFactory; public class GetComePhone extends Thread{
int ch;
String source;
String method;
public GetComePhone(int ch,String source,String method){
this.ch = ch;
this.source =source;
this.method = method;
}
public String getValueFromPoniter(Pointer p){//就这我怎么也去不到指针里的值,一个char型指针到底要怎么取值啊
String c = "::";
for(int i=0;i <p.getSize();i++){ try {
c =c+p.getAsByte(i);
} catch (NativeException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }
return c;
}
@Override
public void run() {
// TODO Auto-generated method stub
JNative jn = null;
int i = 0; try {
jn = new JNative(source,method);
jn.setRetVal(Type.INT);
Pointer p = new Pointer(MemoryBlockFactory.createMemoryBlock(8*2));
jn.setParameter(0,ch);
jn.setParameter(1,p);
jn.setParameter(2,1);
jn.invoke();
System.out.println(jn.getRetValAsInt()+"```````````"+getValueFromPoniter(p));
} catch (NativeException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if(jn!=null){
try {
jn.dispose();
} catch (NativeException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
} 我这是调用录音卡里面的获取来点号码的方法
硬件里的方法是 5.7.1 int WINAPI TvcGetCallerId(int ch,char *szBuf,int want) 参数说明:
ch
通道号
szBuf
指针,指向callerid 内容
want
最多返回数
函数返回: -1
调用失败 其它
实际返回的主叫号码个数
功能描述:取得指定通道主叫号码 注意事项:1)对于DTMF制式主叫号码,应用程序可在第一声振铃时调用此函数,若此时没有返回有效主叫号码, 表示此次被叫没有主叫号码 2) 对于FSK制式主叫号码,应用程序可在第一声振铃后一直轮询。直到通道状态进入ch_rining或 第二声振铃到来还没有返回有效主叫号码,表示此次被叫没有主叫号码
请求高手指点·····
import org.xvolks.jnative.JNative;
import org.xvolks.jnative.Type;
import org.xvolks.jnative.exceptions.NativeException;
import org.xvolks.jnative.pointers.Pointer;
import org.xvolks.jnative.pointers.memory.MemoryBlockFactory; public class GetComePhone extends Thread{
int ch;
String source;
String method;
public GetComePhone(int ch,String source,String method){
this.ch = ch;
this.source =source;
this.method = method;
}
public String getValueFromPoniter(Pointer p){//就这我怎么也去不到指针里的值,一个char型指针到底要怎么取值啊
String c = "::";
for(int i=0;i <p.getSize();i++){ try {
c =c+p.getAsByte(i);
} catch (NativeException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }
return c;
}
@Override
public void run() {
// TODO Auto-generated method stub
JNative jn = null;
int i = 0; try {
jn = new JNative(source,method);
jn.setRetVal(Type.INT);
Pointer p = new Pointer(MemoryBlockFactory.createMemoryBlock(8*2));
jn.setParameter(0,ch);
jn.setParameter(1,p);
jn.setParameter(2,1);
jn.invoke();
System.out.println(jn.getRetValAsInt()+"```````````"+getValueFromPoniter(p));
} catch (NativeException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if(jn!=null){
try {
jn.dispose();
} catch (NativeException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
} 我这是调用录音卡里面的获取来点号码的方法
硬件里的方法是 5.7.1 int WINAPI TvcGetCallerId(int ch,char *szBuf,int want) 参数说明:
ch
通道号
szBuf
指针,指向callerid 内容
want
最多返回数
函数返回: -1
调用失败 其它
实际返回的主叫号码个数
功能描述:取得指定通道主叫号码 注意事项:1)对于DTMF制式主叫号码,应用程序可在第一声振铃时调用此函数,若此时没有返回有效主叫号码, 表示此次被叫没有主叫号码 2) 对于FSK制式主叫号码,应用程序可在第一声振铃后一直轮询。直到通道状态进入ch_rining或 第二声振铃到来还没有返回有效主叫号码,表示此次被叫没有主叫号码
请求高手指点·····
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货