[dashlaunchtempmonitor] Qui Pourrait M'aider Avec Les Sources


Pink Floyd
 Share

Messages recommandés

Bonjour a tous,

Est ce que quelqu'un pourrais m'aider a comprendre les sources de Dashlaunch temp monitor ?

J'aimerais faire ma propre appli un peu plus élaboré ( alarme, graphique etc... )

Sauf que j'ai un peu de mal avec le c#

J'aimerais comprendre comment allez lire les infos sur le port 7030 de la console.

Autant je comprend comment il convertis les donné etc... autant je ne comprend pas comment les "lire"

Quelqu'un pour m'aiguiller ?

PS : je vois pas mal de truc interessant dans Main.cs, notament la fonction "private void bw_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e)"

et la :

IPEndPoint ep = new IPEndPoint(0, portnum);			s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);			s.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);			s.Bind(ep);			run();

Merci !

======================================================================

Credits - Thanks to:

======================================================================

- Author : Swizzy's

- cOz, Thanks for dashlaunch! and thanks for all your help with everything!

- Jack Nepacha, Thanks for the icon and general support with the designing!

- My Beta testers, Thanks for always beeing there for me, to help me find

bugs, and giving me general advice of how to improve the apps i make!

src.rar

Modifié par Pink Floyd
Lien vers le commentaire
Partager sur d'autres sites

Salut, je vais tenter d'expliquer... :D

bon la partie :

			   IPEndPoint ep = new IPEndPoint(0, portnum);			   s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);			   s.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);			   s.Bind(ep);

permet (en gros) d'ouvrir le port d'écoute "portnum" dans ce cas la c'est le 7030 en udp

en suite on fait appel a la fonction

run();

			   bw.RunWorkerAsync();			   while (bw.IsBusy)			   {								   Application.DoEvents();				   Thread.Sleep(100);				   readingsout.Text = readings.ToString();			   }

qui elle fait appel a la fonction

bw_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e)

de manière asynchrone (autre thread) afin de pas bloquer l'application principale.

et dans cette même fonction dès que l'on recoit des "infos" on les traites.

En esperant de t'avoir un peu aider :)

Lien vers le commentaire
Partager sur d'autres sites

bizzarement quand j'ecoute en udp sur le 7030 de ma carte, je ne vois rien :(

bon j'ai finalement reussi, maintenant faut comprendre comment recup les valeurs :

18:55:21.506953 IP XBOX360.1032 > 255.255.255.255.7030: UDP, length 512	0x0000:  4500 021c b221 0000 4011 05ee c0a8 001a  E....!..@.......	0x0010:  ffff ffff 0408 1b76 0208 ead1 075a 3127  .......v.....Z1'	0x0020:  40e9 3a69 1e2c 0000 0000 0000 4672 6565  @.:i.,......Free	0x0030:  7374 796c 652e 6578 6500 0000 0000 0154  style.exe......T	0x0040:  0000 0000 0000 0000 0000 0000 0000 0000  ................	0x0050:  0000 0000 0000 0000 0000 0000 0000 0000  ................	0x0060:  0000 0000 0000 0000 0000 0000 0000 0000  ................	0x0070:  0000 0000 0000 0000 0000 0000 5c44 6576  ............\Dev	0x0080:  6963 655c 4d61 7373 305c 5f46 7265 6573  ice\Mass0\_Frees	0x0090:  7479 6c65 6461 7368 5c64 6566 6175 6c74  tyledash\default	0x00a0:  2e78 6578 0000						   .xex..

Modifié par Pink Floyd
Lien vers le commentaire
Partager sur d'autres sites

la sortie, c'est "serverData" ?

