Périfs métrisé!! port série

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Fortix
Messages : 559
Inscription : mar. 30/mai/2006 17:03

Périfs métrisé!! port série

Message par Fortix »

Salut :D , est il possible de commander une webcam par exemple (manip des images, les rotations, etc...)via le port série de PureBasic?

je ne sais pas vous, mais j'ais un kiff pour la robotic :lol: , et c'est un térrain inexploré pour moi, si vous pouvez alors m'aidez à faire mes débuts sa serais vraiment simpas :oops: , en tous cas merci :D
poshu
Messages : 1138
Inscription : sam. 31/juil./2004 22:32

Message par poshu »

Une webcam par port série? Euh... Je suis pas sur que 19200 bps suffisent à transmettre un flux vidéo, autant passer directement par l'USB...
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Message par Ollivier »

Pour diriger des mouvements, tu peux en effet sortir des infos via les ports série, parallèle ou USB.

Et si tu as une interface RS232, ben en PB, les instructions sont natives, dont champ libre à la robotique!!!
cirederff
Messages : 54
Inscription : ven. 15/mai/2009 19:57

Message par cirederff »

Bonjour.

Moi aussi je trouve la robotique sympa :D ,mais ça vient de plus en plus difficile avec les PC d' aujourd'hui, que de l' USB et de l'Ethernet.:(

Je suis juste tomber sur çà: http://www.hexwax.com/Products/expandIO-USB

Est ce que c'est jouable avec PB sans trop de difficultés :?:
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Message par Ollivier »

Le RS232 reste un standard en matière d'interface. Si quelqu'un a un raccord USB/RS232, je pense qu'il peut s'en sortir avec les fonctions natives.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

e tout cas ,pour capturer ta camera en live, il y a ce petit code :)

tu peux analyser l'image capturé pour faire interagir ta main avec un sprite eventuellement , ça doit pas etre bien compliquer a ajouter

le plus gros du boulot est fait :D

Code : Tout sélectionner


UseJPEGImageEncoder()
UseJPEGImageDecoder()
Enumeration
      
      #Window_0
      #Button_capture
      #Button_quit
      #Button_affiche
      #Button_4
      #viewer1
      #gadget1
      #counter
      #counter1
      #name
      #takebut
      #viewbut
      #quitbut
EndEnumeration

