API pour débutant

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
MetalOS
Messages : 1510
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

API pour débutant

Message par MetalOS »

Bien le bonjour à tous. Bon le minimum est dans le titre. Voila il fallait bien que j'y vienne à ces fameux API, donc voici ma question. Je cherche à développer un application (en Pb bien sur lol) pour récolter des informations sur un composant électronique 1-wire de chez DALLAS SEMICONDUCTOR (pour info c un capteur d'impulsion DS2423), ce qui est bien chez eux c qu'il fournisse gratuitement un SDK Windows pour la programmation ce qui ajoute de nouveau API à Windows seulement je ne c pas comment les utiliser ou les appeler dans PB. Si toutefois quelqu'un pouvais m'aider ou m'éclaircir sur comment employer des API (voir même ceux dont j'ais besoin) dans PB c avec grand plaisir et une très grande impatience que j’attends vos réponses. Merci d'avance.

Pour info voici le lien qui donne sur la doc de ce SDK qui ce trouve temporairement sur mon site ce qui me permet de faire une traduction via GOOGLE car la doc est en anglais.

La doc est ici :
http://infoprojectsoftware.free.fr/1-Wi ... _Help.html
jbernard13
Messages : 1501
Inscription : dim. 18/avr./2004 15:04
Localisation : sud de la france

Message par jbernard13 »

DALLAS ton univers impitoyable
Avatar de l’utilisateur
MetalOS
Messages : 1510
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Message par MetalOS »

Oui mais encore lol. Bon personne pour m'aider ?
Anonyme

Message par Anonyme »

ta des dll avec ton api ?
Avatar de l’utilisateur
kernadec
Messages : 1606
Inscription : ven. 25/avr./2008 11:14

Message par kernadec »

bonsoir
va voir de ce cote tu va trouver des infos sur les API ?
http://www.purebasic.fr/french/viewtopic.php?t=1498
Avatar de l’utilisateur
MetalOS
Messages : 1510
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Message par MetalOS »

Merci pour vos réponses, oui Cpl.Bator il y à des dll fournis avec l'apienfin il en parle dans la doc.

ici une partie de la doc traduit avec google oui il en parle

http://translate.google.fr/translate?u= ... r&ie=UTF-8
Anonyme

Message par Anonyme »

avec ce fichier là tu devrais t'en sortir , pas compliqué a wrappé :

http://66.102.9.104/translate_c?hl=fr&s ... KLpVqUiDEA

ps: la source est traduite , récupère l'originale.
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Message par Progi1984 »

Avatar de l’utilisateur
MetalOS
Messages : 1510
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Message par MetalOS »

Merci pour vos réponses je vient de voir cette page de l'aide. Je v étudier ca est d que j'ais du nouveau je vous tien au courant.
Avatar de l’utilisateur
MetalOS
Messages : 1510
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Message par MetalOS »

Bon je ne pige toujours rien, si quelqu'un aurrait un tuto sur le gestion des dll ? Je trouve la doc un peut limite sur ce sujet. Merci.
Avatar de l’utilisateur
MetalOS
Messages : 1510
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Re: API pour débutant

Message par MetalOS »

Je me repolonge un peut dans l'idée de faire un petit soft pour mon composant 1-wire. Quelqu'un peut me dire comment warpper ca :

Code : Tout sélectionner

/*---------------------------------------------------------------------
 * Copyright (C) 1992-2002 Dallas Semiconductor/MAXIM Corporation.
 * All rights Reserved. Printed in U.S.A.  This software is 
 * protected by copyright laws of the United States and of foreign
 * countries.  This material may also be protected by patent laws 
 * of the United States and of foreign countries.  This software is 
 * furnished under a license agreement and/or a nondisclosure 
 * agreement and may only be used or copied in accordance with the 
 * terms of those agreements.  The mere transfer of this software 
 * does not imply any licenses of trade secrets, proprietary 
 * technology, copyrights, patents, trademarks, maskwork rights, 
 * or any other form of intellectual property whatsoever. Dallas 
 * Semiconductor retains all ownership rights.
 *---------------------------------------------------------------------
 * TMEX API header file - IBTMEXCW.H
 */
/* includes */
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <windows.h>
/* type defs */
typedef unsigned char  uchar;
typedef unsigned short ushort;
typedef unsigned long  ulong;
/* typedef structures sent back by TMEX routines */
/* FileEntry holds TMEX file info */
typedef struct      
{
   uchar name[4];
   uchar extension;
   uchar startpage;
   uchar numpages;
   uchar attrib;
   uchar bitmap[32];
} FileEntry;
/* DirectoryPath holds information on TMEX file directories */
typedef struct
{
   uchar NumEntries;      /* number of entries in path 0-10 */
   char  Ref;             /* reference character '\' or '.' */
   char  Entries[10][4];  /* sub-directory entry names */                                          
} DirectoryPath;
/* Specification holds information on 1-Wire adapters or 1-Wire devices */
typedef struct 
{
   unsigned short features[32];
   char description[255];
} Specification;
struct DirNumInfo // Holds info of each object in the Directory list
{  
   unsigned char Name[4];
   unsigned char Extension;
   char Attrib;
};
/* Error codes from TMEX functions */
#define    XNO_DEVICE             -1 
#define    XWRONG_TYPE            -2 
#define    XFILE_READ_ERR         -3 
#define    XBUFFER_TOO_SMALL      -4 
#define    XHANDLE_NOT_AVAIL      -5  
#define    XFILE_NOT_FOUND        -6 
#define    XREPEAT_FILE           -7 
#define    XHANDLE_NOT_USED       -8 
#define    XFILE_WRITE_ONLY       -9 
#define    XOUT_OF_SPACE          -10 
#define    XFILE_WRITE_ERR        -11 
#define    XFILE_READ_ONLY        -12 
#define    XFUNC_NOT_SUP          -13 
#define    XBAD_FILENAME          -14 
#define    XCANT_DEL_READ_ONLY    -15 
#define    XHANDLE_NOT_EXIST      -16 
#define    XONE_WIRE_PORT_ERROR   -17 
#define    XINVALID_DIRECTORY     -18 
#define    XDIRECTORY_NOT_EMPTY   -19 
#define    XUNABLE_TO_CREATE_DIR  -20 
#define    XNO_PROGRAM_JOB        -21 
#define    XPROGRAM_WRITE_PROTECT -22
#define    XNON_PROGRAM_PARTS     -23 
#define    XADDFILE_TERMINATED    -24 
#define    XTIMEOUT               -25 
#define    XINVALID_ARGUMENT      -26 
#define    XBAD_ACK               -27 
#define    XINVALID_SESSION       -200
#define    XNO_BASDRV_FOUND       -201
/* Basic physical level error codes  */
#define    BPORT_NOT_INITIALIZED   -1 
#define    BPORT_NOT_EXIST         -2 
#define    BNO_SUCH_FUNCTION       -3 
/* Transport level error codes  */
#define    TERROR_READ_WRITE       -4 
#define    TBUFFER_TOO_SMALL       -5 
#define    TDEVICE_TOO_SMALL       -6 
#define    TNO_DEVICE              -7 
#define    TBLOCK_TOO_BIG          -8 
#define    TWRONG_TYPE             -9 
#define    TPAGE_REDIRECTED        -10
#define    TPROGRAM_NOT_POSSIBLE   -11
#define    BCOM_FAILURE            -12
#define    BCOM_EVENT              -13
/* other  */
#define    GENERAL_FAIL            -2 
#define    BAD_ARGUMENT            50
#define    NO_DRIVERS              51
#define    KEY_ABORT               52
#define    OUT_MEMORY              53
#define    NORMAL_EXIT             0
#define    TRUE                    1
#define    FALSE                   0
#define    DIR_READ                1
#define    DIR_SET                 0
#define    DIR_REMOVE              1
#define    DIR_MAKE                0
// for TMOneWireLevel
#define    LEVEL_NORMAL            0
#define    LEVEL_STRONG_PULLUP     1
#define    LEVEL_BREAK             2
#define    LEVEL_PROGRAM           3  
#define    PRIMED_NONE             0
#define    PRIMED_BIT              1
#define    PRIMED_BYTE             2        
#define    LEVEL_READ              1
#define    LEVEL_SET               0

#ifdef __cplusplus
   extern "C" {
// Session Layer
__declspec(dllimport) long pascal  TMExtendedStartSession(short, short, void *);
__declspec(dllimport) long pascal  TMStartSession(short);
__declspec(dllimport) short pascal TMValidSession(long);
__declspec(dllimport) short pascal TMEndSession(long);
// File Operations Layer
__declspec(dllimport) short pascal TMFirstFile(long, void *, FileEntry *);
__declspec(dllimport) short pascal TMNextFile(long, void *, FileEntry *);
__declspec(dllimport) short pascal TMOpenFile(long, void *, FileEntry *);
__declspec(dllimport) short pascal TMCreateFile(long, void *, short *, FileEntry *);
__declspec(dllimport) short pascal TMCloseFile(long, void *, short);
__declspec(dllimport) short pascal TMReadFile(long, void *, short, unsigned char*, short);
__declspec(dllimport) short pascal TMWriteFile(long, void *, short, unsigned char *, short);
__declspec(dllimport) short pascal TMDeleteFile(long, void *, FileEntry *);
__declspec(dllimport) short pascal TMFormat(long, void *);
__declspec(dllimport) short pascal TMAttribute(long, void *, short, FileEntry *);
__declspec(dllimport) short pascal TMReNameFile(long, void *, short, FileEntry *);
__declspec(dllimport) short pascal TMChangeDirectory(long, void *, short, DirectoryPath *);
__declspec(dllimport) short pascal TMDirectoryMR(long, void *, short, FileEntry *);
__declspec(dllimport) short pascal TMCreateProgramJob(long, void *);
__declspec(dllimport) short pascal TMDoProgramJob(long, void *);
__declspec(dllimport) short pascal TMWriteAddFile(long, void *, short, short, short, unsigned char *, short);
__declspec(dllimport) short pascal TMTerminateAddFile(long, void *, FileEntry *);
__declspec(dllimport) short pascal TMGetFamilySpec(long, void *, Specification *);
__declspec(dllimport) short pascal Get_Version(char *);
// Transport Layer
__declspec(dllimport) short pascal TMReadPacket(long, void *, short, unsigned char *, short);
__declspec(dllimport) short pascal TMWritePacket(long, void *, short, unsigned char *, short);
__declspec(dllimport) short pascal TMBlockIO(long, unsigned char far *, short);
__declspec(dllimport) short pascal TMExtendedReadPage(long, void *, short, unsigned char *, short);
__declspec(dllimport) short pascal TMProgramByte(long, void *, short, short, short, short *, short);
__declspec(dllimport) short pascal TMProgramBlock(long, void *, unsigned char *, short, short, short *);
__declspec(dllimport) short pascal TMCRC(short, unsigned char *, unsigned short, short);
// Network Layer
__declspec(dllimport) short pascal TMFirst(long, void *);
__declspec(dllimport) short pascal TMNext(long, void *);
__declspec(dllimport) short pascal TMAccess(long, void *);
__declspec(dllimport) short pascal TMStrongAccess(long, void *);
__declspec(dllimport) short pascal TMStrongAlarmAccess(long, void *);
__declspec(dllimport) short pascal TMOverAccess(long, void *);
__declspec(dllimport) short pascal TMRom(long, void *, short *);
__declspec(dllimport) short pascal TMFirstAlarm(long, void *);
__declspec(dllimport) short pascal TMNextAlarm(long, void *);
__declspec(dllimport) short pascal TMFamilySearchSetup(long, void *, short);
__declspec(dllimport) short pascal TMSkipFamily(long, void *);
__declspec(dllimport) short pascal TMAutoOverDrive(long, void *, short);
__declspec(dllimport) short pascal TMSearch(long, void *, short, short, short);

// Hardware Specific Layer
__declspec(dllimport) short pascal TMSetup(long);
__declspec(dllimport) short pascal TMTouchByte(long, short);
__declspec(dllimport) short pascal TMTouchReset(long);
__declspec(dllimport) short pascal TMTouchBit(long, short);
__declspec(dllimport) short pascal TMProgramPulse(long);
__declspec(dllimport) short pascal TMOneWireLevel(long, short, short, short);
__declspec(dllimport) short pascal TMOneWireCom(long, short, short);
__declspec(dllimport) short pascal TMClose(long);
__declspec(dllimport) short pascal TMGetTypeVersion(short, char *);
__declspec(dllimport) short pascal TMBlockStream(long, unsigned char far *, short);
__declspec(dllimport) short pascal TMReadDefaultPort(short *, short *);
__declspec(dllimport) short pascal TMGetAdapterSpec(long, void *, Specification *);
}
#else
// Session Layer
extern long  far pascal TMExtendedStartSession(short, short, void far *);
extern long  far pascal TMStartSession(short);
extern short far pascal TMValidSession(long); 
extern short far pascal TMEndSession(long); 
// File Operations Layer
extern short far pascal TMFirstFile(long, void far *, FileEntry far *); 
extern short far pascal TMNextFile(long, void far *, FileEntry far *);
extern short far pascal TMOpenFile(long, void far *, FileEntry far *);
extern short far pascal TMCreateFile(long, void far *, short far *, FileEntry far *);
extern short far pascal TMCloseFile(long, void far *, short);
extern short far pascal TMReadFile(long, void far *, short, uchar far *, short);
extern short far pascal TMWriteFile(long, void far *, short, uchar far *, short);
extern short far pascal TMDeleteFile(long, void far *, FileEntry far *);
extern short far pascal TMFormat(long, void far *);
extern short far pascal TMAttribute(long, void far *, short, FileEntry far *);
extern short far pascal TMReNameFile(long, void far *, short, FileEntry far *); 
extern short far pascal TMChangeDirectory(long, void far *, short, DirectoryPath far *); 
extern short far pascal TMDirectoryMR(long, void far *, short, FileEntry far *);
extern short far pascal TMCreateProgramJob(long, void far *);
extern short far pascal TMDoProgramJob(long, void far *);
extern short far pascal TMWriteAddFile(long, void far *, short, short, short, uchar far *, short);
extern short far pascal TMTerminateAddFile(long, void far *, FileEntry far *);
extern short far pascal TMGetFamilySpec(long, void *, Specification *);
extern short far pascal Get_Version(char far *);
// Transport Layer
extern short far pascal TMReadPacket(long, void far *, short, uchar far *, short);
extern short far pascal TMWritePacket(long, void far *, short, uchar far *, short);
extern short far pascal TMBlockIO(long, uchar far *, short);
extern short far pascal TMExtendedReadPage(long, void far *, short, uchar far *, short);
extern short far pascal TMProgramByte(long, void far *, short, short, short, short far *, short);
extern short far pascal TMProgramBlock(long, void far *, unsigned char far *, short, short, short far *);
extern short far pascal TMCRC(short, unsigned char far *, unsigned short, short);
// Network Layer
extern short far pascal TMSkipFamily(long, void far *); 
extern short far pascal TMFamilySearchSetup(long, void far *, short); 
extern short far pascal TMFirst(long, void far *);
extern short far pascal TMNext(long, void far *);
extern short far pascal TMAccess(long, void far *);
extern short far pascal TMOverAccess(long, void far *);
extern short far pascal TMStrongAccess(long, void far *);
extern short far pascal TMStrongAlarmAccess(long, void far *);
extern short far pascal TMRom(long, void far *, short far *);
extern short far pascal TMFirstAlarm(long, void far *);
extern short far pascal TMNextAlarm(long, void far *);  
extern short far pascal TMAutoOverDrive(long, void far *, short);
extern short far pascal TMSearch(long, void far *, short, short, short);
// Hardware Specific Layer
extern short far pascal TMSetup(long);
extern short far pascal TMTouchByte(long, short);
extern short far pascal TMTouchReset(long);
extern short far pascal TMTouchBit(long, short);
extern short far pascal TMProgramPulse(long); 
extern short far pascal TMOneWireLevel(long, short, short, short); 
extern short far pascal TMOneWireCom(long, short, short); 
extern short far pascal TMClose(long);
extern short far pascal TMGetTypeVersion(short,char far *); 
extern short far pascal TMBlockStream(long, uchar far *, short);
extern short far pascal TMReadDefaultPort(short far *, short far *); 
extern short far pascal TMGetAdapterSpec(long, void far *, Specification far *);
#endif
Merci d'avance.
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: API pour débutant

Message par Ollivier »

Salut MetalOS,

La première question qui me vient à l'esprit c'est est-ce que tu avais réussi à faire tourner quelque chose il y a deux ans?
(Ou depuis deux ans?)

La seconde c'est que, vu la présentation des pointeurs, il vaut mieux déjà essayer d'ouvrir les DLLs avec la bibliothèque adéquate: est-ce que c'est possible? >>> Est-ce que tu peux ouvrir un des fichiers DLL avec OpenDLL, etc... Sans que ça plante?

Ollivier
Avatar de l’utilisateur
MetalOS
Messages : 1510
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Re: API pour débutant

Message par MetalOS »

Salut Ollivier,

Non depuis deux ans je n'est rien réussi à faire tourner, quand à la dll je ne la trouve pas. Je ne suis même pas sur si il existe une dll pour l'api TMEX. Je me demande si il ne faut pas passer directement par les dll du driver USB fourni. Je t’avouerais que je galère beaucoup avec ce truc lol, mais je ne désespère pas :wink:
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: API pour débutant

Message par Ollivier »

Je n'ai pas le temps ce soir alors je te poste le log de ma recherche.

1) Google >>> Tapez « 1-wire »
2) Choisir le lien vers Wikipedia 1-wire
3) Aller au § Liens externes et cliquez sur Création d'un réseau 1-wire
4) Au §7 du site, il y a un lien vers le fabricant
5) Tu downloades le msi et exécute l'installe en gardant les répertoires par défaut pour éviter de se perdre (le CLUF exige que ce message « Copyright (C) 2010 Maxim Integrated Products, All Rights Reserved. » apparaisse pour le client qui use de ton logiciel.)
6) Sur ton HD, ouvre le fichier Program Files\Maxim Integrated Products\1-Wire Drivers x86\ReadMe.htm
7) Dans le § « Drivers and API files », il y a un listing des DLLs installés

