Skip to Content
TCC SFEC TerminalConnexion série

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 COM10 auquel votre logiciel se connecte ;
  • relaie votre facture (encadrée en END_JSON) au terminal et vous renvoie uniquement le résultat de certification (success ou error) ;
  • gère pour vous la liaison avec le terminal, de sorte que votre client reste une simple boucle requête/réponseaucune 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) ◄── terminal

Le 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ètreValeur
PortCOM10
Débit (baud)115200
Bits de données8
ParitéNone
Bits de stop1 (soit 8N1)
Contrôle de fluxNone
EncodageUTF-8
Marqueur de trameEND_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_JSON sur COM10.
  • 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_JSON

Le 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 :

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