Connexion
Le dispositif Datamega TCC est atteint via un port série. Votre logiciel est l’initiateur : il ouvre le port, écrit une trame de commande, puis lit la trame de réponse.
Paramètres série
La spécification du protocole définit le cadrage et les commandes, pas les réglages physiques du lien (débit en bauds, bits de données, parité, bits de stop, ni le nom du port côté système d’exploitation). Obtenez ces valeurs auprès de votre dispositif ou de votre fournisseur et ouvrez le port en conséquence.
Une configuration courante est 8 bits de données, sans parité, 1 bit de stop (8N1), mais confirmez le débit en bauds et le port avec votre dispositif avant la mise en production — ne supposez rien.
- Windows : le port est un nom
COMx(ex.COM3). - Linux/macOS : le port est un chemin de périphérique (ex.
/dev/ttyUSB0,/dev/tty.usbserial-XXXX).
Définissez un délai d’attente en lecture (timeout) pour qu’une réponse absente ou lente lève une erreur plutôt que de bloquer indéfiniment (2 à 5 secondes est un défaut raisonnable ; le dispositif répond rapidement).
Ouvrir le port
Remplacez le nom du port et le débit par les valeurs de votre dispositif.
Python
# Python (pyserial)
import serial
port = serial.Serial(port="COM3", baudrate=115200, bytesize=8,
parity=serial.PARITY_NONE, stopbits=1, timeout=3)Tester le lien avec C1h (Status)
Une fois le port ouvert, vérifiez que le dispositif répond bien avec la commande C1h (Status Query). Une réponse valide signifie que le port, le cadrage et le dispositif fonctionnent ; elle indique aussi si le terminal est activé et fournit l’URL de vérification des reçus (verify_url).
Commande C1h — DATA : aucune. Réponse : {result} suivi des champs ci-dessous.
| Champ de réponse | Signification |
|---|---|
result | 0 = échec, 1 = succès |
niu | Numéro d’identification unique du contribuable (NIU) |
terminal_identifier | Identifiant du terminal |
TAXT | Compteur de taxe T |
TAXR | Compteur de taxe R |
TAXE | Compteur d’exonération (Tax Exempt) |
verify_url | URL de base de vérification des reçus (sert à construire le QR code) |
Exemples de réponse (verbatim de la spécification) :
Succès : 1:P000001212112130,POINT-001,18,5,0,https://dev-pgsfec.akieni.tech/verify-invoice/
Échec : 0:No activation informationDans la réponse de statut du dispositif, le result est suivi d’un deux-points :, puis les champs restants sont séparés par des virgules. (Les autres commandes séparent tous les champs, y compris result, par des virgules.)
Exemple — tester la connexion
Python
import serial
from datamega import send_command
port = serial.Serial("COM3", 115200, timeout=3) # port + réglages de votre dispositif
reply = send_command(port, 0xC1) # C1h
if reply.startswith("1"):
niu, terminal, taxt, taxr, taxe, verify_url = reply[2:].split(",")
print("online:", terminal, "| verify_url:", verify_url)
else:
print("device not ready:", reply) # ex. 0:No activation information
port.close()Les fonctions send_command / SendCommand / sendCommand utilisées ici proviennent des utilitaires de cadrage présentés dans Format des trames.
Étape suivante → Format des trames