Je dois recevoir 3 caractères toutes les 2 millisecondes dans une boucle. J'utilise SerialPort.Read() mais il faut 5 à 6 milisecondes pour lire les données entrantes. Est-il possible de le faire? Merci beaucoup.Lire les données de port série en moins de 2 ms en C#
Répondre
Vous pouvez appeler le port série en C++, https://stackoverflow.com/a/15795522/67566
Ensuite, vous pouvez appeler à partir de C#, https://msdn.microsoft.com/en-us/library/ms235281.aspx
Je pense que ce sera plus rapide, mais vous aurez un ralentissement à obtenir le les données de C++ -> C#, et votre fenêtre de 2-3 ms est très minuscule.
Vous pouvez obtenir les données dans ce délai, je suppose, à partir de C++, mais vous devrez peut-être le mettre en tampon, donc je mettrais un horodatage avec chaque donnée, et quand vous l'appelez de C#, vous devrez peut-être Renvoyez plus d'une pièce, puis traitez-les.
En C++ DLL, vous devez disposer d'un thread séparé pour la lecture à partir du port série.
Vous devez utiliser la classe thread
, https://msdn.microsoft.com/en-us/library/hh920601.aspx et la détacher après la création.
Et enfin, vous voulez utiliser un fil file d'attente en toute sécurité, de sorte que vous pouvez regarder ces deux liens et choisir celui que vous aimez mieux:
https://juanchopanzacpp.wordpress.com/2013/02/26/concurrent-queue-c11/
Est-il Looping aussi vite possible? Si c'est le cas, il est probable que la connexion série soit trop lente et pas votre code. – Firearrow5235
SerialPort.Read() seul prend de 5 à 6 ms et ne commence même pas à traiter les données entrantes. – Jardo421