Envoyer des octets de port série à partir de la ligne de commande UNIX?
je voudrais envoyer un flux d'octets à un port série à l'aide de la ligne de commande. est-ce possible? mon port série est à /dev/cu.usbserial-A700dYoR sur mon Mac. par exemple, si je voulais envoyer l'entier 50 ou la chaîne "données" pour le port série, comment puis-je le faire?
ma connaissance de UNIX est très limitée.
OriginalL'auteur TheDarkIn1978 | 2010-09-28
Vous devez vous connecter pour publier un commentaire.
ou quelque chose comme ça si je me souviens bien... quelques années. Vous aurez probablement à être
sudo
pour que cela fonctionne...C'est l'envoi de texte... pas binaire.. pour envoyer le numéro 50 en tant que texte
pour l'envoyer comme un entier binaire serait plus difficile.
echo '2' > /dev/cu.usbserial-A700dYoR
enverra 50 comme un seul octet. Si vous avez vraiment besoin d'envoyer un "integer", vous devez découvrir ce qu'est un "entier" pour le récepteur (par exemple, big ou little endian, 7 ou 8 de flux d'octets, de l'encodage).en gros, je suis en train d'envoyer quelque chose comme writeByte(50), ou un nombre entier allant de 0 à 255, le port série. puis-je indiquer le endian sur la ligne de commande?
Si vous envoyez des octets individuellement, vous ne pouvez pas besoin de s'inquiéter à propos de l'ordre des octets. Pour envoyer un décimal de 50 octets dans Bash:
printf '%c' $'\x32' > /dev/cu.usbserial-A700dYoR
...ou
printf '%b' '\x32' > /dev/cu.usbserial-A700dYoR
quelle est la traduction? je vais envoyer les octets dont la valeur varie de 0 à 255, donc si 50 est équivalent à x32, comment puis-je obtenir cette équivalence?
OriginalL'auteur Justin808