1
Vos projets / TCO dcc en lazarus
« le: novembre 11, 2020, 01:41:44 pm »
Merci aux personnes qui ont sympathiquement pris la peine de répondre aux interrogations d'un novice.
Le forum LOCODUINO est consacré aux discussions ayant trait à l'utilisation de l'Arduino dans les automatismes et les animations pour le train miniature. Nous avons eu récemment quelques inscriptions de personnes ayant des projets plus généraux mais surtout inapplicables au train miniature. Si votre projet ou vos questions ne concernent pas le modélisme ferroviaire, ne vous inscrivez pas, vous perdriez votre temps et nous aussi.
Cette section vous permet de consulter les contributions (messages, sujets et fichiers joints) d'un utilisateur. Vous ne pourrez voir que les contributions des zones auxquelles vous avez accès.
Je veux dire qu'il n'y a pas de code sur le fil pour piloter un servo c'est du 0-5V.
Liste les tailles des décodeurs, liste des courants maximaux.
Les deux autres ne sont pas lisibles (ou je n'y suis pas arrivé…)
Mais, et tu l'as dit toi même : ce n'est pas la bonne piste..
Même toi, tu te demandais pourquoi on devait faire des choses en dehors du programme..
void sauve_table_Materiel() {
Materiel.clearRows();
TableRow newRow;
int compte_vehicules = -1;
for (Vehicule veh0 : tous_vehicules_complet) {
newRow = Materiel.addRow();
compte_vehicules++;
Materiel.setString(compte_vehicules, "nom", veh0.nom);
Materiel.setString(compte_vehicules, "image", veh0.image_t);
Materiel.setString(compte_vehicules, "marque", veh0.marque);
Materiel.setString(compte_vehicules, "ref", veh0.ref);
Materiel.setInt( compte_vehicules, "htamp", veh0.htamp);
Materiel.setString(compte_vehicules, "couleur", "#"+hex(color(veh0.couleur)).substring(2)); // hex(color) -> String. String doit démarrer par #. Il faut donc remplacer les deux 1er caractères (FF)
Materiel.setString(compte_vehicules, "echelle", veh0.echelle);
Materiel.setInt( compte_vehicules, "moteur", int(veh0.moteur));
Materiel.setInt( compte_vehicules, "dcc", int(veh0.dcc));
Materiel.setString(compte_vehicules, "date", veh0.date);
Materiel.setString(compte_vehicules, "fabricant", veh0.fabricant);
Materiel.setString(compte_vehicules, "famille", veh0.famille);
Materiel.setString(compte_vehicules, "modele", veh0.modele);
for (int i = 1; i < 201; i++) {
Materiel.setInt(compte_vehicules, "CV"+str(i), veh0.CV[i]);
}
for (int i = 0; i < 5; i++) {
Materiel.setInt(compte_vehicules, "P"+str(i), veh0.p[i]);
}
Materiel.setInt( compte_vehicules, "ident", veh0.ID);
}
saveTable(Materiel, Repertoire_Communs+"Materiel/Materiel.tsv");
}
Par contre, ta nouvelle, à 2 boutons, fonctionne et, mieux, le fichier .tsv ajouté est parfaitement fonctionnel
On ne sait toujours pas si le .tsv généré est bien utilisable ?
Tu peux m'envoyer le fichier Excel avec la macro ? (J'ai la flemme... et du boulot)
Mais je tiens à ce que ça ne marche pas si on n'a pas mis de photo.
La photo est un élément indispensable à l'esthétique de l'appli.
Option Explicit
Dim Ajout As Boolean
Function ValExiste(Wks As String, sCol As String, vSearch As String) As Boolean
ValExiste = False
ValExiste = Not IsError(Application.Match(vSearch, Sheets(Wks).Range(sCol & ":" & sCol), 0))
End Function
Sub ajouterligne()
Dim Feuille As Worksheet
Dim derLig As Long
Dim NouveauNom As String
Dim NomImage As String
Dim NRange As String
Dim NomUnique As Boolean
Ajout = False
NomUnique = False
If MsgBox("Voulez vous ajouter une machine ?", vbYesNo, "Demande de confirmation") = vbYes Then
'ajout demandé
Ajout = True
End If
If Ajout = True Then
Application.DisplayAlerts = False
'derniere ligne
derLig = Sheets("Materiel").Cells(Rows.Count, 1).End(xlUp).Row
While NomUnique = False
NomUnique = True
NouveauNom = InputBox("Entrez le nom de la machine !", "Nouvelle machine", "Le nom doit etre unique")
If ValExiste("Materiel", "A", NouveauNom) Then
MsgBox "Le nom existe déja !", vbExclamation
NomUnique = False
End If
Wend
'Affiche la boîte de dialogue "Ouvrir"
ChDir ThisWorkbook.Path & "\"
Application.FileDialog(msoFileDialogFilePicker).AllowMultiSelect = False
NomImage = Application.GetOpenFilename("Images (*.png),*.png")
NomImage = Split(NomImage, "\")(UBound(Split(NomImage, "\")))
NRange = derLig & ":" & derLig
Sheets("Materiel").Rows(NRange).Copy
Sheets("Materiel").Range(NRange).Insert Shift:=xlDown
Sheets("Materiel").Range("A" & derLig + 1) = NouveauNom
Sheets("Materiel").Range("B" & derLig + 1) = NomImage
MsgBox "Nouvelle machine ajoutée !"
Application.DisplayAlerts = True
End If
End Sub
Option Explicit
Dim sauvegarde As Boolean 'variable sauvegarde fichier
Private Sub CommandButton1_Click()
Dim Feuille As Worksheet
sauvegarde = False
If MsgBox("Voulez vous sauvegarder le fichier tsv ?", vbYesNo, "Demande de confirmation") = vbYes Then
'sauvegarde demandée
sauvegarde = True
End If
If sauvegarde = True Then
Application.DisplayAlerts = False
For Each Feuille In ActiveWorkbook.Sheets
If Feuille.Name = "Materiel" Then
Feuille.Copy
With ActiveWorkbook
.Title = Feuille.Name
.Subject = Feuille.Name
.SaveAs Filename:=ThisWorkbook.Path & "\" & Feuille.Name & ".tsv", _
FileFormat:=xlText, CreateBackup:=False
.SaveAs Filename:=ThisWorkbook.Path & "\" & Feuille.Name & ".xls", _
FileFormat:=xlExcel8, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
.Close
End With
End If
Next
MsgBox "Nouveau fichier créé et sauvegardé !"
Application.DisplayAlerts = True
End If
End Sub