LOGICIELS GAMBAS 2 - Pesecaravane
Voici un outil de pesage virtuel des éléments embarqués dans un camping-car.
Il fonctionne avec une base de données sqlite qu 'il crée automatiquement.
Merci à Jean Yvon pour sa contribution.
TELECHARGER LE FICHIER
' gambas class File PUBLIC SUB _new() END PUBLIC SUB form_OPEN() me.center END PUBLIC SUB button1_click() 'drawingarea1.clear 'drawingarea1.refresh draw.begin(drawingarea1) draw.foreground = color.black draw.font.size = 20 draw.text("bonjour", 100, 100) draw.foreground = color.darkyellow draw.font.size = 20 draw.text("bonjour", 102, 102) draw.END END PUBLIC SUB button2_click() ' drawingarea1.clear 'drawingarea1.refresh draw.begin(drawingarea1) draw.foreground = color.gray draw.font.size = 24 draw.text("attention", 0, 0) draw.foreground = color.red draw.font.size = 24 draw.text("attention", 3, 3) draw.END END PUBLIC SUB button3_click() ' drawingarea1.clear 'drawingarea1.refresh draw.begin(drawingarea1) draw.foreground = color.black draw.font.size = 24 draw.text("dedans", 120, 120) draw.foreground = color.white draw.font.size = 24 draw.text("dedans", 122, 122) draw.END END PUBLIC SUB button4_click() ' drawingarea1.clear 'drawingarea1.refresh draw.begin(drawingarea1) draw.foreground = color.black draw.font.size = 24 draw.text("dehors", 150, 150) draw.foreground = color.gray draw.font.size = 24 draw.text("dehors", 151, 151) draw.END END PUBLIC SUB drawingarea1_draw() END PUBLIC SUB button5_click() DIM a AS variant DIM b AS Integer draw.begin(drawingarea1) a = 0 FOR b = 0 TO 255 draw.foreground = a * 257 a = a + 1 print a draw.LINE(0, b, 1000, b) 'inc b NEXT draw.END END PUBLIC SUB button7_click() DIM a AS variant DIM b AS Integer draw.begin(drawingarea1) a = 0 FOR b = 0 TO 255 draw.foreground = a * 75537 a = a + 1 print a draw.LINE(0, b, 1000, b) 'inc b NEXT draw.END END PUBLIC SUB button7_click() DIM a AS variant DIM b AS Integer draw.begin(drawingarea1) a = 0 FOR b = 0 TO 255 draw.foreground = a a = a + 1 print a draw.LINE(0, b, 1000, b) 'inc b NEXT draw.END END |
PROGRAMME EN GAMBAS POUR LE PILOTAGE DE MOTEURS
PAS A PAS VIA LE PORT PARALLELE.
(Version Non Terminée)
réalisé par pierre D.
TABLE DES MATIERES
But de ce      programme
     Principe de      fonctionnement
     Utilisation      du programme
     Todo
     Licence
     Contact
BUT DE CE PROGRAMME
C 'est en désirant créer une application me permettant de commander des moteurs pas à pas afin de numériser des petites machines-outils que j 'ai développé ce petit programme.
Je vous présente ici une ébauche du programme final mais pas mal de choses reste encore à terminer.
Soyez indulgent car il s 'agit seulement  de  mon 2ème programme en Gambas. Si vous avez des remarques ou suggestions, vous pouvez me contacter à info@horlogedantan.com
Il existe sous linux une application très bien aboutie et ayant fait largement ses preuves EMC2 :
Mais ce que je recherche,  c 'est de développer une application interne destinée à une machine bien précise et dans ce cas EMC2 n 'est pas utilisable sauf réécriture de l 'interface en C.
Exemple d 'utilisation : tour numérique, table x,y, machine à tailler les engrenages, etc...
Ce que je vous propose ici, c 'est un programme avec un certain nombre de fonctions opérationnelles, bouton de déplacement des axes, fonction arrosage et arrêt urgence...
Ensuite, chacun à partir des sources (principe des programmes open source) peut utiliser et modifier le programme comme bon lui semble.
Actuellement, je sais uniquement commander le port parallèle mais si quelqu 'un désire le modifier et l 'adapter pour  l 'USB...
Par ailleurs, le port parallèle est en disparition mais il existe toujours des cartes d 'extension que vous pouvez ajouter à votre pc.
Une carte électronique va vous permettre d 'interpréter les signaux via un connecteur DB25.
Pour de petites applications, vous pouvez utiliser d 'anciens PC type pentium II avec une Debian de base avec une interface graphique légère et y installer Gambas.
J 'ai testé et c 'est efficace. Attention, pour les moteurs pas à pas, vous devez en principe utiliser un noyau en temps réel. Ce noyau est automatiquement utilisé lorsque vous installez la version spéciale Ubuntu-Emc (voir pour infos sur le site de Emc).
J 'avais fait des essais en Qbasic (plus développé actuellement), des essais en C mais il est difficile pour un débutant en programmation de réaliser facilement une interface graphique.
Après différents essais avec des basics, je me suis tourné vers Gambas. Durant ces derniers mois, Gambas s 'est développé fortement avec l 'apparition d 'un nouveau forum très dynamique, d 'un site et d 'un Wiki.:
Doc officielle : http://www.gambasdoc.org/help/howto/parport?fr
Wiki : http://wiki-gambas.eg2.fr/doku.php
Site sur EMC2 : http://linuxcnc.org/
PRINCIPE DE FONCTIONNEMENT
Contrairement à des moteurs conventionnels, les moteurs pas à pas se commandent via une électronique spéciale. Il faut distinguer trois parties :
La partie      commande qui gère les impulsions du port parallèle ainsi que les      buttées et fin de courses
     La partie      puissance qui commande directement les moteurs
     La partie      alimentation qui fournit l 'alimentation aux moteurs.
