Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/180.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取缓冲区java的一半值_Java_Android_Bluetooth - Fatal编程技术网

获取缓冲区java的一半值

获取缓冲区java的一半值,java,android,bluetooth,Java,Android,Bluetooth,我想从缓冲区中获取值,直到值减半: public void run() { byte[] buffer = new byte[1048576]; // 20 bits int bytes; String strRx = ""; while (running) { try { byt

我想从缓冲区中获取值,直到值减半:

public void run() {
                byte[] buffer = new byte[1048576]; // 20 bits
                int bytes;
                String strRx = "";

                while (running) {
                    try {
                        bytes = connectedInputStream.read(buffer);
                        final String strReceived_freq = new String(buffer,0, buffer/2); // buffer/2 not working
                        final String strReceived_pxx = new String(buffer,buffer/2, bytes); // buffer/2 not working
                        //final int samples_sdr=new Integer(buffer,0,bytes);
                        final String strByteCnt = String.valueOf(bytes) + " bytes received.\n";
问题是,buffer/2不起作用,如何从我的缓冲区中获取一半的值

谢谢你的帮助

public void run(){
public void run() {
   byte[] buffer = new byte[1048576]; // 20 bits
   int bytes = 0;
   String strRx = "";
   while (running) {
      try {
         bytes = connectedInputStream.read(buffer);
         if(bytes == 0) {
            Log.d("DEBUG","connectedInputStream returned 0 bytes");
         }   
         byte[] strReceived_freq_byte = new byte[(buffer.length)/2];
         for(int i = 0; i < (buffer.length)/2; i++) {
            strReceived_freq_byte[i] = buffer[i];
         }
         byte[] strReceived_pxx_byte = new byte[(buffer.length)/2];
         for(int i =0 ; i < (buffer.length)/2; i++) {
            strReceived_freq_byte[i] = buffer[i+((buffer.length)/2)];
         }
     String strReceived_freq = new String(strReceived_freq_byte);
     String strReceived_pxx = new String(strReceived_pxx_byte);
     final String strByteCnt = String.valueOf(bytes) + " bytes received.\n";
      }  
   }  
}
字节[]缓冲区=新字节[1048576];//20位 int字节=0; 字符串strRx=“”; (跑步时){ 试一试{ 字节=connectedInputStream.read(缓冲区); 如果(字节==0){ Log.d(“调试”,“connectedInputStream返回0字节”); } 字节[]strReceived_freq_byte=新字节[(buffer.length)/2]; 对于(int i=0;i<(buffer.length)/2;i++){ strReceived_freq_byte[i]=缓冲区[i]; } 字节[]strReceived_pxx_byte=新字节[(buffer.length)/2]; 对于(int i=0;i<(buffer.length)/2;i++){ strReceived_freq_byte[i]=缓冲区[i+((buffer.length)/2]; } String strReceived_freq=新字符串(strReceived_freq_字节); String strReceived_pxx=新字符串(strReceived_pxx_字节); 最终字符串strByteCnt=String.valueOf(bytes)+“已接收字节”。\n”; } } }
我的应用程序中可能存在此命令的副本。我不明白为什么你说的是
bytes/2
而不是
buffer/2
。是的,对不起,我的意思是字节/2而不是缓冲区/2,但我有一些问题,我不知道这是否与我的缓冲区有关,但对于我的选项卡的每种情况,我都会在相同的时间内得到2个值(我的频率和我的pxx值),因为选项卡正在重新写入,直到33为止,在我不知道这是否与我的缓冲区有关之后,我将其转换为字符串:final string strReceived_freq2=new string(strReceived_freq)?因为当我这样做的时候,我没有收到任何东西可以连接到putstream.read(缓冲区);没有返回任何字节。要检查日志,请输入int bytes变量的值。如果它是零,那么实际上它不会返回任何字节。