Как передавать мягкие данные в реальном времени из Matlab в приложение C#?
В настоящее время я использую Matlab для получения данных из трекера глаз, используя определенный набор инструментов. После этого поток данных должен быть слегка обработан и отправлен в приложение C# (.NET Framework). Весь поток данных должен быть как можно больше в реальном времени (данные, полученные и обработанные не более чем за 30 мс).
Мне нужен способ сопряжения данных, полученных из Matlab и приложения C#. Я думал использовать текстовый файл, но в этом случае должна существовать синхронизация между операцией записи и чтения. Существуют ли способы синхронизации операции ввода-вывода Matlab с операцией ввода-вывода C#?
1 ответ
Решение
Я могу предложить три подхода:
- Используйте основанную на файле синхронизацию с файлом флага. Используйте один файл для данных, а другой файл, чтобы указать, что данные готовы для чтения. Файл флага удаляется после прочтения файла данных. Это легко реализовать и не требует каких-либо дополнительных наборов инструментов Matlab, но имеет потенциальные проблемы, когда вы пытаетесь достичь высокой скорости передачи данных или высокоскоростной синхронизации с низкой задержкой. Вам в основном придется попробовать и посмотреть, работает ли он на вашем оборудовании.
- Скомпилируйте вашу программу Matlab в библиотеку (.dll), которую вы можете вызвать из вашего приложения C#. Тогда у вас есть только одно приложение. Для этого используйте SDK MATLAB Compiler.
- Используйте сокеты TCP для связи между двумя программами. Преимущество состоит в том, что эти две программы могут работать на разных компьютерах, а также на одном компьютере. Пример Matlab приведен здесь.