Périphérique de type physique (lecture, ecriture).

Sujets variés concernant le développement en PureBasic
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

Périphérique de type physique (lecture, ecriture).

Message par GallyHC »

Bonjour tout le monde,

J’ai un petit problème et j’ai fait pas mal de recherche a ce sujet et vraiment rien trouvais. Comme vous devais le savoir sur Windows on peu avoir des périphériques logique et physique.

Pour les logique pas de problème avec juste sa lettre on fait ce que l’on veut par contre pour les périphérique physique (genre certain téléphone, appareil photo, ect…) la je sèche complètement.

Y a-t-il un moyen liste, écrire ect… sur ce type de périphérique et surtout comment. Par principe je dirais que oui vu que Windows le fait, mais en programmation la….

En fait je voudrais accéder à mon galaxy S3 (mon nouveau jouer :-)).

Merci déjà à tous,
GallyHC
Dernière modification par GallyHC le jeu. 21/juin/2012 11:11, modifié 1 fois.
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Re: Périphérique de type physique (lecture, ecriture).

Message par Le Soldat Inconnu »

Je ne comprends pas, tu y accèdes de la même façon.

Disque dur
Clé USB
ton téléphone

La méthode est la même

La seule différence, c'est que la lettre associé au lecteur peut changer. Mais tu peux retrouver la lettre de lecteur grâce au nom du lecteur par exemple.

Voici un code qui liste les lecteurs du PC

Code : Tout sélectionner

; Auteur : Le Soldat Inconnu
; Version de PB : 4.6

; Explication du programme :
; Récupérer la lettre et le type (disquette, disque dur, etc...) de tous les lecteurs présents sur l'ordinateur.



