Сетевой драйвер через Ethernet IOKit Cocoa

Я написал POS с объективом, который должен взаимодействовать со многими устройствами Ethernet, такими как сканер штрих-кода, топливный насос, денежный ящик и т. д. Я знаю, что мне, вероятно, придется писать драйверы на С++ для каждого устройства. Проблема в том, что я понятия не имею, как писать драйверы для сетевых устройств. Есть ли кто-нибудь, кто может мне помочь?

Кстати, я не видел ни одного примера кода для драйверов Ethernet на сайте разработчиков Apple.

Заранее спасибо!


person Philippe Champigny    schedule 30.07.2012    source источник
comment
Я запутался, вы пытаетесь взаимодействовать с адаптером Ethernet, подключенным к Mac (например, через USB), или с устройством в сети Ethernet (т.е. подключенным к Mac через Ethernet)?   -  person Krumelur    schedule 31.07.2012
comment
О, Боже. Похоже, вы откусили намного больше, чем готовы прожевать.   -  person Jonathan Grynspan    schedule 31.07.2012
comment
Считыватель штрих-кода подключен через rs232 к сети Ethernet, но остальные подключены только к сети Ethernet, все они подключены к порту Ethernet. Сейчас я тестирую каждое устройство отдельно, но позже я буду использовать переключатель.   -  person Philippe Champigny    schedule 31.07.2012


Ответы (1)


Если платформа, с которой вы работаете, работает под управлением iOS или MacOS, то она уже имеет драйвер Ethernet и TCP/IP. стек. Что вам, вероятно, нужно написать, так это модули/классы, которые взаимодействуют с различными устройствами с помощью API сокета. . Эти модули/классы написаны на уровне приложений и не являются драйверами устройств ОС.

Чтобы использовать сокеты в iOS/MacOS, вы можете использовать либо CFNetwork или напрямую с сокеты BSD. Существует много литературы и примеров по программированию сокетов. О CFNetwork не так много литературы, но CFNetwork имеет то преимущество, что его легче интегрировать с циклами выполнения вашего приложения.

Ознакомьтесь с этим ответом, в котором перечислены ресурсы для изучения сетевого программирования сокетов.


Третьим вариантом может быть использование Boost.Asio библиотека, которая представляет собой «кроссплатформенную библиотеку C++ для сетевого и низкоуровневого программирования ввода-вывода, которая предоставляет разработчикам согласованную асинхронную модель с использованием современного подхода C++». В этой странице документации показано несколько примеров того, как использовать асио. Вы можете использовать Objective-C++ (с файлами *.mm), чтобы смешать Objective-C с C++.

person Emile Cormier    schedule 30.07.2012
comment
Спасибо! Я посмотрю на это! - person Philippe Champigny; 31.07.2012
comment
Большое спасибо! Я много узнал о сокетах и ​​внимательно изучил все устройства, и, похоже, все они подключены к Ethernet последовательно. Поэтому я только что купил USB/последовательный адаптер для связи с устройствами, и он работает! Теперь у меня другая проблема со сканером штрих-кода. Жизнь начинающего разработчика, я думаю! Спасибо еще раз! - person Philippe Champigny; 05.08.2012