Bluetooth в Lazarus / FreePascal в Mac OS X - PullRequest
       23

Bluetooth в Lazarus / FreePascal в Mac OS X

3 голосов
/ 12 ноября 2009

Кто-нибудь использовал Bluetooth на Mac OS X с Lazarus или FreePascal? Устройство Bluetooth есть, но в настоящее время оно поддерживает только Linux.

Информация о существующей единице: http://wiki.freepascal.org/Bluetooth

Я планирую улучшить это для поддержки Mac OS, но было бы неплохо узнать, написал ли кто-нибудь код для использования BlueTooth на Mac OS, чтобы избежать дублирования работы.

С другой стороны, если вы использовали XCode для доступа к Bluetooth, какие библиотеки вы использовали? Я уверен, что смогу обнаружить это с помощью профилировщика XCode, открыв некоторые приложения Bluetooth.

Примечание: Mac OS X, похоже, не использует библиотеку BlueZ, которая есть в Linux, поэтому я не думаю, что решение так же просто, как изменить путь к библиотеке. Вместо этого у него есть IOBluetooth «Framework», расположенный по адресу /System/Library/Frameworks/IOBluetooth.framework.

Посмотрев, это выглядит так:

    kaikei.ocn.ntt.com:IOBluetooth.framework $ file *
    CodeResources: XML  document text
    Headers:       directory
    IOBluetooth:   Mach-O universal binary with 3 architectures
    IOBluetooth (for architecture x86_64):  Mach-O 64-bit dynamically linked shared library x86_64
    IOBluetooth (for architecture i386):    Mach-O dynamically linked shared library i386
    IOBluetooth (for architecture ppc7400): Mach-O dynamically linked shared library ppc
    Resources:     directory
    Versions:      directory

С другой стороны, я думаю, что если бы кто-то уже сделал это, я, вероятно, смог бы найти это в Google .... Если есть вероятность, что я ошибаюсь, пожалуйста, ответьте и дайте мне знать.

Разъяснение: я создавал привязки для обычных разделяемых библиотек (например, sqlite3), но не для "фреймворка". Если никто не создавал привязки или иным образом не использовал платформу MacOS Bluetooth из FreePascal, советы по использованию функций платформы из FreePascal в целом будут приветствоваться. (И обычно функции, которые я портирую, основаны на C, а не Obj-C, поэтому я не уверен, как объявить методы Obj-C в FPK, хотя я уверен, что смогу найти некоторые примеры, если продолжу поиск).

1 Ответ

3 голосов
/ 20 ноября 2009

Основной репозиторий SVN для переведенной платформы Mac OS X C заголовки http://svn.freepascal.org/svn/macosxintf/trunk

Время от времени релизы FPC синхронизируются с последними версиями, размещенными там. Обратите внимание, что файлы в этом хранилище (в подкаталоге MPPInterfaces) имеют общий формат, который может автоматически переводиться в версии FPC, GPC или CodeWarrior Pascal.

Чтобы сгенерировать версии FPC, используйте «make fpcpinterfaces» и найдите результаты в папке Build / FPCPinterfaces.

Чтобы перевести новые заголовки, выполните что-то вроде этого изнутри извлеченной копии репозитория macosxintf: ./Scripts/Convert.pl /System/Library/Frameworks/IOBluetooth.framework/Headers/IOBluetooth.h FORCE MPPInterfaces

После этого вам все равно придется отредактировать полученный файл, чтобы добавить / удалить единицы и очистить некоторые другие вещи, которые не обрабатываются процессом автоматического перевода. После завершения вы можете отправить отчет об ошибке на bugs.freepascal.org с готовыми единицами.

(примечание: поскольку я не зарегистрирован, я могу добавить только один URL на пост, поэтому следующие URL немного искажены, чтобы обойти это ограничение)

Вы также можете подписаться на список Mac Pascal (lists.sonic.net/mailman/listinfo/mac-pascal) и спросить там, кто-то уже перевел эти заголовки.

Инфраструктура Bluetooth действительно также содержит некоторые заголовки Objective-C. Поддержка Objective-Pascal доступна только в последних версиях FPC svn, как описано в вики FPC (google FPC_PasCocoa). Вам нужна эта поддержка для взаимодействия с Objective-C.

Перевод Objective-C, вероятно, проще всего использовать в других местах в svn FPC (svn.freepascal.org/svn/fpc/trunk/packages/cocoaint/utils/)

Возможно, вы захотите обратиться за помощью в вышеупомянутый список Mac Pascal, так как все люди, обслуживающие вышеупомянутые переводы и инструменты перевода, подписаны там.

...