Dim snapshot.l(50)
Global  saver$
i=1
If OpenWindow(#Window_0, 100, 100, 408, 338, "Little Camera", #PB_Window_SystemMenu |  #PB_Window_MinimizeGadget     )
      If CreateGadgetList(WindowID(#Window_0)) 
            ButtonGadget(#Button_capture, 150, 280, 50, 25, "Capture")
            ButtonGadget(#Button_quit, 250, 280, 50, 25, "Quit")
            ButtonGadget(#Button_affiche, 200, 280, 50, 25, "Show")
      EndIf 
EndIf
 
Global hWndC.l
Global snapshot.l
Procedure.b initcam()
      pcvs.b = 0
      CreateImage(0,400,400)
      #WM_CAP_START = #WM_USER
      #WM_CAP_DRIVER_CONNECT = #WM_CAP_START + 10
      #WM_CAP_DRIVER_DISCONNECT = #WM_CAP_START + 11
      #WM_CAP_DRIVER_GET_CAPS = #WM_CAP_START + 14
      #WM_CAP_EDIT_COPY = #WM_CAP_START + 30
      #WM_CAP_SET_PREVIEW = #WM_CAP_START + 50
      #WM_CAP_SET_PREVIEWRATE = #WM_CAP_START + 52
      #WM_CAP_STOP = #WM_CAP_START + 68
      #WM_CAP_SET_SCALE = #WM_CAP_START + 53
      If OpenLibrary(0, "avicap32.dll")
            *capAddress = GetFunction(0, "capCreateCaptureWindowA")
            hWndC = CallFunctionFast(*capAddress, "My Capture Window", #WS_CHILD | #WS_VISIBLE, 50,38, 310, 230, WindowID(0),0)
            
            SendMessage_(hWndC, #WM_CAP_DRIVER_CONNECT, 0, 0)
            SendMessage_(hWndC, #WM_CAP_SET_PREVIEW, #True, 0)
            SendMessage_(hWndC, #WM_CAP_SET_PREVIEWRATE, 1, 0)
            SendMessage_(hWndC, #WM_CAP_SET_SCALE, #True, 0)
            pcvs = 1   
            ; ;............................................(pour afficher l'option)
            ; #WM_CAP_START = #WM_USER
            ; #WM_CAP_DLG_VIDEOSOURCE = #WM_CAP_START + 42
            ; ;............................................
            ; SendMessage_(hWndC, #WM_CAP_DLG_VIDEOSOURCE, 0, 0)
      EndIf
      ProcedureReturn pcvs
EndProcedure
Procedure.b capcam()
      pcvs.b = 0
      SendMessage_(hWndC, #WM_CAP_EDIT_COPY, 0, 0)
      snapshot = GetClipboardImage(#PB_Any)
      If snapshot
            saver$= "snapshot.jpg"
            SaveImage(snapshot,saver$,#PB_ImagePlugin_JPEG,10)
            ;FreeImage(snapshot)
            pcvs = 1
      EndIf
      ProcedureReturn pcvs
EndProcedure
Procedure destroycam()
      SendMessage_(hWndC, #WM_CAP_STOP, 0, 0)
      SendMessage_(hWndC, #WM_CAP_DRIVER_DISCONNECT, 0, 0)
      DestroyWindow_(hWndC)
      CloseLibrary(0)
EndProcedure
initcam()

 ;HideWindow(0,1)
Repeat
      Event=WaitWindowEvent(10)
      
      Select Event
                  
            Case #PB_Event_Gadget
                  Select EventGadget()
                        Case #Button_capture 
                              capcam() 
                        Case #Button_quit
                              SendMessage_(hWndC, #WM_CAP_STOP, 0, 0)
                              SendMessage_(hWndC, #WM_CAP_DRIVER_DISCONNECT, 0, 0)
                              DestroyWindow_(hWndC)
                              CloseLibrary(0)
                              End 
                        Case #Button_affiche 
                              If OpenWindow(#viewer1, 10, 10, 340, 270, "ImageGadget", #PB_Window_ScreenCentered|#PB_Window_BorderLess    )
                                    StickyWindow(#viewer1, 1)
                                    If CreateGadgetList((WindowID(#viewer1)))
                                          
                                          existimage=  LoadImage(0, saver$)     ;Path/filename of the image
                                          If existimage
                                                ImageGadget(#gadget1,  10, 10, 310, 230, ImageID(0),#PB_Image_Border)                      ; imagegadget standard
                                          Else
                                                ResizeWindow(#viewer1,#PB_Ignore ,#PB_Ignore ,10,10)
                                                
                                                MessageRequester("No Image", "image doesn,t exist",#PB_MessageRequester_Ok)
                                                CloseWindow(#viewer1)
                                                Quit=1
                                          EndIf
                                          
                                    EndIf
                                    
                                    Repeat
                                          Event2=WaitWindowEvent()
                                          bugger=EventType()
                                          Select bugger
                                                Case #PB_EventType_RightClick
                                                      CloseWindow(#viewer1)
                                                      Quit=1
                                                      
                                          EndSelect
                                    Until Quit=1
                              EndIf
                              Quit=0
                              
                  EndSelect
      EndSelect
      
      
      
Until Event = #PB_Event_CloseWindow

destroycam()

End
Avatar de l’utilisateur
Fortix
Messages : 559
Inscription : mar. 30/mai/2006 17:03

Message par Fortix »

Bonjour, avant tout je voudrais vous remercier pour vos réponses, :D ;

et d'après le lien de Mister @cirederff (que je salut), il faut un convertisseur sécurisé pour éviter d'endomager l'interface; enfin bon le plus important c'est que l'on puisse commander via l'USB car avant vos réponses j'étais encore sous le doute;

merci @Dobro :D pour ton code, en parcourant les topics passés tu avais éffectivement déjà fais un tout petit code éfficace à ce sujet mais qui ne faisait pas appel au port série (ou peu être que je me trompe!! :oops: )

et je ne connais pas votre avis mais pour moi la finalitée de la programmation c'est la robotic (automatisme matérialisé sa vous dits quelques chose :lol: ?)
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

Fortix a écrit : et je ne connais pas votre avis mais pour moi la finalitée de la programmation c'est la robotic (automatisme matérialisé sa vous dits quelques chose :lol: ?)
pour moi c'est pas une finalité , mais une orientation possible

d'ailleur mon 'PureGolo' va dans ce sens puisque c'est un interpreteur type LOGO ;)
donner des ordres a une tortue et la voir evoluer :)
Avatar de l’utilisateur
Fortix
Messages : 559
Inscription : mar. 30/mai/2006 17:03

Message par Fortix »

oui sauf qu'avec la robotic, c'est matérialisé :lol:

un programme matérialisé dans un monde matérialisé/visible

non non, je ne suis pas fou :lol:

ce que jveux dire c'est que c'est éffectivement une orientation, mais une orientation qui plus de mérite par son éffet qui procure

car si on se met à la place des gens, ils vont voir un objet matériel autonome et instinctivement ils vont comparer cet objet à une bête ou à un insect, et automatiquement ils vont se poser la question- qui a donc créé les insects?, et paradoxallement ils comprendrons que ces insects servent à quelques chose notament pour l'eco-system de notre mère la Terre, ils comprendrons car quant ils vous demanderons a quoi sert votre robot, vous lui expliquerez bêtement que votre création permet d'éffectuer automatiquement des tâches pénible voir même impossible pour un homme!!, et en leurs répondant ainsi vous aurez compris à votre tour que votre création est une version primitive d'un insect , donc votre robot paurait être l'encêtre des insectes que nous connaissons actuellement!! :wink:

après avoir lu, vous vous direz que @Fortix est timbré :lol: ;
poshu
Messages : 1138
Inscription : sam. 31/juil./2004 22:32

Message par poshu »

Je possède un adaptateur USB -> RS232, et il fonctionne avec les fonctions natives de PB. Ceci dit, j'ai pas testé plus que ça, puis ce qu'il me sert avant tout à la programmation de PROM/EPROM et de micro-contrôleurs ...
jbernard13
Messages : 1501
Inscription : dim. 18/avr./2004 15:04
Localisation : sud de la france

Message par jbernard13 »

merci dobro pour ce code
Avatar de l’utilisateur
Fortix
Messages : 559
Inscription : mar. 30/mai/2006 17:03

Message par Fortix »

Salut tout le monde;

je vois que ma marmelade n'a accroché personne :lol: , en fait c'était calculé!!;

éffectivement le code de Dobro.exe fonctionne bien pour la fonction principale en tous cas;

mais après examen du code je me suis aperçus que le port série n'est à aucun moment évoqué car il n'y a tout simplement pas besion!! :lol:

une simple DLL "avicap32.dll" suffit, que je ne savait pas avant que Dobro.exe post le code, conclusion le port série sert uniquement pour les périfs motorisé; ou je me trompes,
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

Fortix a écrit :conclusion le port série sert uniquement pour les périfs motorisé;
oui ! :)

ps il existe une lib pour gerer le port serie 'IO quelque chose, je sais plus :)'
voir ici : http://www.purearea.net/pb/download/use ... RAPPER.ZIP


ps : il existe une librairie aussi pour les brique LEGO !
"BrickLib_v1"
http://forums.purebasic.com/english/vie ... t=bricklib
cirederff
Messages : 54
Inscription : ven. 15/mai/2009 19:57

Message par cirederff »

Fortix a écrit :Salut tout le monde;
je vois que ma marmelade n'a accroché personne :lol: , en fait c'était calculé!!;
Salut

Si si :P moi je suis très interessé, mais je pense qu'il faudra toujour une
partie "microcontrolée" pour avoir des I/O plus souples,
vu que le moyen le plus simple ou le plus democratisé est le port com et il y a beaucoup de boulot en perspective,
quand je vois des gas du forum qui pondent des lignes de codes en un claquement de doigt :P , moi c'est pas mon cas :oops: enfin pas encore quoi 8) .
J'ai choisi PB pour le coté win et linux, pas interpreté et acces au dll et le toutiquouanti.....donque ça dvrait le faire, mais je suis pas souvent dessu
Avatar de l’utilisateur
Fortix
Messages : 559
Inscription : mar. 30/mai/2006 17:03

Message par Fortix »

Merci pour vos réponses :D

d'après les links de @Dobro, les allemands ont bien entamé la question sur la robotic!, je pense que pour le forum PBasic il faut ajouter une section spécialiser pour le port série car de touts évidence c'est totalement une autre façon de programmer, une section au même titre que l'ASM,3D, etc....

du coup on observera nettement l'évolution du l'angage fétish, bon, c'est juste mon avis :lol:

je suis quasiment certain que la robotic est l'avenir, je ne le dirais jamais assé, car on est dans un monde en constante évolution et une évolution implique une optimisation soit pour un rendement soit pour la vitesse!

je sais que celà ne date pas d'hier :lol: , mais n'empêche que plus le temps passe et plus le besion se fera sentir pour les industriels en touts cas :lol: ;

l'originalitée dans la robotic sera très recherché dans les prochaines années, parole de sociologue de formation, de théoricien de vocation et de philosophe dans l'âme :lol:

(quant je suis lancé, on ne peut plus m'arrêter :lol: )
Répondre