Edit : j'ai fait un tit truc a l'arrache pour voir si ça marche (vu que chez moi j'ai pas les moyens de tester... snif) : Sources , si ça fonctionne je pourrai plus te le commenter afin de t'aider.

Modifié par HoRuS VbR
Lien vers le commentaire
Partager sur d'autres sites

HoRuS VbR, il te serait possible de me compiler ton truc pour qu'il me sorte le resultat en ligne de commande que je puisse l'integrer a mon appli ? car je developpe pas en VB et j'ai du mal a comprendre comment convertir les données brut en données lisible

en gros cette partie la quoi :

if(temp->commandIdent == 0x7)	{		double cpu = (temp->cpuLower | (temp->cpuUpper << 8)) / 256.0;		double gpu = (temp->gpuLower | (temp->gpuUpper << 8)) / 256.0;		double edram = (temp->edramLower | (temp->edramUpper << 8)) / 256.0;		double mb = (temp->moboLower | (temp->moboUpper << 8)) / 256.0;		DWORD tid = loadBe32(&temp->titleId);		DWORD mid = loadBe32(&temp->mediaId);		printf("CPU:%3.1fC GPU:%3.1fC EDRAM:%3.1fC MB:%3.1fC TID: 0x%08x MID: 0x%08x", cpu, gpu, edram, mb, tid, mid);

Modifié par Pink Floyd
Lien vers le commentaire
Partager sur d'autres sites

ahhhh oki ! J'ai un peu de mal lol

Bon alors on lit 512 octets du socket on met tout ça dans un tableau mReceive.

On test le premier octet si le 1er octet (mReceive[0]) == 0x07 alors on continu... sinon on va se coucher :P

(je pars du principe que le 2eme octet = 0x5a et le 3eme = 0x31 (parce que j'ai envie :D))

0x5a = 01011010 (en binaire) = 90 (décimal)

0x31 = 00110001 (en binaire) = 49 (décimal)

alors l'opération pour la température du cpu (je prend le code que tu as posté en c#) :

Cpu = ((mReceive[1]) + (mReceive[2] << 8)) / mDivisor;

devient dans notre exemple :

Cpu = (0x5a + (0x31 << 8)) / 256;

(0x31 << 8) correspond a un décalage de 8 bits vers la gauche : 0110001 << 8 = 0011000100000000 = 0x3100 = 12544 (décimal)

donc :

Cpu = (0x5a + 0x3100) / 256.0;					= (90 + 12544) / 256.0; (décimal)					= 49.3515625 (décimal)

Conclusion notre CPU est a 49.35°c.

Désolé si ça fait un peu neuneu mais j'essaye d'être le plus clair possible :)

Lien vers le commentaire
Partager sur d'autres sites

J'ai pas trop compris, tu voudrais un truc dans ce genre ?

outrs.th.jpg

Edit : Tu developpes en quoi ?

ah vi ! exactement ca !

sinon je developpe en Autoit... donc l'appli sera x32 et x64 sous Win

merci pour ton explication j'ai conmpris vais tenter de reproduire ca, sinon ta capture d'ecran c'est le script python que tu as lancé ?

EDIT : suffit d'ouvrir les yeux pour voir que c'est le .c que tu as lancé ^^ , tu pourrais me l'envoyer stp que je comprare les deux méthode ? Merci !

Modifié par Pink Floyd
Lien vers le commentaire
Partager sur d'autres sites

le screen que je t'ai fait est un enorme fake, vu que j'ai pas DashLaunch... (je prog un peu a l'aveuglette)

Bon j'ai fais ça [TempMonitor.rar], lance l'executable (sans aucun paramètre) déja juste pour voir si ça marche... lol

PS. Desolé pour le code de "Program.cs", il est vraiment dégueu, mais c'est "CTemp.cs" qui est le plus intérressent.

Lien vers le commentaire
Partager sur d'autres sites

le screen que je t'ai fait est un enorme fake, vu que j'ai pas DashLaunch... (je prog un peu a l'aveuglette)

Bon j'ai fais ça [TempMonitor.rar], lance l'executable (sans aucun paramètre) déja juste pour voir si ça marche... lol

PS. Desolé pour le code de "Program.cs", il est vraiment dégueu, mais c'est "CTemp.cs" qui est le plus intérressent.

merci je test de suite ^^

marche nickel du premier coup !

Modifié par Pink Floyd
Lien vers le commentaire
Partager sur d'autres sites

C'est bien la premiere fois que ça m'arrive lol :D

Si tu as des questions n'hésite pas.

juste histoire d'être chiant ( surtout pour limiter les acces disques en fait ) tu pourrais juste rajouter une option pour tout ecrire dans un seul fichier texte ?

Enorme merci en tout cas, tu m'as bien débloqué.

Lien vers le commentaire
Partager sur d'autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
 Share