web-dev-qa-db-fra.com

comment écrire des caractères sur le port série

J'ai un ancien spectromètre en série qui ne fonctionne que sur win9x. Je veux convertir sur un système Linux, mais le logiciel existant est propriétaire et ne fonctionnera pas. J'ai pu accéder à une console en interne sur le spectromètre. La console accepte les commandes de caractères du clavier et envoie la sortie au port série.

dans vb6 je peux écrire sur le port com avec des valeurs de caractères http://www.gtwiki.org/mwiki/?title=VB_Chr_Values en utilisant ComPort.Write (Chr (34))

Je suis intéressé par l’utilisation de Qt pour l’interface. Comment puis-je envoyer quelque chose dans le même sens que ComPort.Write (Chr (34)) en utilisant qt?

2
j0h
  • Voici un exemple du site officiel de Qt (C++)

    http://qt-project.org/wiki/QtSerialPort

  • Si Visual Basic est votre background, vous préférerez peut-être Gambas3

    http://gambasdoc.org/help/comp/gb.net/serialport?v

    Gambas a une syntaxe similaire à Visual Basic (VB) et prend en charge Qt en tant que kit d’interface graphique.

    Voir http://gambasdoc.org/help/comp?v

  • Sous Linux/BSD, le port série est plus accessible que Windows. Vous pouvez même y écrire depuis Shell/terminal ou utiliser l'appel système depuis la plupart des langages de programmation.

    Exemple dans Shell avec un téléphone Android comme modem, il peut être utile de déboguer:

    1. Lecture du port série (doit être root):

      Sudo su
      cat /dev/ttyACM0
      

      Comme vous pouvez lire quelques lignes au besoin:

      head -n2 /dev/ttyACM0
      
    2. Écrire en série, ouvrir un autre onglet de terminal ou une fenêtre:

      Sudo su
      echo -e "AT" > /dev/ttyACM0
      

      Il affiche OK sur la fenêtre de lecture du port. Vous pouvez également envoyer des données hexadécimales (utilisez l'option -n pour éviter d'envoyer une nouvelle ligne à la fin).

      echo -e -n "\x41\x54\x0a" > /dev/ttyACM0
      

      pareil que:

      echo -e "\x41\x54" > /dev/ttyACM0
      

      Shell affichera l'hex non affiché sous forme de petit carré avec sa valeur écrite à l'intérieur. Essaye ça.

      echo -e "\x13"
      
1
user.dz