Étape 13 : Code !
Lorsque vous générez un projet, le logiciel est ce qui lie le projet. Vous pourriez avoir une borne de recherche incroyable, mais il ne fait rien. Ce n'est pas ce que vous êtes arrivé à construire. Vous êtes venu ici pour un terminal de travail extensible. Et c’est ce qui se passe à faire.
Un lien vers Github avec un code, qui a un peu de commandes est jointe. Il ne fait pas trop beaucoup dans les modes de calculs avancés et prédire quand la prochaine fois que vous tomberez en bas des escaliers, mais vous pourriez éventuellement faire faire ! Les commandes vont comme suit :
aide - affiche toutes les commandes, vous pouvez le faire. Exemple : aider
rfile directory/file.extension - renvoie le contenu d’un fichier à l’écran. Les répertoire/répertoires laisser en blanc si vous voulez juste pour lire un fichier dans le dossier racine de la carte SD. Exemple : rfile folder/test.txt
Répertoire de lfile - affiche tous les fichiers et répertoires avec des tailles d’affichage. Tailles sont à droite du fichier et est un « / » si c’est un répertoire. Exemple : lfile dossier/another_folder
reset - revient à appuyer sur le "Reset" bouton sur votre Arduino/tout boucliers qui peuvent avoir un. Exemple : Réinitialiser
cls - efface l’écran, il prend environ 2,5 secondes pour lui passer de haut en bas et est prêt à taper des commandes à nouveau.
Remarque : Pour que tout fonctionne, vous devrez installer certaines bibliothèques. Ces bibliothèques sont au bas de cette étape, avec ma page Github.
Ajout de commandes sont aussi simples comme suit :
À la ligne environ 138 du Terminal.ino, il y a une fonction appelée "runCommand(String args)"
C’est où toutes vos commandes. Penchons-nous sur la commande « rfile » à la ligne 154.
Vous devriez voir quelque chose comme ceci :
String tmp; String tmp2; tmp2 = args; if (args.indexOf(" ") > -1) { tmp = args.substring(args.indexOf(" ")); tmp2.replace(tmp, ""); tmp2.replace(" ", ""); // first was " -" tmp = tmp2; } else { tmp = args; } ... if (tmp == "rfile") { if(args.indexOf(" ") == 5) { String temp = args.substring(6); Tft.drawString("Opening file.", getX(), getY(), 1, RED); setY(getY() + 10); setX(0); fileFunct("read", temp); temp = ""; } else { Tft.drawString("Try: rfile file.txt", getX(), getY(), 1, RED); setY(getY() + 10); setX(0); } } ... else { Tft.drawString("Unknown!", getX(), getY(), 1, RED); setY(getY() + 10); setX(0); }
Brisons cette jusqu'à l’os à nu.
Nous allons commencer par le code au début :
String tmp; String tmp2; tmp2 = args; if (args.indexOf(" ") > -1) { tmp = args.substring(args.indexOf(" ")); tmp2.replace(tmp, ""); tmp2.replace(" ", ""); tmp = tmp2; } else { tmp = args; }
Pour commencer,
String tmp; String tmp2;
Sont juste définition des variables, tmp et tmp2. Ceux-ci sont réinitialisés chaque fois qu’une commande est passée à travers, d'où le nom abrégé, « temporaire ».
tmp2 = args;
Effectue une copie de ce qui est entré lorsque vous appuyez sur la touche ENTER, comme « args » est passé comme le noyau d’entrée.
Ce petit morceau de code :
if (args.indexOf(" ") > -1) {
Vérifie que l’index du caractère espace est plus de -1, alias là est un caractère d’espace. Commandes sans arguments n’aura pas cela.
Maintenant passons à la regarder ceci :
tmp = args.substring(args.indexOf(" ")); tmp2.replace(tmp, ""); tmp2.replace(" ", ""); tmp = tmp2;
Ceci, dans l’ordre des lignes, fait quelque chose comme ceci :
Définissez la chaîne « tmp » sur tout après et dont le caractère espace.
Ensuite, obtenir une copie de la commande entière, tmp2 et supprimer les caractères de l’argument, alors vous êtes laissé avec juste la commande principale, sans arguments.
Maintenant, remplacez ce caractère espace embêtants avec rien.
Ensuite, définissez le tmp de String à la valeur de tmp2.
Après ce petit bloc de code, vous verrez :
else { tmp = args; }
Qui dit, parce qu’il n’y a aucun args, définissez la variable « tmp » à la valeur de « args » donc « tmp » peut être enregistré.
Le code est maintenant prêt pour vérifier quelle commande est-il mis. Maintenant le temps pour le bloc de code suivant.
if (tmp == "rfile") { if(args.indexOf(" ") == 5) { String temp = args.substring(6); Tft.drawString("Opening file.", getX(), getY(), 1, RED); setY(getY() + 10); setX(0); fileFunct("read", temp); temp = ""; } else { Tft.drawString("Try: rfile file.txt", getX(), getY(), 1, RED); setY(getY() + 10); setX(0); } }
Le code :
if (tmp == "rfile") {
Vérifie que la chaîne 'tmp' (le bloc de commande principale) est la commande « rfile ».
Passer,
if(args.indexOf(" ") == 5) {
Fait qu’il y a un espace à l’index de 5, qui, dans cette commande, c’est juste après « rfile ». Étant donné que les numéros de codage et de commencent à l’index 0, ce nombre devrait être la longueur de la commande. Un exemple de ceci serait :
r -> 0
f -> 1
J’ai -> 2
l -> 3
e -> 4
[Espace] -> 5
String temp = args.substring(6);
Ce code crée une nouvelle chaîne, encore une fois remise à zéro chaque fois que la fonction de la commande est exécutée, qui est égal à un nombre entier supérieur au nombre que vous avez utilisé dans la dernière partie. Ex : Si on comptait 5, comme nous le faisions, ce nombre sera e 6. Cela crée le temp de la chaîne d’arguments. Ex: si la commande, le dossier rfile, a été conçue, temp serait dossier.
Maintenant, comme le code suivant n’est pas nécessaire pour faire vos propres commandes avec d’autres fonctions, je sera brièvement survoler ceci.
Tft.drawString("Opening file.", getX(), getY(), 1, RED); setY(getY() + 10); setX(0); fileFunct("read", temp); temp = "";
Dans l’ordre, ligne par ligne, c’est ce que le code :
Il dessine une chaîne « Ouverture fichier. » à la dernière X et Y valeur définie.
Cette commande définit la valeur de Y pour une utilisation de la prochaine fois que quelque chose est écrit dans la lettre de l’écran 1 (ou 10 pixels) vers le bas.
La valeur de X est définie sur 0, alors la prochaine fois que quelque chose est écrit à l’écran, ça commence au bord de l’écran.
C’est la fonction principale de la commande rfile. Il s’agit d’une fonction de type void, ce qui prend deux chaînes, dont l’une doit être « lu », et le nom du fichier est temp ou les arguments.
Juste, cela réinitialise le temp, au cas où quelque chose de bizarre passe qui est inattendu.
Maintenant, le code est presque fini pour cette commande. Il y a deux petites pièces à gauche, qui ressemble à ceci :
else { Tft.drawString("Try: rfile file.txt", getX(), getY(), 1, RED); setY(getY() + 10); setX(0); }
Qui est appelée si il n’y a aucun caractère d’espace, ou qu’il est mis au mauvais endroit.
Cela permet d’afficher sur l’écran, "essayez : rfile fichier.txt" en rouge, puis crée une nouvelle ligne.
else { Tft.drawString("Unknown!", getX(), getY(), 1, RED); setY(getY() + 10); setX(0); }
C’est appelée lorsque la commande est inconnue.
Cela affiche sur l’écran, « Inconnu! » en rouge, puis crée une nouvelle ligne.
Eh bien, c’est vraiment tout pour comment fonctionnent les commandes, je vais bientôt ajouter commentaires partout dans le code sur Github, en disant que tout ce que signifie.
GitHub :
https://github.com/RubbaBoy/ArduinoTerminal
Note : J’ai allons ajouter beaucoup plus de fonctions à ce projet et mise à jour des choses, donc ne vous inquiétez pas si quelque chose ne fonctionne correctement, ou veulent une nouvelle commande.
Bibliothèques :
Bibliothèque de clavier PS/2 :
http://www.pjrc.com/teensy/arduino_libraries/PS2Ke...
Seeed Studio 2.8'' TFT tactile bouclier V1.0 Library :
https://github.com/Seeed-Studio/TFT_Touch_Shield_V...
Seeed Studio Ethernet Shield V2.0