c语言全局变量,,,的问题,,
问题分析:
1.线程前后顺序有问题?
2.两个api算两次调用,所以变量存在不同的地址。
验证,
异步,
如何解决,
直接修改接口。添加一个特殊接口。
声明
bool getpcmvoicedata;
char* pcmvoicedata_sent_from_peer;
函数1
/*int sendPcmVoice(char voiceData[])*/
int sendPcmVoice(char* voiceData)
{
extern bool getpcmvoicedata;
extern char* pcmvoicedata_sent_from_peer;
ADHOCLOG_SO("====enter so====");
/*ADHOCLOG_SO(" %s",voiceData);*/
getpcmvoicedata =true;
pcmvoicedata_sent_from_peer = voiceData;//save voiceData from app instead of to peers
ADHOCLOG_SO("getpcmvoicedata:%d, %s",getpcmvoicedata,pcmvoicedata_sent_from_peer);
return 1;
}//发送话音数据
函数2,
bool addPcmVoiceListener(PcmVoiceCallback pFunc)
{
extern bool getpcmvoicedata;
extern char* pcmvoicedata_sent_from_peer;
ADHOCLOG_SO("====enter so====");
ADHOCLOG_SO("===register successed! waitting to call by peers === %d",getpcmvoicedata);
/*call3 = pFunc;*/
/*if(getpcmvoicedata){*/
int aa = 110;
/*char bb[] = "world";*/
ADHOCLOG_SO(" %s",pcmvoicedata_sent_from_peer);
pFunc(aa,pcmvoicedata_sent_from_peer);
/*}*/
return 1;
}//添加接收话音回调监听器
现在的问题是,js
chunks = [];
var reader=new FileReader();
reader.readAsText(blob,'utf-8');
reader.onload=function(e)
{
var textfile=reader.result;
console.log(textfile);
console.log(reader);
adhoc.sendPcmVoice(textfile);//发送话音数据
adhoc.addPcmVoiceListener(function(status, data) {
dump("============================================adhoc,addPcmVoiceListener==========================================");
dump("js callback22 navigator.mozAdhoc.addPcmVoiceListener addr="+status);
dump("js callback22 navigator.mozAdhoc.addPcmVoiceListener data="+data);
console.log("============================================adhoc,addPcmVoiceListener==========================================");
console.log("js callback22 navigator.mozAdhoc.addPcmVoiceListener addr="+status);
console.log("js callback22 navigator.mozAdhoc.addPcmVoiceListener data="+data);
});//添加接收话音回调监听器
}
我调了函数1.然后调函数2,但是函数2的变量还是没被改变。。。
我需要他,data=那串乱码,可他一直是空。
现在,我的语言数据(那串乱码)已经能到so库里了,需要把它返回去到js里面,我的想法是用全局变量保存,然后addPcmVoiceListener把这个全局变量的值传上去,但一直是空,,,