Procedure GetDrive(Search_Type.l = -1)
	Structure DriveInfos
		Letter.s
		type.l
		Name.s
		DisplayName.s
		FileSystem.s
	EndStructure
	Global NewList Drive.DriveInfos()
	
	; Les valeurs retounées dans le type de lecteur
	; #DRIVE_UNKNOWN = 0 ; The Drive Type cannot be determined.
	; #DRIVE_NO_ROOT_DIR = 1 ; The root Path is invalid; for example, there is no volume is mounted at the path.
	; #DRIVE_REMOVABLE = 2 ; The Drive has removable media; for example, a floppy drive, thumb drive, or flash card reader.
	; #DRIVE_FIXED = 3 ; The Drive has fixed media; for example, a hard drive or flash drive.
	; #DRIVE_REMOTE = 4 ; The Drive is a remote (network) Drive.
	; #DRIVE_CDROM= 5 ; The Drive is a CD-ROM Drive.
	; #DRIVE_RAMDISK = 6 ; The drive is a RAM disk.
	
	Protected DriveString_Length.l, DriveString.s, DriveIndex.l, FileInfo.SHFILEINFO, DriveName.s, DriveFileSystem.s, CharSize.b
	
	; Vide la liste
	ClearList(Drive())
	
	; Taille des caractères en byte
	CharSize = StringByteLength(" ")
	
	; Récupère la liste des lecteurs
	DriveString_Length = GetLogicalDriveStrings_(0, 0)
	DriveString = Space(DriveString_Length)
	DriveString_Length * CharSize
	GetLogicalDriveStrings_(DriveString_Length, @DriveString)
	
	DriveIndex = 0
	Repeat
		AddElement(Drive())
		
		Drive()\Letter = PeekS(@DriveString + DriveIndex) ; Lettre
		Drive()\Letter = StringField(Drive()\Letter , 1, ":") + ":"
		
		Drive()\type = GetDriveType_(@Drive()\Letter) ; Type de lecteur
		
		
		If Drive()\type = Search_Type Or Search_Type = -1
			
			SHGetFileInfo_(Drive()\Letter + "\", 0, @FileInfo, SizeOf(SHFILEINFO), #SHGFI_DISPLAYNAME)
			Drive()\DisplayName = Trim(PeekS(@FileInfo\szDisplayName))
			DriveName = Space(#MAX_PATH)
			DriveFileSystem = Space(#MAX_PATH)
			GetVolumeInformation_(Drive()\Letter + "\", @DriveName, #MAX_PATH, 0, 0, 0, @DriveFileSystem, #MAX_PATH) ; Récupère le nom du volume et le type du système de fichier
			Drive()\Name = Trim(DriveName)
			Drive()\FileSystem = Trim(DriveFileSystem)
			
		Else
			DeleteElement(Drive())
		EndIf
		
		DriveIndex + StringByteLength(DriveString) + CharSize
		
	Until DriveIndex >= DriveString_Length - CharSize
	
EndProcedure




;- Debut du test

; Création de la fenêtre
If OpenWindow(0, 0, 0, 720, 200, "Lecteur", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget) = 0
	End
EndIf

GetDrive()

ListIconGadget(0, 0, 0, WindowWidth(0), WindowHeight(0), "Lettre", 40, #PB_ListIcon_FullRowSelect | #PB_ListIcon_AlwaysShowSelection)
AddGadgetColumn(0, 1, "Type", 40)
AddGadgetColumn(0, 2, "Nom", 200)
AddGadgetColumn(0, 3, "Nom affiché dans l'explorateur", 300)
AddGadgetColumn(0, 4, "Système de fichier", 100)
ForEach Drive()
	AddGadgetItem(0, -1, Drive()\Letter + Chr(10) + Str(Drive()\Type) + Chr(10) + Drive()\Name + Chr(10) + Drive()\DisplayName + Chr(10) + Drive()\FileSystem)
Next

Repeat
	Event = WaitWindowEvent()
	
Until Event = #PB_Event_CloseWindow


Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

Re: Périphérique de type physique (lecture, ecriture).

Message par GallyHC »

Bonjour "Le Soldat Inconnu",

Déjà merci. Justement non, il n'a pas de lettre affecté et n’apparait pas dans la liste de ton code. Une capture est plus parlante alors (le périphérique est le GT-I9300) :

Image

Donc forcement avec ton code j'obtiens

Image

Visiblement certain périphérique on un accès direct et la je sèche. Pour info, le lecteur K:\ est le lecteur de SD.

A tout hazard je met aussi la fenêtre de propriété de Galaxy S3 et cela donne juste :

Image

Cordialement,
GallyHC
Dernière modification par GallyHC le jeu. 21/juin/2012 11:11, modifié 1 fois.
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Re: Périphérique de type physique (lecture, ecriture).

Message par Le Soldat Inconnu »

Ah, c'est une option de ton téléphone, il faut changer le mode de connexion USB, tu es surement en mode média, il faut passer ton téléphone en mode stockage de masse. (en tous cas, c'est comme ça sur mon android Xperia mini pro)
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

Re: Périphérique de type physique (lecture, ecriture).

Message par GallyHC »

Je penses que tu as raison, Mais (y a toujours un mais lol), comme une partie des utilisateurs de mon logiciel ne changeron pas le mode de leur tel, je cherche a voir si il peux y avoir une solution :)

Encore une fois merci,
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Périphérique de type physique (lecture, ecriture).

Message par falsam »

Une autre solution consiste à installer un serveur ftp sur ton téléphone. Il existe pas mal de serveur ftp sur le Google Play (Android Market) celle que je préfère est My Ftp Serveur qui est le remplaçant de SwiFTP FTP Server (Application abandonné)

Les fonctionnalités ftp de pure basic fonctionnent parfaitement.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
dayvid
Messages : 1242
Inscription : mer. 11/nov./2009 18:17
Localisation : Poitiers (Vienne)

Re: Périphérique de type physique (lecture, ecriture).

Message par dayvid »

Merci LSI pour ton code :D
La vie, C'est comme, Une boitte, De startis, On en voie, De toutes, Les couleurs !

Mon forum http://purebasic.forumphp3.com/index.php
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

Re: Périphérique de type physique (lecture, ecriture).

Message par GallyHC »

Merci falsam de ta réponse, mais (encore une fois lol), c'est pour les utilisateurs landa alors l'installe d'un serveyr FTP, paramétrage ect... Je penses que que ce soit la meilleur des solutions. Je suis sur que l'on peu acceder au fichier de ce type de peripheriquen, par contre c'est comment lollll bon je vais continuer mes recherche et si je trouve quelque chose je vous donnerais.

Cordialement,
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Avatar de l’utilisateur
case
Messages : 1546
Inscription : lun. 10/sept./2007 11:13

Re: Périphérique de type physique (lecture, ecriture).

Message par case »

je ne crois pas qu'il soit possible d’accéder au fichiers stockes dans le téléphone sans en changer le mode.

par contre peut être qu'il existe des commandes que tu peux envoyer via l'usb pour le faire changer de mode ?
ImageImage
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Périphérique de type physique (lecture, ecriture).

Message par falsam »

My Ftp Serveur n'est pas du tout compliqué pour un utilisateur non initié au ftp. Il suffit de renseigner un nom d'utilisateur et un mot de passe et d'activer ensuite le serveur en appuyant sur le bouton Active Server :)


Si tu branche ton galaxy tu dois avoir en principe sur ton téléphone l'image suivante :
Image

Si tu active Usb Storage tu dois pouvoir lire facilement le contenu de ton ou tes MicroSD Memory.

Le code suivant (Droopy 28/11/05 clin d'oeil à Dobro :p) détectera parfaitement tes cartes figurant sur ton téléphone.

Code : Tout sélectionner

Procedure DetectUSBKey() 
  For n=0 To 26 
    If RealDriveType_(n,0)=  #DRIVE_REMOVABLE
      Debug Chr(n+65)+": Drive is a Removable Drive" 
    EndIf 
  Next 
EndProcedure 

DetectUSBKey() 
Voila ce que ça donne chez moi avec un galaxy équipé de deux carte SD

Code : Tout sélectionner

G: Drive is a Removable Drive
H: Drive is a Removable Drive
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

Re: Périphérique de type physique (lecture, ecriture).

Message par GallyHC »

Bonjour tous,

Je penses qui doit y avoir surement une methode, vu que windows, windows media et windows media center y arrive. Par contre comment....

falsam> En fait non je n'ai pas cette selection pour le mode.

Cordialement,
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Périphérique de type physique (lecture, ecriture).

Message par falsam »

Je pense que ton galaxy est paramétré pour fonctionner avec Samsung Kies (logiciel équivalent à Itunes). Regardes les paramètres de ton tel.

Regardes les paramètres de ton tel. Soit A propos du téléphone puis paramétre USB ou bien l'item Carte SD et mémoire et sélectionnes Stockage de masse.
Tuto complet sur ce lien
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Périphérique de type physique (lecture, ecriture).

Message par Ar-S »

Je serai aussi étonné qu'il ni ait pas le choix "stockage de masse".
Tu as regardé dans menu / paramètres / téléphones
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

Re: Périphérique de type physique (lecture, ecriture).

Message par GallyHC »

Bonjour,

Vous avez raison y a la possibilite de mettre dans le mode indiquer, mais je pars du principe (verifier sur un site ou je fais mon logiciel), pas mal de personne ne metrise pas et donc ce serais pour pouvoir dans les deux mode pouvoir faire des mise a jour.

Cordialement,
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Répondre