Я отправил ответ на это ранее, но, кажется, никогда не появлялся! : - (
В любом случае, я поддерживаю библиотеку 32feet.NET и являюсь автором поддержки Widcomm. Во-первых, насколько я знаю, лицензия не должна быть проблемой для коммерческого распространения. См. Комментарий Питера Фута на http://32feet.net/forums/t/2289.aspx:
"32feet.NET бесплатен для коммерческого или некоммерческого использования. Если вы используете двоичные файлы, вы можете просто использовать библиотеку как есть, если вы вносите изменения в исходный код, вам нужно включить 32feet.NET License.txt документ и убедитесь, что заголовки файлов не изменены / удалены. "
Я посмотрю, сможет ли Питер оставить здесь комментарий, чтобы придать определенность.
В любом случае, мы не реализовали поддержку функциональности виртуального COM-порта Widcomm (это, безусловно, возможно, хотя никто не просил об этом - кроме вас). Я не большой поклонник виртуальных COM-портов. Кажется, всегда гораздо проще использовать прямое соединение с сокетами, чем пытаться настроить COM-порт и попытаться найти, какое имя было создано как [1], а затем открыть SerialPort, чтобы использовать его, а затем если соединение потеряно, никто не знает, и нужно просто повторять попытку ... Намного проще сделать следующее:
Dim addr As BluetoothAddress _
= BluetoothAddress.Parse("001122334455")
'
Dim ep As New BluetoothEndPoint(addr, BluetoothService.SerialPort)
Dim cli As New BluetoothClient
cli.Connect(ep)
Dim peerStream As Stream = cli.GetStream()
peerStream.Write/Read ...
Подробнее на http://www.alanjmcf.me.uk/comms/bluetooth/32feet.NET%20--%20User%20Guide.html
Чтобы ответить на ваши конкретные вопросы Widcomm. Может быть создано несколько экземпляров службы Bluetooth, то есть несколько служб SPP (каждая использует идентификатор класса обслуживания SPP), каждый из которых может предоставить атрибут имени службы, чтобы клиенты могли выбирать между ними. В большинстве случаев в этом нет необходимости, поэтому просто передайте строку с нулевой или нулевой длиной - документы Widcomm SDK не говорят, что разрешено. Что касается дескрипторов Window, Widcomm использует виртуальные методы C ++ (yuk - это делает direct P / Invoking в основном невозможным) для реализации событий / обратных вызовов, предположительно, код мистера Фигейры преобразует эти обратные вызовы в сообщения Window.
[1] Создать виртуальные COM-порты Bluetooth непросто. На MSFT + Win32 никто не говорит, какое имя было выбрано для COM-порта! На MSFT + WM официальный API не работает на многих типах устройств. И наш неофициальный способ сделать это требует перезагрузки IIRC. : - (