|
Page 1 sur 1 [ 4 messages ]
|
C probleme avec sceHttpCreateRequestWithURL
| Auteur |
Message |
|
PSP addict
Messages: 243
|
 C probleme avec sceHttpCreateRequestWithURL
Bonjour , je veux afficher une image jpg qui vien du "net" avec ma PSP en boucle (car c'est une webcam) : Code : #include <pspkernel.h> #include <oslib/oslib.h>
#include <psphttp.h> #include <psprtc.h>
PSP_MODULE_INFO("Net Test", 0, 1, 0); PSP_MAIN_THREAD_ATTR(THREAD_ATTR_USER | THREAD_ATTR_VFPU); PSP_HEAP_SIZE_KB(-2048);
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Globals: ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
static int runningFlag = 1; OSL_IMAGE *bkg = NULL; static char message[100] = ""; static char buffer[100] = "";
SceULong64 length; void* target;
char *url = "http://192.168.10.90:8888/";
int template, connexion, request, ret, status;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Callbacks: /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /* Exit callback */ int exit_callback(int arg1, int arg2, void *common) { runningFlag = 0; return 0; }
/* Callback thread */ int CallbackThread(SceSize args, void *argp) { int cbid;
cbid = sceKernelCreateCallback("Exit Callback", exit_callback, NULL); sceKernelRegisterExitCallback(cbid); sceKernelSleepThreadCB(); return 0; }
/* Sets up the callback thread and returns its thread id */ int SetupCallbacks(void) { int thid = 0; thid = sceKernelCreateThread("update_thread", CallbackThread, 0x11, 0xFA0, PSP_THREAD_ATTR_USER, 0); if(thid >= 0) sceKernelStartThread(thid, 0, 0); return thid; }
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Init OSLib: /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// int initOSLib(){ oslInit(0); oslInitGfx(OSL_PF_8888, 1); oslInitAudio(); oslSetQuitOnLoadFailure(1); oslSetKeyAutorepeatInit(40); oslSetKeyAutorepeatInterval(10); return 0; }
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Connect to Access Point: /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// int connectAPCallback(int state){ oslStartDrawing(); oslDrawImageXY(bkg, 0, 0); oslDrawString(30, 200, "Connecting to AP..."); sprintf(buffer, "State: %i", state); oslDrawString(30, 230, buffer); oslEndDrawing(); oslEndFrame(); oslSyncFrame();
return 0; }
int connectToAP(int config){ oslStartDrawing(); oslDrawImageXY(bkg, 0, 0); oslDrawString(30, 200, "Connecting to AP..."); oslEndDrawing(); oslEndFrame(); oslSyncFrame();
int result = oslConnectToAP(config, 10, connectAPCallback); if (!result){ template = sceHttpCreateTemplate("OSL-agent/0.0.1 libhttp/1.0.0", 1, 1);if(template < 0) return 0; connexion = sceHttpCreateConnectionWithURL(template, url, 0);if(connexion < 0) return 0; return 1; }else{ oslStartDrawing(); oslDrawImageXY(bkg, 0, 0); sprintf(buffer, "Error connecting to AP!"); oslDrawString(30, 200, buffer); oslEndDrawing(); oslEndFrame(); oslSyncFrame(); sceKernelDelayThread(3*1000000); } //oslDisconnectFromAP(); return 0; }
int Net_IMG_Load(int save_MS){
//ret = sceHttpSetResolveTimeOut(template, 500000);if(ret < 0) return 0; //ret = sceHttpSetRecvTimeOut(template, 10000000);if(ret < 0) return 0; //ret = sceHttpSetSendTimeOut(template, 10000000);if(ret < 0) return 0; request = sceHttpCreateRequestWithURL(connexion, PSP_HTTP_METHOD_GET, (char*)url, 0);if(request < 0) return 0; ret = sceHttpSendRequest(request, 0, 0);if(ret < 0) return 0; ret = sceHttpGetStatusCode(request, &status);if(ret < 0) return 0;if(status != 200) return 0;
//***merci biscottealacrevette sceHttpGetContentLength (request, &length); target = malloc((SceULong64)length); sceHttpReadData(request,target,(SceULong64)length); //***
//Set data for the temporary file oslSetTempFileData(target, length, &VF_MEMORY); //Load a JPG file using the temporary file (oslGetTempFileName to get its name) oslDeleteImage(bkg); bkg = oslLoadImageFileJPG(oslGetTempFileName(), OSL_IN_RAM | OSL_SWIZZLED, OSL_PF_8888); //oslScaleImage (bkg,bkg,0,0,480,272); if (save_MS>0) { int fd; char *filepath=""; pspTime TimePSP; sceRtcGetCurrentClockLocalTime(&TimePSP); sprintf(filepath,"ms0:/PSP/PHOTO/FOX_%02dH%02dM%02dS%02dms.jpg" , TimePSP.hour , TimePSP.minutes , TimePSP.seconds , (TimePSP.microseconds>>12) & 0xff); fd = sceIoOpen(filepath, PSP_O_WRONLY | PSP_O_CREAT, 0777); sceIoWrite(fd, target, (SceULong64)length); sceIoClose(fd); } free(target); return 0; }
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Main: /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// int main(){ int skip = 0; int enabled = 1; int selectedConfig = 0; SetupCallbacks();
initOSLib(); oslIntraFontInit(INTRAFONT_CACHE_MED); oslNetInit();
//Loads image: bkg = oslLoadImageFilePNG("bkg.png", OSL_IN_RAM | OSL_SWIZZLED, OSL_PF_8888);
//Load font: OSL_FONT *font = oslLoadFontFile("flash0:/font/ltn0.pgf"); oslSetFont(font);
if (!oslIsWlanPowerOn()) sprintf(message, "Please turn on the WLAN.");
//Get connections list: struct oslNetConfig configs[OSL_MAX_NET_CONFIGS]; int numconfigs = oslGetNetConfigs(configs); if (!numconfigs){ sprintf(message, "No configuration found!"); enabled = 0; }
int connected = 0;
while(runningFlag && !osl_quit){ if (!skip){ oslStartDrawing(); oslDrawImageXY(bkg, 0, 0); if (enabled){ sprintf(buffer, "Press X to connect to %s.", configs[selectedConfig].name); oslDrawString(30, 5, buffer); oslDrawString(30, 25, "Press UP and DOWN to change settings."); } oslDrawString(30, 60, "Press /\\ to quit.");
sprintf(buffer, "Memory Available %iko.", oslGetRamStatus().maxAvailable/1024); oslDrawString(30, 95, buffer); sprintf(buffer, "Image %iko.", length/1024); oslDrawString(30, 115, buffer); sprintf(buffer, "Connected %i.template %i,\nconnexion %i,request %i,\nret %i, status %i", connected, template, connexion, request, ret, status); oslDrawString(30, 135, buffer); oslDrawString(30, 250, message);
oslEndDrawing(); } oslEndFrame(); skip = oslSyncFrame();
oslReadKeys(); if (osl_keys->released.triangle) runningFlag = 0;
if (osl_keys->released.cross){
connected = connectToAP(selectedConfig + 1); while (connected==0) {connected = connectToAP(selectedConfig + 1);}
}else if (osl_keys->released.circle){ //Net_IMG_Load(0);
}else if (osl_keys->released.up){ if (++selectedConfig >= numconfigs) selectedConfig = numconfigs - 1;
}else if (osl_keys->released.down){ if (--selectedConfig < 0) selectedConfig = 0; } if (connected>0) { Net_IMG_Load(0); } } //Quit OSL: oslNetTerm(); oslEndGfx(); sceKernelExitGame(); return 0;
}
mais au bout de quelques sceHttpCreateRequestWithURL j'ai un request negatif , et probleme avec la lenteur de oslScaleImage qui me fais perdre bcp de "FPS" , pendant que j'y suis, je voudrais utiliser un peu plus de ram (c'est une slim) mais je n'arrive pas a liberer toute la memoire de la slim (cf 6.60)
|
| 12 Jan 2012, 17:25 |
|
 |
|
publicité
|
|
 |
|
PSP bronze
Messages: 1248
|
 Re: C probleme avec sceHttpCreateRequestWithURL
Pour ton problème de sceHttp aucune idée, jamais test. Si je me souviens bien c'est avec "PSP_HEAP_SIZE_KB(-2048);" que tu dis combien de RAM tu veux utiliser. Là tu utilise toute la RAM, sauf 2048kB pour les autres threads etc.
|
| 14 Jan 2012, 04:28 |
|
 |
|
PSP addict
Messages: 243
|
 Re: C probleme avec sceHttpCreateRequestWithURL
merci , oui pour la memoire j'utilise en theorie tout sauf 2 mo (pour la connexion) mais oslGetRamStatus().maxAvailable/1024 me renvoie "que" 19 XXX (19 Mo) lorque je lance l'eboot et 47 XXX sous psplink.
|
| 14 Jan 2012, 15:14 |
|
 |
|
PSP bronze
Messages: 1248
|
 Re: C probleme avec sceHttpCreateRequestWithURL
Akabane pourra t'aider mieux que moi pour des 'blem OSLib. Passes sur xtreamlua si t'as 2 min. Avec un peu de chance il sera connecté quand tu passeras ^^.
|
| 15 Jan 2012, 06:12 |
|
 |
|
|
Page 1 sur 1 [ 4 messages ]
|
Qui est en ligne ? |
Utilisateurs parcourant actuellement ce forum : Aucun utilisateur inscrit |
|
Vous ne pouvez pas publier de nouveaux sujets dans ce forum Vous ne pouvez pas répondre aux sujets dans ce forum Vous ne pouvez pas éditer vos messages dans ce forum Vous ne pouvez pas supprimer vos messages dans ce forum Vous ne pouvez pas insérer de pièces jointes dans ce forum
|
|