Connexion série / COM
Le TCC SFEC Terminal se certifie par un seul transport : un port COM série. Votre logiciel parle à un simple port COM ; un outil Windows fourni — le pont série SfecTcpMiddleware — se charge de tout le reste.
Ce que le pont fait pour vous
SfecTcpMiddleware est un outil fourni que vous exécutez (vous ne le compilez ni ne le modifiez jamais). Une fois lancé, il :
- expose un port série
COM10auquel votre logiciel se connecte ; - relaie votre facture (encadrée en
END_JSON) au terminal et vous renvoie uniquement le résultat de certification (successouerror) ; - gère pour vous la liaison avec le terminal, de sorte que votre client reste une simple boucle requête/réponse — aucune poignée de main, aucun heartbeat, aucun démultiplexage à implémenter.
Concrètement, tout votre code ne parle qu’à COM10 :
Votre logiciel ──► COM10 (pont SfecTcpMiddleware) ──► terminal
Votre logiciel ◄── COM10 (pont SfecTcpMiddleware) ◄── terminalLe pont et sa procédure d’installation vous sont fournis par le SFEC. Ce guide décrit uniquement le contrat d’intégration — le port, les paramètres série et l’encadrement — que votre logiciel doit respecter. Pour l’installation et la configuration du pont et du terminal, reportez-vous au paquet fourni ou contactez le support.
Prérequis
- Poste hôte Windows exécutant le pont
SfecTcpMiddleware, lancé en tant qu’Administrateur. - Terminal allumé, connecté (session ouverte) et relié au poste hôte, avec l’Android SFEC App en cours d’exécution.
- Ordre de démarrage : le terminal d’abord, puis le pont, puis votre logiciel.
La liaison avec le terminal est locale. Gardez le terminal et le poste hôte du pont sur un environnement isolé et de confiance.
Paramètres série (à respecter exactement)
Ouvrez COM10 avec exactement ces réglages. Ils ne sont pas négociables.
| Paramètre | Valeur |
|---|---|
| Port | COM10 |
| Débit (baud) | 115200 |
| Bits de données | 8 |
| Parité | None |
| Bits de stop | 1 (soit 8N1) |
| Contrôle de flux | None |
| Encodage | UTF-8 |
| Marqueur de trame | END_JSON (ASCII littéral, jamais un saut de ligne) |
| Délai de lecture (par échange de facture) | ≥ 35000 ms (budget terminal 30 s + marge) |
Encadrement sur le fil — END_JSON, pas un saut de ligne
C’est le détail le plus important du transport. Chaque message est l’objet JSON suivi immédiatement de la chaîne ASCII littérale END_JSON, sans saut de ligne. Il n’y a ni préfixe de longueur ni autre marqueur — END_JSON est la frontière de trame dans les deux sens.
- Envoi : sérialisez votre facture en une seule ligne de JSON UTF-8, puis écrivez
<json>END_JSONsurCOM10. - Réception : bufferisez les octets et découpez sur
END_JSON, retirez le marqueur, puis parsez le JSON qui précède.
N’insérez pas de saut de ligne brut dans le JSON ; gardez-le sur une seule ligne et laissez END_JSON être la seule frontière. Une seule lecture série peut renvoyer une trame partielle (les PNG QR Base64 rendent les trames de succès de plusieurs Ko), donc bouclez toujours jusqu’à voir END_JSON.
N’émettez jamais le jeton littéral END_JSON à l’intérieur d’une charge utile. Le découpage se fait sur la première occurrence de END_JSON ; une charge utile la contenant serait tronquée. Les données de facture normales ne la contiennent jamais.
Sur le fil, une requête et sa réponse ressemblent à ceci (charge utile complète : voir Envoyer une facture) :
Requête sur COM10 :
{"invoiceId":"INV-2026-0001","invoiceType":"salesInvoice", ... ,"items":[ ... ]}END_JSON
Réponse sur COM10 :
{"status":"success","invoice_id":"INV-2026-0001","sfec_number":"SFEC-202507-00000001-4821","qr_code":"<PNG Base64, sans saut de ligne>","certification_date":1751328000000,"message":"Invoice certified successfully","protocol":"TCP"}END_JSONLe champ protocol de la réponse est un champ interne sans signification pour votre intégration — ignorez-le.
Ce que votre logiciel reçoit
Le pont vous transmet uniquement les deux réponses qui vous concernent :
status: "success"— la facture est certifiée. Voir Lire la réponse.status: "error"— la facture est rejetée. Voir Erreurs & santé.
Vous n’avez donc rien d’autre à gérer : ouvrez COM10, envoyez une facture, lisez la trame END_JSON suivante, branchez sur status, continuez. Pas de poignée de main, pas de heartbeat, pas de démultiplexage.
Le pont affiche une confirmation lorsqu’il a démarré et s’est connecté au terminal. Si vous ne voyez jamais cette confirmation, le problème vient de la mise en service du terminal ou du pont (et non de votre code série) — vérifiez les prérequis ci-dessus ou contactez le support.
Étape suivante → Envoyer une facture