L 'électronique de commande reçoit des impulsions du port parallèle, elle se charge de les convertir et de commander ensuite le moteur.
Les impulsions sont des états hauts ou bas qui sont envoyés  sur les broches du port parallèle suivant le système binaire.
Pour envoyer une impulsion sur un moteur, vous devez ouvrir le fichier Linux qui gère les port DEV/PORT. Ensuite,  réaliser une boucle. Cette boucle écrit une valeur hexadecimale, pendant une temporisation de quelques millis secondes. En faisant varier la temporisation,  vous modifiez la vitesse du moteur.
Doc sur les moteurs pas à pas : http://fr.wikipedia.org/wiki/Moteur_pas_%C3%A0_pas
Carte de commande : http://www.otocoup.com/CarteL6208.htm
Site sur la cnc : http://cncloisirs.com
Fournisseur : www.soprolec.com
Doc sur le port parallèle : http://www.stielec.ac-aix-marseille.fr/cours/abati/centronic.htm
Voilà un exemple de code d 'écriture sur le port parallèle qui m 'a été aimablement fourni par Benoît Minisini, le concepteur de Gambas :
PUBLIC SUB Main()
DIM iValue AS Byte
DIM hPort AS File
hPort = OPEN /dev/port FOR READ WRITE
SEEK #hPort, &H378
iValue = 255
WRITE #hPort, iValue
PRINT ok
END
Pour m 'aider à comprendre le fonctionnement du port parallèle, j 'ai réalisé mon premier programme en gambas Moniteur d 'état du port parallèle qui permet d 'afficher les entrées et sorties du port. Ce programme est disponible sur le site ou je peux également vous l 'envoyer par mail . 
UTILISATION DU PROGRAMME
Pour pouvoir écrire sur le port parallèle en linux, vous devez être en Super Utilisateur (ROOT). 
Voilà comment le lancer sous ubuntu :
Gambas2 doit      être installé sur votre PC
     Lancer      Nautilus (explorateur de fichier) en Root pour changer les droits du      programme :
     
Alt+F2 et      ensuite GKSUDO Nautilus + votre mot de passe
Dans      Nautilus,  vous      vous rendez dans le répertoire du programme
     Clique droit      + permission et changer toutes les permissions en ROOT
     Lancer      Gambas en root et exécuter le programme Alt+F2 et ensuite GKSUDO      gambas2. 
Une autre possibilité est de créer un groupe suivant l 'astuce de Mr Laurent Carlier :
http://www.ac-creteil.fr/reseaux/systemes/linux/comptes-utilisateurs.html
http://www.yolinux.com/TUTORIALS/LinuxTutorialManagingGroups.html
TODO
Cette version du programme est une ébauche de la version finale, voilà un certain nombre de choses à faire :
Actuellement,      uniquement l 'axe X est disponible, ajout des commandes pour Y et Z
     Uniquement      les sorties sur le port parallèle sont utilisables. Mise en      fonction des entrées avec ainsi utilisation des butées
     Utilisation      d 'un fichier texte pour enregistrer et lire la configuration du      programme
     Mise en place d 'une rampe      d 'accélération nécessaire pour utiliser les moteurs pas à pas      dans certaines plages de vitesse
     Utilisation de touche de clavier pour      le lancement des fonctions
     Rajout de fonction telle       que prise d 'origine machine, etc...
