Étape 6: Communication avec l’ASUS
Communication avec le routeur peut sembler un peu rébarbatif (enfin il l’a fait pour moi), surtout quand vous êtes nouveau sur elle. Mais ce n’est pas aussi difficile que cela puisse paraître.Envoyer des commandes vers le routeur
Tout d’abord, nous avons besoin de décider ce que nous voulons faire de la radio. Fondamentalement, nous voulons qu’il :
- jouer
- mettre en pause
- arrêter
- changer de station
- changer le volume
Si nous regardons dans la liste des commandes pour mpc, nous voyons que :
- la commande pour play = jouer un mpc
- la commande pause = pause de mpc
- la commande d’arrêt = arr├¬ter de mpc
- la commande de volume = volume de mpc [+/-] num (valeur numérique)
L’évolution de la station est un peu plus difficile. Pour être en mesure de passer à une autre station, mpc a besoin de connaître son adresse. Plus simple de le faire consiste à précharger toutes nos stations préférées dans une liste de lecture sur le lecteur. Ainsi, au début de notre code, nous allons ajouter la commande :
mpc ajouter adresse pour chaque station, nous tenons à précharger dans le routeur.
Avant de commencer à ajouter des stations, nous pourrions émettre une commande mpc clair . Ceci effacera toutes les listes précédentes, juste au cas où nous avons apporté aucune modification à notre liste.
Après que tout cela est fait, nous pouvons changer la station avec la commande mpc jouer num , num correspondant à la position de la station dans notre liste de lecture ajouté.
Bascom, l’envoi de ces commandes au routeur est très facile. Tout est fait avec une impression:
Imprimer "mpc play" ou PRINT "mpc volume + 5"
Il n’y a pas besoin d’ajouter un retour de Carridge (CR ou ascii 013) à la commande que l’instruction PRINT ajoute que par lui-même.
Donc comme vous pouvez le voir, envoyer des commandes vers le routeur n’est pas difficile du tout !
Demande et la réception d’informations du routeur
Demande et la réception d’informations de la toupie sont un peu plus difficile. Encore une fois, nous devrons décider quelles infos nous voulons recevoir du routeur. Lorsque vous lisez la partie 6 sur www.mightyohm.com, vous verrez qu’il y a beaucoup d’infos que vous pouvez obtenir, mais nous voulons seulement savoir :
- le nom de la station
- le titre de la chanson
- le volume
La demande pour la réception de la station et le titre est faite avec la commande suivante :
echo « currentsong » | nc localhost 6600 | grep -e « ^ titre: "-e" ^ nom: " (attention à la capitale T et N)
et pour le volume :
echo « statut » | nc localhost 6600 | grep -e « ^ volume: » (Pas de capital ici)
Donc en bascom qui donnerait :
Imprimer « echo » ; Chr (34) ; « currentsong » ; Chr (34) ; " | NC localhost 6600 | grep -e "; Chr (34) ; « ^ Titre: "; Chr (34) ; " -e " ; Chr (34) ; « ^ Nom: "; Chr (34) ; ">/dev/tts/0"
et
Imprimer « echo » ; Chr (34) ; « statut » ; Chr (34) ; " | NC localhost 6600 | grep -e "; Chr (34) ; « ^ volume: "; Chr (34) ; ">/dev/tts/0"
Encore une fois il n’y a pas besoin d’ajouter un CR.
Quand nous envoyons une de ces demandes, nous recevrons quelque chose dans notre mémoire tampon immédiatement. Maintenant, nous avons besoin disposer de toutes les données dans le tampon en choses utiles.
Heureusement pour nous, le routeur étiquettes ses infos. Avant la stationname il ajoute nom:, avant le titre titre et volume volume. Donc nous allons laisser notre code Rechercher l’étiquette appropriée et de lire la mémoire tampon à partir de là, jusqu'à ce qu’il rencontre un CR ou jusqu'à ce que le tampon est vide. Après que toute l’information est extraite de la 25applications, nous vidons tout simplement la mémoire tampon afin qu’il peut être utilisé pour une autre demande.
Pour ce faire, nous commençons par la lecture de la mémoire tampon dans une chaîne. Après cela, on peut simplement nettoyer la mémoire tampon afin qu’il n’y a pas de caractères non désirés à gauche. Nous allons examiner dans notre chaîne pour l’une des étiquettes avec le var = INSTR (string, substr) déclaration. Ceci renverra la position de notre label dans notre chaîne principale.
position = Instr (Uart_in_string, "nom:")
Cela nous donnera la position du premier caractère de l’étiquette. Si vous ne voulez pas ajouter l’étiquette sur votre écran, puis il suffit d’ajouter la quantité que nécessaire pour commencer à lire derrière l’étiquette. Dans ce cas :
Position = position + 6
D’ici nous devons déterminer combien de temps les données. Donc de la position du point, nous allons commencer à lire un caractère à la fois jusqu'à ce que nous trouvons un CR ou jusqu'à ce que nous avons atteint le dernier caractère de la chaîne. Nous utilisons le var = MID (var1, st [, l]) déclaration où var1 = la source, st = point de départ et j’ai = la quantité de caractères à lire. Ainsi, dans notre cas :
Longueur = 0
Faire
Longueur de la incr
Position = Position + longueur
Temp = MID (Uart_in_string, Position 1)
Boucle jusqu’au Temp = Chr (13) ou Temp = » »
Alors maintenant, nous savons la longueur de nos données et la seule chose qui reste à faire, consiste à extraire les données de la source de la chaîne. Encore une fois avec l’instruction Mid :
Nom = Mid (Uart_in_str, position longueur)
Les mêmes travaillera pour le titre et le volume.
Maintenant, nous ne discutons pas encore comment lire de la mémoire tampon et pour le vider. Lecture de la mémoire tampon est faite avec var = INKEY(). Cela retourne la valeur ascii du premier octet dans la mémoire tampon et supprimez ce caractère de la mémoire tampon. Nous il suffit d’ajouter chaque caractère reçu seul ensemble en une chaîne contenant tout ou partie de la mémoire tampon.
Faire
Uart_buffer = Ischarwaiting() Ischarwaiting() indique le nombre de caractères y est en attente dans la mémoire tampon
Si Uart_buffer > 0 Then
Uart_in = Inkey()
Uart_in_str = Uart_in_str + Chr(uart_in) Chr transforme la valeur ascii de la véritable nature
End If
Boucle jusqu'à ce que Uart_buffer = 0 ou Len(uart_in_str) = 255 Len nous donne la longueur d’une chaîne
Pour vider la mémoire tampon, il suffit de tout lire en chaîne jusqu'à Ischarwaiting() = 0
C’était tout ce que vous besoin savoir communiquer avec votre routeur. Tout le reste du code sont pour la plupart cosmétiques : trucs graphiques et ainsi de suite.