Recherche un pro du C sous linux
Publié : lun. 31/mars/2008 15:52
j'ai un gros probleme avec une librarie fait maison, elle se charge sans probleme seulement j'ai du oublié de declarer quelque chose car losque j'appelle une fonction avec parametre j'ai un illegal memory access.
par exemple
plante sauf si je retirre l'atribut #Null
la partie oled qui nous m'interesse
oled.c
le oled.h
par exemple
Code : Tout sélectionner
Debug OpenLibrary(0, "./liboled.so.1.0")
ExamineLibraryFunctions(0)
init = GetFunction(0, "oled_Initialize")
Debug init
CallCFunctionFast(init, #Null)
la partie oled qui nous m'interesse
oled.c
Code : Tout sélectionner
char* oled_Initialize(char* dev){
oled_configtty(); //configuration des entrées/sorties du port série
if(dev==NULL){
strcpy(dev,LCD);
} // si aucun périphérique n'est spécifié, on spécifie celui par défaut
fd = oled_setconfig(LCD); //application de la configuration (avec sauvegarde de l'ancienne
if(fd==EXIT_FAILURE){
fprintf(stderr,"Fatal error : %s (%d)\n", strerror(errno), errno);
exit(EXIT_FAILURE);
}
//tester si une structure est vide???
//affectation a une structure a partir de son pointeur
unsigned char argtab[1]={'U'};
SENDLCD(argtab);
unsigned char argtab2[3] = {'Y', 0x03, 0x01};
SENDLCD(argtab2);
/*infos = *(oled_info(OLED_INFOOUTPUT_SERIAL));*/
/*if(infos==NULL){
fprintf(stderr, "Can not retrieve OLED informations\n");
}*/
return dev;
}
Code : Tout sélectionner
#ifndef OLED_H
#define OLED_H
#include<string.h>
#include<stdlib.h>
#include<stdio.h>
#include<termios.h>
#include<errno.h>
#include<fcntl.h>
#include<unistd.h>
#include<stdbool.h>
#define BAUDRATE B115200
#define LCD "/dev/ttyUSB0"
#define SENDLCD(str) oled_sendlcd(str,(sizeof(str)/sizeof(*str)))
#define ACK 0x06
#define NACK 0x15
/*declaration en tout genre*/
char* oled_Initialize(char* dev);
int oled_finalize();
void oled_configtty();
int oled_setconfig();
int oled_restoreconfig();
unsigned char * oled_sendlcd(unsigned char *data, int taille);
unsigned char * oled_sendlcdans(unsigned char *data);
bool iscoordvalid(unsigned char x, unsigned char y);
oled_color16 * oled_color24to16(oled_color24 * pColor);
int oled_erasescreen();
int oled_backlight(char value);
int oled_displaycontrol(oled_display statut);
int oled_contrast(char value);
int oled_powercontrol(oled_power state);
void oled_setinfostruct(oled_deviceinfo info);
oled_deviceinfo * oled_setinfo(oled_devicetype type,char hardware_rev, char firmware_rev, oled_res horizontal_res, oled_res vertical_res, oled_flash flash_memory_size);
oled_deviceinfo * oled_info(oled_infooutput output);
#endif