Après avoir écrit plusieurs personnalisée différents protocoles de série pour divers projets, j'ai commencé à devenir frustré de ré-inventer la roue à chaque fois. Au lieu de continuer à développer des solutions personnalisées pour chaque projet, j'ai été à la recherche pour plus de solution générale. Je me demandais si quelqu'un connaît un protocole série (ou, mieux encore, la mise en œuvre) qui remplit les conditions suivantes:
- Support de plusieurs périphériques. Nous aimerions être en mesure de soutenir un bus RS485.
- La garantie de livraison. Une sorte de mécanisme de reconnaissance, et une simple erreur de détection (CRC16 est probablement pas un problème).
- Pas de maître/esclave. Idéalement, l'esclave(s) serait capable d'envoyer des données de manière asynchrone. C'est principalement pour des raisons d'esthétique, le concept de bureaux de chaque esclave ne se sent pas le droit de me.
- OS de l'indépendance. Idéalement, il ne serait pas compter sur un multitâche préemptif de l'environnement à tous. Je suis prêt à l'admettre si je peux obtenir les autres trucs.
- ANSI C. Nous avons besoin pour être en mesure de le compiler pour plusieurs architectures différentes.
La vitesse n'est pas trop un problème, nous sommes prêts à donner un peu de vitesse dans le but de répondre à certains de ces besoins. Nous tenons toutefois à minimiser la quantité de ressources nécessaires.
Je suis sur le point de commencer à mettre en œuvre un protocole à fenêtre glissante avec greffé et les accusés de réception sans sélective répéter, mais la pensée que peut-être quelqu'un pourrait me sauver de l'ennui. Quelqu'un sait-il d'un projet existant, que je pouvais en tirer profit? Ou peut-être une meilleure stratégie?
Mise à JOUR
J'ai sérieusement considéré comme une implémentation de TCP/IP, mais espérais vraiment pour quelque chose de plus léger. De nombreuses caractéristiques de TCP/IP sont overkill pour ce que je suis en train de faire. Je suis prêt à accepter (à contrecœur) que peut-être les caractéristiques que je veux juste ne sont pas inclus dans le plus léger des protocoles.
Mise à JOUR 2
Merci pour les conseils sur le POUVEZ. J'ai regardé dans le passé et sera probablement l'utiliser dans l'avenir. J'aimerais vraiment que la bibliothèque pour gérer les accusés de réception, mise en mémoire tampon, les tentatives etc, mais. Je suppose que je suis plus à la recherche d'un réseau/une couche de transport au lieu d'une liaison de données/de la couche physique.
Mise à JOUR 3
Il semble donc qu'un état de l'art dans ce domaine est:
- Une ligne en bas de la pile TCP/IP. Probablement commencer avec quelque chose comme lwIP ou de l' uIP.
- Une fonction de mise en œuvre, il serait probablement s'appuient fortement sur le bus can, donc il ne serait pas utile sur d'autres couches physiques. Quelque chose comme PEUT le Festival pourrait aider le long du chemin.
- Un HDLC ou SDLC mise en œuvre (comme cette une). C'est probablement la route que nous allons prendre.
N'hésitez pas à poster plus de réponses si vous tombez sur cette question.