API pour débutant
API pour débutant
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
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
-
- Messages : 1501
- Inscription : dim. 18/avr./2004 15:04
- Localisation : sud de la france
bonsoir
va voir de ce cote tu va trouver des infos sur les API ?
http://www.purebasic.fr/french/viewtopic.php?t=1498
va voir de ce cote tu va trouver des infos sur les API ?
http://www.purebasic.fr/french/viewtopic.php?t=1498
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
ici une partie de la doc traduit avec google oui il en parle
http://translate.google.fr/translate?u= ... r&ie=UTF-8
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.
http://66.102.9.104/translate_c?hl=fr&s ... KLpVqUiDEA
ps: la source est traduite , récupère l'originale.
- Progi1984
- Messages : 2659
- Inscription : mar. 14/déc./2004 13:56
- Localisation : France > Rennes
- Contact :
Librairies & Applications : https://www.purebasic.fr/french/viewtop ... f=8&t=6220
Site Web : https://rootslabs.net
Site Web : https://rootslabs.net
Re: API pour débutant
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 :
Merci d'avance.
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
Re: API pour débutant
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
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
Re: API pour débutant
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
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

Re: API pour débutant
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
Logiquement, à ce stade la situation est déjà plus constructive pour parvenir à tes fins?
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
Re: API pour débutant
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.
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.