Существует ли Snow Leopard совместимый “внезапный датчик движения” доступный API?

Я использовал Unimotion в своем приложении для чтения значений датчика движения для ноутбуков Apple, но не мог портировать код на 10,6 64-разрядных. (Я также попробовал SMSLib и не имел никакой удачи также.)

  • Есть ли какие-либо простые 10,6 совместимых SMS API?

Если нет никакой альтернативы, я также рассматриваю исправление одной из библиотек. И Unimotion и SMSLib используют следующий вызов, который был удержан от использования в 10,5 и удален из 10,6 64-разрядных:

result = IOConnectMethodStructureIStructureO(
    dataPort, kernFunc, structureInputSize,
    &structureOutputSize, &inputStructure, 
    outputStructure);
  • Там какой-либо простой путь состоит в том, чтобы заменить это новыми вызовами IOKit?

(Это сообщение действительно не получило меня гораздо дальше),

8
задан Gavin Brock 1 February 2010 в 02:55
поделиться

2 ответа

Ладно, вместо того, чтобы ждать ответа, я запустил Visual Studio 2010 beta 2, и эта тестовая программа работает хорошо:

class Foo
{
    public string foo = "Foo!";
}
class Bar
{
    public int bar = 42;
}

class Program
{
    static void Main(string[] args)
    {
        var test = new List<dynamic>();
        test.Add(new Foo());
        test.Add(new Bar());

        Console.WriteLine(test[0].foo.Substring(0,3));
        Console.WriteLine(test[1].bar.ToString("000"));

        Console.ReadKey(true);
    }
}

Я хотел убедиться, что не только я проверял свойства с разными именами, но они также были разных типов и что я использовал функции в каждом типе, которые несовместимы друг с другом. Это , кажется, предполагает, что если что-либо кэшировано, среда выполнения достаточно умна, чтобы знать, когда использовать кэш, а когда нет. Я все еще хотел бы услышать, знает ли кто-нибудь краевое дело, где это может не держаться, или более авторитетный комментарий о том, почему это произойдет.

-121--3186068-

У вас есть различные причины для все еще большого размера git репо после git gc , так как он не удаляет все свободные объекты .

Я подробно описываю эти причины в « уменьшите размер репозитория git »

Но одним из трюков для проверки в вашем случае было бы клонировать ваше «очищенное» репо Git и посмотреть, имеет ли клон соответствующий размер.

(«» очищенное «репо» быть то, где вы применили фильтр-ветвь , а затем gc и обрезку )

-121--844311-

Если нет альтернативы, я также рассматриваю возможность исправления одной из библиотек. Как Unimotion, так и SMSLib используют следующий вызов, который устарел в 10.5 и удален из 10.6 64-разрядных :

 result = IMKonnectMethodStrucureIStrucureO (
dataPort, kernFunc, структура InputSize,
& структура OutputSize, & inputStructure,
outputStructure);

Есть ли какой-то простой способ заменить это новыми вызовами IOKit?

Этот самый документ предлагает замены. Как насчет этого?

kern_return_t
IOConnectCallStructMethod(
    mach_port_t  connection,        // In
    uint32_t     selector,      // In
    const void  *inputStruct,       // In
    size_t       inputStructCnt,    // In
    void        *outputStruct,      // Out
    size_t      *outputStructCnt)   // In/Out

Насколько я могу судить, не должно быть никакой разницы, кроме порядка аргументов. Тем не менее, я никогда не использовал набор ввода-вывода, поэтому я мог упустить некоторые критические концептуальные различия, которые заставят этот звонок не работать, как старый.

6
ответ дан 5 December 2019 в 21:19
поделиться

Я не использовал это в 10,6, но эта работа?

http://code.google.com/p/google-mac-qtz-patches/

1
ответ дан 5 December 2019 в 21:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: