2010-11-13 3 views
0

Je ne suivant le codage côté @ PC (j'ai essayé d'envoyer des données en morceaux):comment puis-je transférer l'image d'un PC vers un mobile via bluetooth en utilisant RFCOMM dans java?

try { 
    for (int i = 0; i < sdata.length/2; i++) 
    m_Output.write(sdata[i]); 
} catch (IOException ex) { 
    Logger.getLogger(SPPServer.class.getName()).log(Level.SEVERE, null, ex); 
} 
int i = sdata.length/2; 
try { 
    m_Output.flush(); 
} catch (IOException ex) { 
    Logger.getLogger(SPPServer.class.getName()).log(Level.SEVERE, null, ex); 
} 
for (int k = i; k < sdata.length; k++) { 
    try { 
     m_Output.write(sdata[i]); 
     m_Output.flush(); 
     m_Output.close(); 
    } catch (IOException ex) { 
     Logger.getLogger(SPPServer.class.getName()).log(Level.SEVERE, null, ex); 
    } 
} 

Pendant son séjour à côté mobile, je reçois comme:

public Image recdata() { 

    Image image1 = null; 
    int i = 0; 
    try { 
     // input = StrmConn.openInputStream(); 
     length = input.read(); 
     data1 = new byte[length]; 
     length = 0; 
     int ch = 1; 

     while (length != data1.length) { 
      ch = input.read(data1, length, data1.length - length); 

      if (ch == -1) { 
       throw new IOException("Can't read data"); 
      } 
      length += ch; 
     } 
     try { 
      // int len = ch; 
      input.wait(2000); 

     } catch (InterruptedException ex) { 
      ex.printStackTrace(); 
     } 
     length = input.read(); 
     byte[] data11 = new byte[length]; 
     try { 
      this.wait(1700); 
     } catch (InterruptedException ex) { 
      ex.printStackTrace(); 
     } 
     while (length != data11.length) { 
      ch = input.read(data11, length, data11.length - length); 

      if (ch == -1) { 
       throw new IOException("Can't read data"); 
      } 
      length += ch; 
     } 
     length = data1.length + data11.length; 
     data12 = new byte[length]; 
     for (i = 0; i < data1.length; i++) { 
      data12[i] = data[i]; 
     } 
     for (int k = i; k < length; k++) 
     data12[k] = data[k]; 
    } 
    catch (IOException e) { 
     System.err.println("U must correct"); 
    } 

    if (image1 == null) { 
     S = "Imagr is null in recive data"; 
    } 
    return image1; 
} 
+0

Et le problème est ...? http://tinyurl.com/so-hints –

+0

J'ai écrit ci-dessus le code mais ne peux pas recevoir. Je ne peux recevoir que 321 octets sur 5000 au-dessus des octets. pouvez-vous m'aider s'il vous plaît –

Répondre

0

Le problème est peut-être ici sur le mobile côté

length = input.read(); 

vous (probablement) assignez un octet à un nombre entier, donc lorsque vous utilisez la valeur plus tard, vous utilisez la représentation entière de l'octet et non l'entier val ue Voici un lien avec le code pour vous permettre de convertir l'entier en un tableau d'octets, puis de revenir d'un tableau d'octets à un entier. Java integer to byte array

+0

Merci pour la relecture j'ai un problème en lisant des données entières. Je peux lire des données jusqu'à 10 octets. J'ai souffert du même problème depuis quelques mois. Veuillez m'envoyer une meilleure solution pour ce problème. Donc gentil de vous monsieur –

Questions connexes