Как надежно прочитать CTS и DSR статус последовательного порта с C# - PullRequest
0 голосов
/ 29 марта 2020

В прошлом (15 лет go) я создал небольшую программу на Delphi для мониторинга, записи и отображения временной диаграммы сигналов от связи I2 C между P C и I2 C -sensor. Теперь мне нужно то же самое, и у меня есть большая проблема, чтобы адаптировать его для C#. В общем, я подключаю линию CTS от последовательного порта к линии SCL I2 C и DSR к SDA. Затем я запускаю поток, который читает состояние CTS и DSR (с бесконечным l oop) и сохраняет их в файл. Это код:

        void InitCommPort()
        {
            myCOMport = new SerialPort("COM2", 9600);
            myCOMport.Open();
        }

        while (!bExit)
        {
            CTS_Signal = myCOMport.CtsHolding;
            DSR_Signal = myCOMport.DsrHolding;
        }

Проблема в том, что я не могу получить сигналы [CTS и DSR] достаточно быстро, чтобы восстановить протокол связи. На самом деле в основном я могу получить только один из сигналов, и это только часть всей передачи. Я пробовал также «SerialPinChangedEventHandler», но в результате я получаю только «0». Очевидно, что я что-то упустил или просто SerialPort-Class сделан таким образом. Можно ли это сделать с C#? Я не хочу устанавливать Windows XP для чего-то простого. Любая помощь будет оценена. Заранее спасибо

...