2014-07-05 4 views
3

J'ai un code C qui contient fgets fonction et j'appelle ce code de android java.Appeler le fichier c dans android java: Fonction fgets() ne fonctionne pas sur HTC Desire

Je cours cette application sur 2 mobiles (Samsung Galaxy & Sony Xperia) et tout est OK.

Mais quand je cours l'application sur HTC Desire 300 et 500, l'application s'est arrêtée à la fonction fgets !!

est la commande qui rendent l'application arrêtée:

line = fgets(buf, (int)sizeof(buf), modem); 

où: {EDIT1}

static char buf[4 * 1024]; 
FILE *modem; 
char *line="AT\r"; 
char q[4 * 1024 * 10]; 

modem = fopen("/dev/smd0", "r+b"); 
if (modem == NULL) 
{ 
    return (*env)->NewStringUTF(env, "2fopen() failed: /dev/smd0\n"); 
} 

res = fputs(line, modem); 
if (res < 0) 
{ 
    return (*env)->NewStringUTF(env, ("5failed to send '%s' to modem res = " + res,line)); 
} 
line = fgets(buf, (int)sizeof(buf), modem); 

EDIT2:

L'erreur logCat est comme ça:

Tag:  HTCBuildFlagAdpater 
Text: Fail to get htc sku id by customization 

Qu'est-ce que ce problème signifie? Y a-t-il une commande que je peux utiliser à la place?

+0

Qu'est-ce que vous essayez de lire? Un matériel spécifique? – greenapps

+0

Où ouvrez-vous le fichier? Est-ce sur le stockage externe? (En passant, vous ne devriez jamais coder ''// sdcard/"' jamais.) Êtes-vous sûr que la variable modem n'est pas NULL et initialisée? – Sipka

+0

@greenapps Oui, j'essaie de lire quelques informations de bas niveau à partir du modem du mobile. –

Répondre

0

Quelles observations mènent à la conclusion que l'application s'arrête à cette ligne?

Par "stop", voulez-vous dire que l'application est suspendue à cette ligne, ou que l'application se termine?

Si le premier, peut-être qu'il attend l'entrée de l'appareil, pour toujours. Si ce dernier, il ya peut-être un bogue dans leur implémentation C, mais cela est moins probable que de découvrir plus tard que l'application n'est pas réellement terminée au point dans le code que vous pensez être.

Questions connexes