J'ai un périphérique dont j'ai besoin pour établir une connexion en utilisant SerialPort. Cet appareil reçoit des commandes de mon côté et m'envoie également des données. Je fais tous les envoyer/recevoir dans la même classe => même fil.comment écrire et lire à serialPort en même temps?
J'ai été connecté à cet appareil et j'ai réussi à envoyer/recevoir des commandes et des données depuis/vers cet appareil. L'une des commandes que j'ai besoin d'envoyer toutes les 25 millisecondes est 'donnez-moi votre statut' - cela signifie que je demande au périphérique d'envoyer une structure avec des données.
Au cas où je manquerais des données de réception ... quand je fais 'serialPortStream.BytesToRead' (test s'il y a des données à obtenir) trouverai-je sur mon ByteReading l'ancien tampon que je n'ai pas encore radé? combien de paquets j'aurai là au cas où j'ai raté le dernier paquet que j'avais besoin de lire ou peut-être les nouvelles données reçues supprimeront-elles les anciennes données déjà reçues?
Vous avez besoin de deux threads. Je voudrais créer une classe avec un gestionnaire d'événements, par exemple SerialPort.DataRecieved + = ____ qui remplit un ConcurrentQueue chaque fois qu'un nouvel octet est reçu. Vous pouvez ensuite lire cette file d'attente dans votre fil principal et y écrire. Notez que vos paquets peuvent être hors service mais vous n'en manquerez aucun. – rolls