Code : Tout sélectionner

ibfs32.dll
ib97u32.dll
ib97e32.dll
ibusb32.dll
ibtmjava.dll
Logiquement, à ce stade la situation est déjà plus constructive pour parvenir à tes fins?
Avatar de l’utilisateur
MetalOS
Messages : 1510
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Re: API pour débutant

Message par MetalOS »

Je vient de trouver ces dll aussi. Je vais regarder ca, merci pour ton aide Ollivier je te tiens au courant.

Si ca t’intéresse, tu peut commander comme échantillons gratuit 2 ou 3 sondes de température sur le site du constructeur. Il me semble même que la livraison est gratuite. Je ne me rappelle plus mais il me semble n'avoir rien payer quand j'ai fait ma commande. Le branchement de ces sondes est très simple car ca n'utilise que 2 files qu'il faut relier sur un convertisseur 1-wire USB ou série. Ca permet de s'essayer à la domotique ou tous simplement à avoir la température de plusieurs composants de sont PC. Pour ma part j'utilise un détecteur d'orage qui utilise la technologie 1-wire mais le logiciel fournit en démo par le constructeur reste trop généraliste pour la totalité de la variété de composants 1-wire. D'ou l’intérêt de pouvoir programmer un soft sur mesure pour mon détecteur.
Répondre