Из XCode, как я могу прочитать данные из текстового файла, который постоянно обновляется? - PullRequest
0 голосов
/ 04 декабря 2009

Я работаю с модулем GPS, который передает данные на мой Mac через последовательный интерфейс RS232-USB. Я написал программу objC, которая берет необработанные данные и преобразует их в значимую информацию.

Используя программу goSerial, я могу записать все входящие данные в текстовый файл. Мне удалось заставить мою программу читать текстовый файл и обрабатывать данные построчно.

Я бы хотел, чтобы эта процедура происходила в режиме реального времени, т. Е. Как только данные получены, они регистрируются в текстовом файле, и моя программа читает их. Первая часть этого происходит автоматически, то есть текстовый файл постоянно добавляется (когда он не открыт). Можно ли отслеживать текстовый файл для добавления данных и читать только новые строки? Кроме того, повлияет ли это на возможность сохранения новых входящих данных?

Спасибо !!!

(Кроме того, если кто-нибудь знает, как я могу отправить последовательные данные напрямую в Xcode, пожалуйста, дайте мне знать!)

Ответы [ 3 ]

2 голосов
/ 04 декабря 2009

Вы можете использовать kqueue (возможно, с оберткой, такой как UKKQueue ), чтобы просмотреть файл на предмет изменений.

2 голосов
/ 04 декабря 2009

Я не уверен, как влияет последовательный порт на USB, но традиционно unix обращается к последовательным устройствам, используя механизм файлов устройств , который обрабатывает ввод с устройства как файл, который нужно прочитать. Вы бы использовали NSFileHandle для чтения файла из Cocoa / Foundation. Вы, вероятно, хотите проверить приложение IORegistryExplorer, чтобы увидеть, как ваше устройство показывает.

0 голосов
/ 04 декабря 2009

Вы сможете создать сокет домена unix, который затем можно будет открыть в приложении goSerial (как это выглядит в обычном файле на fs)

А затем прочитайте с другого конца, аналогично в вашем приложении. Это, вероятно, самый простой способ, или, альтернативно, взглянуть на источник хвоста в coreutils GNU, в частности это -f функция (хотя, подумав больше, вы, вероятно, захотите посмотреть, как работает реализация FreeBSD, так как я считаю, что GNU версия использует некоторые специфичные для Linux обратные вызовы)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...