API

oudkaramla Messages postés 107 Date d'inscription mardi 2 mars 2004 Statut Membre Dernière intervention 5 juillet 2004 - 18 juin 2004 à 11:37
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 - 21 juin 2004 à 22:34
Salut tout le monde,

est ce que quelqu'un veut bien m'expliquer le parcours des fonctions API à travers le système d'exploitation.
merci je m'intéresse précisaiment à:
Createfile
Writefile
et readfile

est ce que fopen est une fonction API

8 réponses

ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
18 juin 2004 à 11:53
fopen n'est pas une fct API, mais une ftc des librairies C/C++ qui fait appel à CreateFile (sous windows) à un moment ou à un autre pour ouvrir le fichier. En compilant pour un autre système elle fera appel à autre chaose.
0
oudkaramla Messages postés 107 Date d'inscription mardi 2 mars 2004 Statut Membre Dernière intervention 5 juillet 2004
18 juin 2004 à 14:28
merci,

je veux savoir pourquoi ridefile() met un temps considérable pour lire sur le buffer de l'interface série

merci
0
oudkaramla Messages postés 107 Date d'inscription mardi 2 mars 2004 Statut Membre Dernière intervention 5 juillet 2004
18 juin 2004 à 14:58
pardon c'est readfile()
qu'elle est sa relation avec le comm.drv
est ce que fopen fait appel à readfile?
Pourquoi readfile met plus de temps en comparaison avec les appels d'intérruptions par exemple.

merci
0
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
18 juin 2004 à 16:46
le temps de lecture dépend du taux de transfert (pour lire 1024 octets à 9600 baups il faut environ 1 seconde).
en ce qui concerne la différence de temps par rapport à l'utilisation des interruptions je suppose qu'il doit y avoir une succession d'appels à d'autres fct et des vérifications diverses avant la lecture. De toute façon, il est préferrable d'utiliser ReadFile que les interruptions pour lire sur le port série car sur les OS récents l'accès aux interruptions n'est pas autorisé directement.

sinon qu'entends tu par temps consirérable ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
oudkaramla Messages postés 107 Date d'inscription mardi 2 mars 2004 Statut Membre Dernière intervention 5 juillet 2004
18 juin 2004 à 18:32
6 secondes ou 7

dans ton code tu as mis 9600 est ceque mettre plus?
0
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
19 juin 2004 à 01:13
attention, dans la source que j'ai posté, dans la structure COMMTIMEOUTS, j'ai mis 5 secondes d'attente min avant que la fonction ReadFile ne retourne (pour attendre un peu)
en mettant 0 à tous les champs (valeurs par défaut), ReadFile attend indéfiniement que des données arrivent. en mettant des 0 partout sauf 0xFFFFFFFF au premier, ReadFile retourne immédiatement avec ce qu'il y a eu de reçu au moment de l'appel.
0
oudkaramla Messages postés 107 Date d'inscription mardi 2 mars 2004 Statut Membre Dernière intervention 5 juillet 2004
21 juin 2004 à 09:38
merci,
je t'explique, la réponse que je veux recevoir ne fait que 16 caractères. Alors qu'est ce que je dois mettre dans la structure pour avoir une réponse instantanée.
merci
0
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
21 juin 2004 à 22:34
COMMTIMEOUTS TComm::m_cto =
{
0xFFFFFFFF, // ReadIntervalTimeOut
0, // ReadTotalTimeOutMultiplier
0, // ReadTotalTimeOutConstant
0, // WriteTotalTimeOutMultiplier
0 // WriteTotalTimeOutConstant
};

avec ça, ReadFile retournera immédiatement avec ce qui été reçu jusque là. Il te faudra peut être appeler plusieurs fois la fct en stockant à la suite du buffer pour avoir la totalité de la trame
0