Transmission pour machine numérique

Programmation d'applications complexes
TARD
Messages : 12
Inscription : jeu. 08/janv./2009 18:01

Transmission pour machine numérique

Message par TARD »

Bonjour a vous tous !!!
J'ai enfin réussi a créer un logiciel pour transmètre et réceptionner les programmes de machine numérique
Pour ceux que ca interresse voici le code:

Code : Tout sélectionner

;Logiciel de Transmission machine numérique
;-Enumeration 
;{
Enumeration
  #Window_0
EndEnumeration

Enumeration
  #Editor_0
  #Button_0
  #Button_1
  #Button_2
  #Button_3
  #Image_0
  #image_1
  #ouvrir
  #sauvegarde
  #nouveau
  #imprime1
  #imprime2
  #propriete
  #aide
  #fichier_sauve
  #fichier_logiciel 
  #combo_0
  #machine$
  #text_0
  #OLECMDEXECOPT_DODEFAULT      
  #OLECMDEXECOPT_PROMPTUSER        
  #OLECMDEXECOPT_DONTPROMPTUSER    
  #OLECMDEXECOPT_SHOWHELP        
  #Window 
  #Browser 
  #WebGadget
EndEnumeration
;} 
 
;-Global
;{
Global Image0
Global com$
Global bauds$
Global datab$
Global stopb$
Global parite$
Global protocole$
Global repertoire$
Global fin$
Global envoi$
Global comID.l             
Global suppression$
Global machine$
;} 

HC=80;hauteur de caractere imprimer
LoadImage(100, "IMAGE.BMP")
LoadImage(101,"TRANSMISSION.bmp")
source$=GetCurrentDirectory()
Filtre$ = "Tous les fichiers (*.*)|*.*"
#Win=0 
#MaxReceiveBuffer=1024 
#OLECMDID_PRINT= 6 
#OLECMDID_PRINTPREVIEW= 7 
#OLECMDID_PASTE = 13 
#OLECMDID_SELECTALL = 17 