Contribution de Pierre D. le 17/09/2009
Imprimer une form
(par taoteblues)
Créer un bouton pour l 'impression de la feuille:
PUBLIC SUB Button9_Click()
'Imprimer une feuille
DIM imageWidth AS Integer
DIM imageHeight AS Integer
DIM mafeuille AS Picture
mafeuille = ME.Grab()
mafeuille = mafeuille.Image.Stretch(ME.W * 5, ME.H * 5).Picture
imageWidth = mafeuille.Width
imageHeight = mafeuille.Height
Draw.Begin(PRINTER)
'impression centrée
Draw.Picture(mafeuille, (Printer.Width - imageWidth) / 2, (Printer.Height - imageHeight) / 2)
Draw.End
END
Imprimer une image
(par taoteblues)
Créer un bouton pour l 'impression:
PUBLIC SUB Button_Click()
DIM img AS Image
Dim monimage As String
monimage = chemin du fichier image que je veux imprimer
img = Image.Load(monimage)
PrintImage(img)
CATCH
Message.Error( Classe: & Str(Error.class) & nCode: & error.code &
, = & error.text & nà: & error.where, OK )
END
Ajouter la fonction PrintImage()
PRIVATE SUB PrintImage(fichierimg AS Image)
DIM imageToPrint AS Image
DIM imageWidth AS Integer
DIM imageHeight AS Integer
DIM scaleIsotropic AS Float
INC Application.Busy
imageWidth = (fichierimg.Width * Printer.Resolution) / Desktop.Resolution
imageHeight = (fichierimg.Height * Printer.Resolution) / Desktop.Resolution
IF imageWidth > Printer.Width OR imageHeight > Printer.Height THEN
scaleIsotropic = Min(Printer.Width / imageWidth, Printer.Height / imageHeight)
imageWidth *= scaleIsotropic
imageHeight *= scaleIsotropic
END IF
imageToPrint = fichierimg.Stretch(imageWidth, imageHeight, TRUE)
Draw.Begin(Printer)
Draw.Image(imageToPrint, (Printer.Width - imageWidth) / 2, (Printer.Height - imageHeight) / 2)
Draw.End
DEC Application.Busy
END
L 'attente pour l 'impression peut être longue (1 à 2 minutes) en fonction de votre matériel et de la taille de l 'image.
Imprimer une TextArea
Réalisé par taoteblues
Vous avez la possibilité d 'utiliser le code basique suivant:
Public Sub Button_Click()
Draw.Begin(Printer)
Draw.Text(TextArea1.Text, 200, 200, Printer.With, Printer.Height)
Draw.End
End
ou le code suivant qui permet d 'imprimer le contenu d 'une TextArea en tenant compte des limites de la page, de ne pas couper de mot, de faire un retour à la ligne et de continuer l 'impression sur les pages suivantes.
PUBLIC SUB Button_Click()
DIM Ileft AS Integer
DIM IRight AS Integer
DIM ITop AS Integer
DIM IBot AS Integer
DIM textaimprimer AS String
DIM ITextposY AS Integer
DIM ITextPosX AS Integer
DIM ITextposX1 AS Integer
DIM Txtligne AS String
DIM Nextword AS String
DIM IprinterIwidth AS Integer
DIM IprinterIheight AS Integer
Printer.Size = A4
ILeft = 200
IRight = 800
ITop = 200
IBot = 200
IprinterIheight = Printer.Height - ITop - IBot - 400
IprinterIwidth = Printer.Width - ILeft - IRight
' nous découpons le texte à chaque saut de ligne
ITextPosX = 200
ITextposY = 100
'début d 'impression
Draw.Begin(Printer)
textaimprimer = TextArea1.Text
FOR EACH Txtligne IN Split(textaimprimer, n )
'Réglages personnels des bordures et de la taille des caractères
ITextPosX = 200
ITextposY = ITextposY + Draw.TextHeight( TaotE )
Draw.ForeColor = Color.Black
Draw.Font.Bold = FALSE
Draw.Font.Italic = FALSE
Draw.Font.Underline = FALSE
Draw.Font.Size = 10
' nous découpons chaque ligne en mots
FOR EACH NextWord IN Split(TxtLigne, )
IF ITextposY >= IprinterIheight THEN
ITextposY = 100
Printer.NewPage
ENDIF
'si la longueur du mot trop grande
ITextposX1 = ITextposX + Draw.TextWidth(NextWord & )
IF ITextPosX1 >= IprinterIwidth THEN
ITextPosX = 200
ITextposY = ITextposY + Draw.TextHeight( TaoteBlueS )
ENDIF
' nous passons le mot à l 'impression
Draw.Text(NextWord & , ILeft + ITextPosX, ITop + ITextposY)
ITextposX = ITextposX + Draw.TextWidth(NextWord & )
NEXT
NEXT
Draw.End
END
Maintenant avec em et p
texte avec l 'attribut 'cite ' et p
'ça ne marche pasTexte avec b
texte avec S
c 'est moi qui dit ça!'ça ne marche pas!
Texte en petit caractère taille2
texte en caractère taille 10
texte en caractère taille 8
texte en caractère taille 6
NOM | DESCRIPTION | DETAIL | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
GBgénéalogie | Logiciel de généalogie pour Gambas | détail | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Logiciels Gambas - Jeux
Rédigé par spheris
Aucun commentaire
Classé dans : Logiciels
Logiciels de la rubrique jeux pour Gambas linux :
|