Procedure lecture(fichier.s)
 
  If ReadFile(0, fichier) 
    While Eof(0)=0 
      Texte$ = Texte$+ReadString(0)+Chr(11);+Chr(13)
    Wend 
    SetGadgetText(#editor_0, Texte$) 
    CloseFile(0) 
   Else 
   MessageRequester("Info", "Vous avez selectionner aucun prog", 0) 
  EndIf 
EndProcedure
 
Procedure.l Loadconfig(machine$) 
   If ReadFile(#fichier_logiciel,source$+"machine\"+machine$) 
    com$= ReadString(#fichier_logiciel)  
    bauds$=ReadString(#fichier_logiciel)
    datab$=ReadString(#fichier_logiciel)
    stopb$=ReadString(#fichier_logiciel)
    parite$=ReadString(#fichier_logiciel)
    protocole$=ReadString(#fichier_logiciel)
    repertoire$=ReadString(#fichier_logiciel)
    fin$=ReadString(#fichier_logiciel) 
    envoi$=ReadString(#fichier_logiciel) 
    suppression$=ReadString(#fichier_logiciel) 
    CloseFile(#fichier_logiciel) 
  EndIf 
EndProcedure

Procedure.l ouvrir_com()
 If parite$="NoParity"
  paritee=#PB_SerialPort_NoParity
 EndIf 
 If parite$="EvenParity"
  paritee=#PB_SerialPort_EvenParity
 EndIf 
 If parite$="MarkParity"
  paritee=#PB_SerialPort_MarkParity
 EndIf 
 If parite$="OddParity"
  paritee=#PB_SerialPort_OddParity
 EndIf 
 If parite$="SpaceParity"
  paritee= #PB_SerialPort_SpaceParity
 EndIf
 
 If protocole$="NoProtocole"
  handshave= #PB_SerialPort_NoHandshake
 EndIf 
 If protocole$="NoProtocole RTS=1"
  handshave= #PB_SerialPort_RtsHandshake
 EndIf
 If protocole$="Protocole RTS/CTS"
  handshave=#PB_SerialPort_RtsCtsHandshake
 EndIf
 If protocole$="Protocole XON/XOFF"
  handshave=#PB_SerialPort_XonXoffHandshake
 EndIf
 
 comID = OpenSerialPort(#PB_Any,com$,Val(bauds$),paritee,Val(datab$),Val(stopb$),handshave,1024,1024)
 If comID = 0 
  MessageRequester("Port serie","Le port série n'a put etre ouvert") 
  recevoire=0 
 EndIf 

EndProcedure

Procedure.l init()
 If ReadFile(#fichier_logiciel,source$+"init.dat") 
  machine$= ReadString(#fichier_logiciel)  
  CloseFile(#fichier_logiciel) 
 EndIf       
EndProcedure

Procedure saveinit(machine$)
 If CreateFile(#fichier_logiciel,source$+"init.dat") 
  WriteStringN(#fichier_logiciel,machine$) 
  CloseFile(#fichier_logiciel) 
 EndIf
EndProcedure

Procedure Print_Preview(id.l) 

  If ExamineDesktops() 
    Width=DesktopWidth(0) 
    Height=DesktopHeight(0) 
    
    
    flags= #PB_Window_MaximizeGadget | #PB_Window_Invisible 
    If OpenWindow(#Browser, 0, 0, 1000, 1500, "WebBrowser",flags) 
      If CreateGadgetList(WindowID(#Browser)) 
        WebGadget(#WebGadget, 10, 40, 780, 750, "about:.") 
        
        WebObject.IWebBrowser2 = GetWindowLong_(GadgetID(#WebGadget), #GWL_USERDATA) 
        
        Repeat 
          While WindowEvent(): Wend 
          Delay(1) 
          WebObject\get_Busy(@IsBusy.l) 
        Until IsBusy = 0 
        
        SendMessage_(GadgetID(id), #EM_SETSEL, 0, -1) 
        SendMessage_(GadgetID(id), #WM_COPY, 0, 0) 
        SendMessage_(GadgetID(id), #EM_SETSEL, -1, -1) 
        
        WebObject\ExecWB( #OLECMDID_SELECTALL, #OLECMDEXECOPT_DODEFAULT, 0, 0)    
        WebObject\ExecWB(#OLECMDID_PASTE, #OLECMDEXECOPT_DODEFAULT, 0, 0) 
        WebObject\ExecWB( #OLECMDID_PRINTPREVIEW, #OLECMDEXECOPT_PROMPTUSER, 0, 0)    
      EndIf                  
    EndIf 
  EndIf 
EndProcedure

;-Fenetre windows 
;{
  If OpenWindow(#Window_0, 0, 0, 600, 400, "Transmission", #PB_Window_ScreenCentered| #PB_Window_TitleBar )
    
    If CreateToolBar(0, WindowID(#window_0))
      ToolBarStandardButton( #nouveau, #PB_ToolBarIcon_New)
      ToolBarStandardButton( #ouvrir, #PB_ToolBarIcon_Open)
      ToolBarStandardButton( #sauvegarde, #PB_ToolBarIcon_Save)
      ToolBarSeparator()
      ToolBarStandardButton( #imprime1,#PB_ToolBarIcon_Print)
      ToolBarStandardButton( #imprime2,#PB_ToolBarIcon_PrintPreview)
      ToolBarSeparator()
      ToolBarStandardButton( #propriete, #PB_ToolBarIcon_Properties)
      ToolBarStandardButton( #aide, #PB_ToolBarIcon_Help)
      ToolBarToolTip( 0,#nouveau,  "Nouveau")
      ToolBarToolTip( 0,#ouvrir,  "Ouvrir...")
      ToolBarToolTip( 0, #sauvegarde, "Enregistrer")
      ToolBarToolTip( 0, #imprime1, "Imprimer")
      ToolBarToolTip( 0, #imprime2, "Appercu avant impression")
      ToolBarToolTip( 0,#propriete,  "Propriété")
      ToolBarToolTip( 0, #aide, "Aide")     
    EndIf 
       
    If CreateGadgetList(WindowID(#Window_0))     
      EditorGadget(#Editor_0, 10, 70, 290, 320,#PB_String_UpperCase)
      TextGadget(#text_0,10,25,45,15,"Machine:")
      SetGadgetColor(#text_0, #PB_Gadget_BackColor,$C35F3C)
      ComboBoxGadget(#combo_0,10,40,160,30)
      ButtonGadget(#Button_0, 310, 180, 100, 40, "EVOYER>>")
      ButtonGadget(#Button_1, 310, 240, 100, 40, "<<RECEVOIR")
      ButtonGadget(#Button_2, 310, 300, 100, 40, "ARRETER")
      ButtonGadget(#Button_3, 490, 350, 100, 40, "FERMER")
      GadgetToolTip(#button_0,"Envoie le programme a la machine")
      GadgetToolTip(#button_1,"Réceptionne le programme de la machine")
      GadgetToolTip(#button_2,"Arrete la réception du programme")
      GadgetToolTip(#button_3,"Ferme le logiciel TRANSMISSION")   
      SetWindowColor(#window_0,$C35F3C)
      ImageGadget(#Image_0, 430, 180, 100, 100, ImageID(100))
      ImageGadget(#Image_1, 300, 30, 100, 100, ImageID(101))
    EndIf
 ;} 
 
  init()
  If ExamineDirectory(#machine,source$+"machine\","*.dat")
   While NextDirectoryEntry(#machine) 
    AddGadgetItem(#combo_0,-1,DirectoryEntryName(#machine))
   Wend
    FinishDirectory(#machine)
  EndIf
  SetGadgetText(#combo_0,machine$)
  loadconfig(machine$)
    
    Repeat
     If recevoire=1 
      If comID And IsSerialPort(comID)        
       Buffer.b = 0 
       Text.s =GetGadgetText(#editor_0) 
       While AvailableSerialPortInput(comID) > 0 
        If ReadSerialPortData(comID, @Buffer, 1)     
         If Chr(buffer)<>Chr(Val(suppression$))
          Text = Text + Chr(Buffer)
          SetGadgetText(#editor_0, Text)  
         EndIf     
        EndIf
       Wend 
      EndIf 
     EndIf 
 
     If GetGadgetText(#editor_0)=""
      DisableToolBarButton(0, #nouveau, 1)
      DisableToolBarButton(0,#sauvegarde, 1) 
      DisableToolBarButton(0,#imprime1, 1)   
      DisableToolBarButton(0,#imprime2, 1)  
      Else 
      DisableToolBarButton(0, #nouveau, 0)
      DisableToolBarButton(0,#sauvegarde, 0)
      DisableToolBarButton(0,#imprime1, 0)
      DisableToolBarButton(0,#imprime2, 0) 
     EndIf
       
     If GetGadgetText(#editor_0)<>""And recevoire=0
      DisableGadget(#button_0,0)
     Else 
      DisableGadget(#button_0,1)
     EndIf
      
     If comID And IsSerialPort(comID) 
      DisableGadget(#button_2,0)
      DisableGadget(#editor_0,1)
     Else 
      DisableGadget(#button_2,1)
      DisableGadget(#editor_0,0) 
     EndIf
 ;***************************************************************         
     Event = WaitWindowEvent(100)
   ;-Bouton gadget      
     If Event = #PB_Event_Gadget
       
    ;-Selection machine
     If EventGadget()=#combo_0
      machine$=GetGadgetText(#combo_0)
      loadconfig(machine$)
     EndIf 
       
   ;-Fermer  
      If EventGadget()=#Button_3
       If comID And IsSerialPort(comID) 
        CloseSerialPort(comID)               
        comID=0 
       EndIf 
       saveinit(machine$)
       End
      EndIf 
      
   ;-Envoyer
      If EventGadget()=#button_0
       ouvrir_com()  
       texte.s=GetGadgetText(#editor_0)  
       If envoi$=Str(1)
        WriteSerialPortString(comID,Left(texte.s,10))
        Delay(200)  
        WriteSerialPortString(comID,Mid(texte.s,10,Len(texte.s))) 
       EndIf 
       If envoi$=Str(0)
        WriteSerialPortString(comID,texte.s)       
       EndIf  
       If fin$<>Str(0)
        WriteSerialPortString(comID,Chr(Val(fin$)))
       EndIf
        CloseSerialPort(comID)
        comID=0
      EndIf 
        
    ;-Recevoir
      If EventGadget()=#button_1
       If GetGadgetText(#editor_0)<>""
        resultat=MessageRequester("Info","Voullez vous sauvegarder le programme existant?",#PB_MessageRequester_YesNoCancel)
        If resultat=6
         Gosub sauvegarde
         ClearGadgetItemList(#editor_0)
         ElseIf resultat=7
         ClearGadgetItemList(#editor_0)
         Else
         annul=1
        EndIf  
       EndIf 
       If annul=0
        recevoire=1
        ouvrir_com()        
       EndIf 
       annul=0
      EndIf    
        
    ;-Arreter
      If EventGadget()=#button_2
       recevoire=0   
       If comID And IsSerialPort(comID)
        CloseSerialPort(comID)
        comID = 0 
       EndIf     
      EndIf         
     EndIf 
           
       
;***************************************************************************************
;-Bouton menu 
      If Event = #PB_Event_Menu
      
      ;-Nouveau
       If EventMenu()=#nouveau
        resultat=MessageRequester("Info","Voullez vous sauvegarder vos modification",#PB_MessageRequester_YesNoCancel)
        If resultat=6
         Gosub sauvegarde
         ClearGadgetItemList(#editor_0)
        ElseIf resultat=7
         ClearGadgetItemList(#editor_0)
        Else
        EndIf  
       EndIf 
       
      ;-Ouvrir
       If EventMenu()=#ouvrir
        Fichier_programme$ = OpenFileRequester("Selection de programme",repertoire$, Filtre$,0 )
        If Fichier_programme$
         lecture(fichier_programme$)
        EndIf 
       EndIf 
    
      ;-Sauvegarde
       If EventMenu()=#sauvegarde
        Gosub sauvegarde
       EndIf 

      ;-Imprimer
       If EventMenu()=#imprime1
        date$=FormatDate("%dd:%mm:%yy", Date()) 
        imprimante=DefaultPrinter()       
        If imprimante  
         HP = PrinterPageHeight()
         If StartPrinting("Impression programme") 
          HL=HC+30
          LoadFont(0, "Arial", HC)
          ligne=2
          If StartDrawing(PrinterOutput())
          DrawingFont(FontID(0))           
          DrawText(HL, HL/2, "Date :"+ Date$)              
         lignes=CountGadgetItems(#editor_0)
         For k=1 To lignes
          If Trim(GetGadgetItemText(#editor_0,k-1))<>Chr(11) 
           DrawText(HL, ligne*HL, GetGadgetItemText(#editor_0,k-1))  
           ligne=ligne+1
            If ligne=Int(HP/HL-2)
             NewPrinterPage()
             ligne=1       
            EndIf 
           EndIf 
          Next k      
          StopDrawing()
         EndIf
         StopPrinting()
        EndIf
       EndIf
      EndIf 
       
       If EventMenu()=#imprime2
        Print_preview(#Editor_0) 
       EndIf 
       
       
      ;-Proprieter
       If EventMenu()=#propriete
        saveinit(machine$)
        RunProgram(souce$+"config.exe")
        End 
       EndIf 

      ;-Aide
       If EventMenu()=#aide
        RunProgram(source$+"aide.pdf")
       EndIf 
       
     EndIf 
;**************************************************************************************
      
    ForEver 
  EndIf

    sauvegarde:
     Fichier_sauvegarde$ = SaveFileRequester("Choisissez un fichier à sauvegarder", repertoire$, Filtre$,0)
     If Fichier_sauvegarde$
      If CreateFile(#fichier_sauve,fichier_sauvegarde$) 
       WriteString(#fichier_sauve,GetGadgetText(#editor_0)) 
       CloseFile(#fichier_sauve)
      EndIf 
     EndIf 
    Return 
Et pour configurer les machines voici le code:

Code : Tout sélectionner

;-Global
;{
Global com$
Global bauds$
Global datab$
Global stopb$
Global parite$
Global protocole$
Global repertoire$
Global fin$ 
Global envoi$
Global suppression$
Global machine$
;}

;-Enumeration
;{
Enumeration
  #Window_1
EndEnumeration

Enumeration
  #Combo_0
  #Combo_1
  #Combo_2
  #Combo_3
  #Combo_4
  #Combo_5
  #combo_6
  #String_0
  #Text_0
  #Text_1
  #Text_2
  #Text_3
  #Text_4
  #Text_5
  #Text_6
  #Text_7
  #text_8
  #text_9
  #String_1
  #string_2
  #Button_0
  #Button_1
  #button_2 
  #fichier_logiciel
  #box
  #machine
EndEnumeration
;}

Procedure Saveconfig(machine$,souce$,com$,bauds$,datab$,stopb$,parite$,protocole$,repertoire$,fin$,envoi$,suppression$) 
  If CreateFile(#fichier_logiciel,source$+"machine\"+machine$) 
    WriteStringN(#fichier_logiciel,com$) 
    WriteStringN(#fichier_logiciel,bauds$)
    WriteStringN(#fichier_logiciel,datab$)
    WriteStringN(#fichier_logiciel,stopb$)
    WriteStringN(#fichier_logiciel,parite$)
    WriteStringN(#fichier_logiciel,protocole$)
    WriteStringN(#fichier_logiciel,repertoire$)
    WriteStringN(#fichier_logiciel,fin$) 
    WriteStringN(#fichier_logiciel,envoi$)
    WriteStringN(#fichier_logiciel,suppression$)
    WriteStringN(#fichier_logiciel,"")
    WriteStringN(#fichier_logiciel,"Logiciel de transmission")
    WriteStringN(#fichier_logiciel,"Creer par TARD Norbert") 
    WriteStringN(#fichier_logiciel,"")
    CloseFile(#fichier_logiciel) 
  EndIf 
EndProcedure 

Procedure.l Loadconfig(machine$) 
   If ReadFile(#fichier_logiciel,source$+"machine\"+machine$) 
    com$= ReadString(#fichier_logiciel)  
    bauds$=ReadString(#fichier_logiciel)
    datab$=ReadString(#fichier_logiciel)
    stopb$=ReadString(#fichier_logiciel)
    parite$=ReadString(#fichier_logiciel)
    protocole$=ReadString(#fichier_logiciel)
    repertoire$=ReadString(#fichier_logiciel)
    fin$=ReadString(#fichier_logiciel) 
    envoi$=ReadString(#fichier_logiciel) 
    suppression$=ReadString(#fichier_logiciel) 
    CloseFile(#fichier_logiciel) 
  EndIf 
EndProcedure

Procedure.l initlogiciel()
 If ReadFile(#fichier_logiciel,source$+"init.dat") 
  machine$= ReadString(#fichier_logiciel)  
  CloseFile(#fichier_logiciel) 
 EndIf       
EndProcedure

Procedure saveinit(machine$)
 If CreateFile(#fichier_logiciel,source$+"init.dat") 
  WriteStringN(#fichier_logiciel,machine$) 
  CloseFile(#fichier_logiciel) 
 EndIf
EndProcedure

Procedure initlistmachine()
If ExamineDirectory(#machine,source$+"machine\","*.dat")
 ClearGadgetItemList(#combo_6)
   While NextDirectoryEntry(#machine) 
    AddGadgetItem(#combo_6,-1,DirectoryEntryName(#machine))
   Wend
    FinishDirectory(#machine)
    AddGadgetItem(#combo_6,-1,"***Nouvelle machine***")
    AddGadgetItem(#combo_6,-1,"***Supprimer machine***")
  EndIf

EndProcedure

Procedure chargeconfig()
LOADCONFIG(machine$)
     SetGadgetText(#Combo_0,com$)
     SetGadgetText(#Combo_1,bauds$)
     SetGadgetText(#Combo_2,datab$)
     SetGadgetText(#Combo_3 ,stopb$)
     SetGadgetText(#Combo_4,parite$)
     SetGadgetText(#Combo_5,protocole$) 
     SetGadgetText(#string_0,repertoire$)
     SetGadgetText(#string_1 ,fin$)
     SetGadgetState(#box,Val(envoi$))
     SetGadgetText(#string_2 ,suppression$)

EndProcedure

Procedure Initcombo() 
  Port.s="" 
  PortNr.l = 0 
  ClearGadgetItemList(#Combo_1) 
  AddGadgetItem(#Combo_1,-1,"75") 
  AddGadgetItem(#Combo_1,-1,"110") 
  AddGadgetItem(#Combo_1,-1,"134") 
  AddGadgetItem(#Combo_1,-1,"150") 
  AddGadgetItem(#Combo_1,-1,"300") 
  AddGadgetItem(#Combo_1,-1,"600") 
  AddGadgetItem(#Combo_1,-1,"1200") 
  AddGadgetItem(#Combo_1,-1,"1800") 
  AddGadgetItem(#Combo_1,-1,"2400") 
  AddGadgetItem(#Combo_1,-1,"4800") 
  AddGadgetItem(#Combo_1,-1,"7200") 
  AddGadgetItem(#Combo_1,-1,"9600") 
  AddGadgetItem(#Combo_1,-1,"14400") 
  AddGadgetItem(#Combo_1,-1,"19200") 
  AddGadgetItem(#Combo_1,-1,"38400") 
  AddGadgetItem(#Combo_1,-1,"57600") 
  AddGadgetItem(#Combo_1,-1,"115200") 
  AddGadgetItem(#Combo_1,-1,"128000") 
  
  ClearGadgetItemList(#Combo_2) 
  AddGadgetItem(#Combo_2,-1,"4") 
  AddGadgetItem(#Combo_2,-1,"5") 
  AddGadgetItem(#Combo_2,-1,"6") 
  AddGadgetItem(#Combo_2,-1,"7") 
  AddGadgetItem(#Combo_2,-1,"8") 
  
  ClearGadgetItemList(#Combo_3) 
  AddGadgetItem(#Combo_3,-1,"1") 
  AddGadgetItem(#Combo_3,-1,"1.5") 
  AddGadgetItem(#Combo_3,-1,"2") 
  
  ClearGadgetItemList(#combo_4)
  AddGadgetItem(#Combo_4, -1, "NoParity")
  AddGadgetItem(#Combo_4, -1, "EvenParity")
  AddGadgetItem(#Combo_4, -1, "MarkParity")
  AddGadgetItem(#Combo_4, -1, "OddParity")
  AddGadgetItem(#Combo_4, -1, "SpaceParity")
  
  ClearGadgetItemList(#combo_5)
  AddGadgetItem(#Combo_5, -1, "NoProtocole")
  AddGadgetItem(#Combo_5, -1, "NoProtocole RTS=1")
  AddGadgetItem(#Combo_5, -1, "Protocole RTS/CTS")
  AddGadgetItem(#Combo_5, -1, "Protocole XON/XOFF")
  
  
  ClearGadgetItemList(#Combo_0) 
  For PortNr = 1 To 256 
    Port = "COM" + Str(PortNr) 
    ; StopBits=1 PB4.20Beta3 Fix 
    comID = OpenSerialPort(#PB_Any,Port,1200,#PB_SerialPort_NoParity,8,1,#PB_SerialPort_NoHandshake,0,0) 
    If comID And IsSerialPort(comID) 
      AddGadgetItem(#Combo_0,-1,Port) 
      If CloseSerialPort(comID) 
        comID = 0 
      EndIf 
    EndIf 
  Next 
  
  If GetGadgetItemText(#Combo_0,0)=""
   AddGadgetItem(#combo_0,-1,"Pas de port COM trouvé")
   SetGadgetState(#combo_0,0)
  EndIf 
  
EndProcedure 

source$=GetCurrentDirectory()

;-Fenetre windows
;{
  If OpenWindow(#Window_1, 0, 0, 500, 260, "Configuration ",#PB_Window_ScreenCentered| #PB_Window_TitleBar  )
    If CreateGadgetList(WindowID(#Window_1))     
      ComboBoxGadget(#Combo_0, 20, 70, 160, 30)
      ComboBoxGadget(#Combo_1, 20, 120, 160, 20)
      ComboBoxGadget(#Combo_2, 20, 170, 160, 20)   
      ComboBoxGadget(#Combo_3, 20, 220, 160, 20)
      ComboBoxGadget(#Combo_4, 210, 40, 160, 20)
      ComboBoxGadget(#Combo_5, 210, 90, 160, 20)
      ComboBoxGadget(#Combo_6, 20, 25, 160, 30)
      ButtonGadget(#String_0, 210, 140, 210, 30,"Parcourir")
      TextGadget(#Text_0, 20, 50, 160, 15, "Port COM:")
      TextGadget(#Text_1, 20, 100, 150, 15, "Bauds:")
      TextGadget(#Text_2, 20, 150, 160, 15, "Data Bits:")
      TextGadget(#Text_3, 20, 200, 160, 15, "Stop Bits:")
      TextGadget(#Text_4, 210, 20, 160, 15, "Parité:")
      TextGadget(#Text_5, 210, 70, 160, 15, "Protocole:")
      TextGadget(#Text_6, 210, 120, 160, 15, "Source des fichiers:")
      TextGadget(#Text_7, 210, 180, 70, 15, "Fin envoie:")
      TextGadget(#text_8,210,235,120,15,"Elements a supprimer:")
      TextGadget(#text_9,20,5,120,15,"Machine:")
      StringGadget(#String_1, 300, 180, 120, 20, "",#PB_String_Numeric)
      StringGadget(#string_2,330,235,90,20,"",#PB_String_Numeric)
      CheckBoxGadget(#box,210,205,260,20,"A l'envoi,sequence de 10 caractères avant pause")
      ButtonGadget(#Button_0, 400, 10, 90, 60, "APPLIQUER")
      ButtonGadget(#button_1,400,80,90,30,"ANNULER")
      ButtonGadget(#button_2,450,120,40,20,"Aide")
    EndIf
;}
     
  initcombo()
  initlistmachine()
  initlogiciel()
  chargeconfig()
  SetGadgetText(#combo_6,machine$)
     
 Repeat
  Event = WaitWindowEvent()
   If Event = #PB_Event_Gadget
   
   ;-Selection machine
    If EventGadget()=#combo_6 
     If GetGadgetText(#combo_6)="***Nouvelle machine***"
      nmachine$=InputRequester("Nouvelle machine","Introduire le nom de la machine:","")
      AddGadgetItem(#combo_6,-1,nmachine$+".dat")
      SetGadgetText(#combo_6,nmachine$+".dat")  
     EndIf 
     If GetGadgetText(#combo_6)="***Supprimer machine***"
      resultat=MessageRequester("Info","Ete vous sur de vouloire supprimer : "+machine$,#PB_MessageRequester_YesNo)
      If resultat=6
       DeleteFile(source$+"machine\"+machine$)
       initlistmachine()
      EndIf 
      SetGadgetState(#combo_6,-1)
     EndIf 
     machine$=GetGadgetText(#combo_6)
     chargeconfig()
    EndIf 
  
    If EventGadget()=#Button_1
     RunProgram(source$+"TRANSMISSION.exe")
     End 
    EndIf 

    If EventGadget()=#button_2
     RunProgram(source$+"aide.pdf")
    EndIf 

   If EventGadget()=#Button_0
    If GetGadgetText(#string_1)=""
     SetGadgetText(#string_1,"0")
    EndIf 
    If GetGadgetText(#string_1)=""
     SetGadgetText(#string_2,"0")
    EndIf 
    com$=GetGadgetText(#Combo_0)
    bauds$=GetGadgetText(#Combo_1)
    datab$=GetGadgetText(#Combo_2)
    stopb$=GetGadgetText(#Combo_3)
    parite$=GetGadgetText(#Combo_4)
    protocole$=GetGadgetText(#Combo_5)
    repertoire$=GetGadgetText(#string_0)
    fin$=GetGadgetText(#string_1)
    envoi$=Str(GetGadgetState(#box))
    suppression$=GetGadgetText(#string_2)
    Saveconfig(machine$,souce$,com$,bauds$,datab$,stopb$,parite$,protocole$,repertoire$,fin$,envoi$,suppression$)
    saveinit(machine$)
    RunProgram(source$+"TRANSMISSION.exe")
    End 
   EndIf 
   
   If EventGadget()=#String_0
    repertoire$=PathRequester("Choisissez un répertoire",repertoire$)
    If repertoire$
     SetGadgetText(#string_0,repertoire$)
    Else
    EndIf 
   EndIf 

  EndIf 
 ForEver 
EndIf 
Il y a aussi des images mais je n'arrive pas a les metres sur la page .
Avatar de l’utilisateur
case
Messages : 1545
Inscription : lun. 10/sept./2007 11:13

Message par case »

pour les images il faut les hébergées sur un serveur puis créer des liens ici ou les insérer dans le post avec les balises correspondantes
ImageImage
TARD
Messages : 12
Inscription : jeu. 08/janv./2009 18:01

Message par TARD »

Merci case pour ta réponce
Voici le fichier complet de mon petit logiciel de transmission
J'avais oublier ceci fonctionne avec le port SUB-D9
[url=http://sd-1.archive-host.com/memb ... on.zip[/b]
[/url]
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

Ca me rappelle ma jeunesse, si on avait eu de tels outils, aussi bien le language que les PC, je crois que je me serais éclaté :D

De mon temps fallait tout contruire :?

Merci de ce cadeau 8)
Frenchy Pilou
Messages : 2194
Inscription : jeu. 27/janv./2005 19:07

Message par Frenchy Pilou »

Y a plus qu'à avoir une machine numérique ;)
TARD
Messages : 12
Inscription : jeu. 08/janv./2009 18:01

Message par TARD »

Oui c'est vrais mais on ne trouve pas de logiciel gratuit comme celui ci sur internet , je suis dans une petite entreprise dont nous avons beaucoup de machines numériques.
Et comme bien sur un beau jour le PC de sauvegarde des programmes et tombé en panne et impossible de retrouvé un logiciel de transmission de programme tel que "METALOG" (ancien logiciel) alors je me suis mit a en créer un.
Je suis sur un créateur de terrain dont je pense vous le faire parvenir bientot (dans la semaine prochaine)
Frenchy Pilou
Messages : 2194
Inscription : jeu. 27/janv./2005 19:07

Message par Frenchy Pilou »

J'y connais rien de rien :)
Juste par curiosité 8O
Comment cela se déroule-t-il?

Disons à partir d'un fichier d'objet en format 3dm (nurbs)

La conversion du fichier se fait automatiquement ou cela se passe-t-il autrement? :roll:

C'est dire si c'est le flou artistique total :lol:

Image

le fichier 3dm
TARD
Messages : 12
Inscription : jeu. 08/janv./2009 18:01

Message par TARD »

Tu me parle bien du logiciel de terrain que je commence a faire je suppose?
Si c'est le cas c'est mon plus grand des problemes mais je vais essayer a convertir mes images en Sprite peut etre que cela va marcher je te redi ca demain (dimanche)
Autrement je n'ai pas saisi ta question desolé :D
Frenchy Pilou
Messages : 2194
Inscription : jeu. 27/janv./2005 19:07

Message par Frenchy Pilou »

hihi
Je vais essayer d'être plus clair dans mon ignorance :)
Je suppose qu'une machine numérique sert à produire une pièce usinée

Donc d'un côté j'ai mon objet virtuel montré au-dessus
De l'autre il doit être produit réellement par cette machine

Cet objet est parfaitement défini par un format de fichier 3D ici le 3dm qui est un format de fichier générique des nurbs (familles de courbes permettant des opérations booléennes sur des volumes (ajout, retrait) "parfaits" (ici une simple sphère découpée par un cylindre)

D'où ma question de néophyte, comment passe-t-on de ce fichier à la machine numérique?

Le programme "transmission" suffit-il?
Ou il y a (comme je m'en doute un peu) carrément autre chose à faire? :D

Ps Evidemment je pourrais chercher la solution sur le Net, mais c'est bien plus "vivant" de s'adresser à quelqu'un qui est "branché" en direct sur le sujet ;)
TARD
Messages : 12
Inscription : jeu. 08/janv./2009 18:01

Message par TARD »

Pour pouvoir reproduire une piece sur une machine numérique tel que l'example que tu m'es donner il faudrai une FAO : "Fabrication Assistée par Ordinateur" mais ce que j'ai fait c'est seulement pour envoyer,enregistrer et recevoir les programmes des machine via le port de communication Sub-D9 du PC et Sub-D25 de la machine.
Pour avoir un exemple de ce que l'on envoi et receptionne:

:0222
N10M6T1
N20G0G90G59X0Y-52.5M3S1000
N30G43H1Z2M8
N40G81Z-5F50
N50G3X37.117Y-37.117R52.5F2500
G81Z-5F50
N60G3Y0X52.5R52.5F2500
G81Z-5F50
N70G3Y37.117X37.117R52.5F2500
G81Z-5F50
N80G3X0Y52.5R52.5F2500
G81Z-5F50
N90G3Y37.117X-37.117R52.5F2500
G81Z-5F50
N100G3Y0X-52.5R52.5F2500
G81Z-5F50
N110G3Y-37.117X-37.117R52.5F2500
G81Z-5F50
N120G0G80Z155M9
N130G28G91Z0M5
N140M6T2
N150G0G90G59X0Y-52.5M3S450
N160G43H2Z2M8
N170G81Z-17F30
N180G3X37.117Y-37.117R52.5F2500
N190G81Z-17F30
N190G3X52.5Y0R52.5F2500
N200G81Z-17F30
N200G3X37.117Y37.117R52.5F2500
N210G81Z-17F30
N210G3Y52.5X0R52.5F2500
N220G81Z-17F30
N220G3X-37.117Y37.117R52.5F2500
N230G81Z-17F30
N230G3X-52.5Y0R52.5F2500
N240G81Z-17F30
N240G3Y-37.117X-37.117R52.5F2500
N250G81Z-17F30
N250G0G80Z155M9
N260G28G91Z0M5
N270M6T3
N280G0G90G59X0Y-52.5M3S200
N290G43H3Z2M8
N300G1Z-5F150
Z-6F30
G0Z2
N310G3X37.117Y-37.117R52.5F2500
N320G1Z-5F150
Z-6F30
G0Z2
N320G3X52.5Y0R52.5F2500
N330G1Z-5F150
Z-6F30
G0Z2
N330G3Y37.117X37.117R52.5F2500
N340G1Z-5F150
Z-6F30
G0Z2
N340G3X0Y52.5R52.5F2500
N350G1Z-5F150
Z-6F30
G0Z2
N350G3Y37.117X-37.117R52.5F2500
N360G1Z-5F150
Z-6F30
G0Z2
N360G3X-52.5Y0R52.5F2500
N370G1Z-5F150
Z-6F30
G0Z2
N370G3X-37.117Y-37.117R52.5F2500
N380G1Z-5F150
Z-6F30
N380G0G80Z155M9
N390G28G91Z0Y0M5
N400M30
%

Ceci est un programme d'une Fraiseuse a 4 axes mais sur cet example elle n'utilise seulement 3 axe :wink: : X,Y et Z
La vitesse de rotation est representé par S
et pour le reste je te conseille de visualisé ce doc qui est bien expliqué:

http://fr.wikipedia.org/wiki/Programmat ... C3%A9rique

On ne programme que des déplacements par le faite.
J'espère que j'ai put te donner satisfaction a ta demmande qui es pour moi pas la plus simple car je ne suis pas programmeur de machine outil je les répares seulement.
Frenchy Pilou
Messages : 2194
Inscription : jeu. 27/janv./2005 19:07

Message par Frenchy Pilou »

Ah d'accord, je vois le genre :)
Il faut réapprendre tout un langage super spécifique!
A la limite il ne sert à rien d'avoir le fichier 3D, puisque tout est repris pas à pas! :roll:

Ceci-dit il existe peut-être des "interpréteurs"?
Car là c'est quand même pas facile, facile, du premier abord :)

Il semble beaucoup plus facile de faire du "3D Printing" pour avoir sa petite pièce d'un volume 3D sur sa cheminée ;)

Merci des renseignements! 8)
Frenchy Pilou
Messages : 2194
Inscription : jeu. 27/janv./2005 19:07

Message par Frenchy Pilou »

Au fait un gars me demande qu'elle est "l'utilité" de la chose pour quelqu'un qui a une machine à commande numérique sous la main?
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Message par Ollivier »

Bienvenue Tard! Bienvenue!!!
Répondre