ievlev Posted November 6, 2008 Share Posted November 6, 2008 Устройство посылает данные через COM-порт, которые необходимо принять на нескольких компьютерах. Предполагаю использовать передачу в режиме UDP/Multicast. Вопросы: 1. Какие адреса надо указывать в настройке Destination Start/End? Физические IP-адреса компьютеров, которые будут получать данные ? Или multicast адрес, на который будет идти рассылка данных ? Если второе - что в этом случае подразумевается под диапазоном адресов ? 2. Где найти пример программирования приема этих данных под Windows ? На CD, приложенном к устройству, находится примеры использования библиотеки Ipserial, которая, если я понял правильно, не поддерживает этот режим. Link to comment
ievlev Posted November 6, 2008 Author Share Posted November 6, 2008 Пытаюсь разобраться сам. 1. Ставлю в полях Destination IP Address Begin/End физические IP компьютеров, которые должны получать данные: например, 192.168.128.50/192.168.128.60. При этом адрес самого NPort - 192.168.128.254. Смотрю, что ходит в сети. Ходят запросы ARP на каждый адрес из диапазона 50..60, затем, получив MAC-адрес компьютера, идет UDP на соответствующий IP. Все понятно. 2. Ставлю в полях Destination адрес 192.168.128.255. Как и следовало ожидать, идет Broadcast на 192.168.128.254 3. Ставлю в полях Destination адрес 234.5.6.7 Ходит только ARP запрос на 234.5.6.7. Ответа нет, что не мудрено, так как компьютера с таким IP нет. Вопрос остается: как же мне задать передачу данных на multicast адрес ? Link to comment
ievlev Posted November 6, 2008 Author Share Posted November 6, 2008 Опытным путем выяснил, что прилагаемая библиотека ipserial работает только когда NPort стоит в режиме TCP Server. Где найти примеры программирования когда NPort стоит в режиме TCP Client ? Link to comment
ievlev Posted November 6, 2008 Author Share Posted November 6, 2008 Пока только вопросы. Выяснив, что в режиме TCP Server блок NPort и библиотека IPserial нормально функционируют, решил продолжить исследования. В компьютере есть две сетевых платы. Делаю независимые подключения к двум блокам NPort. Lan1 (192.168.127.51) ---- HUB1 ---- NPort1 (192.168.127.254) Lan2 (192.168.128.51) ---- HUB2 ---- NPort2 (192.168.128.254) Настраиваю у обоих блоков один COM-порт в режим TCP Server. Модифицирую программу, чтобы она открывала два устройства. Открывается только один из блоков (подключенный к первой сетевой карте). На другой идет ошибка NSIO_CONNECT_FAIL, хотя блок вполне доступен, так как только что настраивал его через протокол http. Похоже, что библиотека IPSerial может работать c одним интерфейсом. Это так ? К сожалению, в BIOS нельзя отключить одну из сетевых карт, поэтому не смог сделать вторую сетевую карту первой и единственной. Кто нибудь сталкивался с таким ? Link to comment
Komantsev Posted November 6, 2008 Share Posted November 6, 2008 Пока только вопросы. Выяснив, что в режиме TCP Server блок NPort и библиотека IPserial нормально функционируют, решил продолжить исследования. В компьютере есть две сетевых платы. Делаю независимые подключения к двум блокам NPort. Lan1 (192.168.127.51) ---- HUB1 ---- NPort1 (192.168.127.254) Lan2 (192.168.128.51) ---- HUB2 ---- NPort2 (192.168.128.254) Настраиваю у обоих блоков один COM-порт в режим TCP Server. Модифицирую программу, чтобы она открывала два устройства. Открывается только один из блоков (подключенный к первой сетевой карте). На другой идет ошибка NSIO_CONNECT_FAIL, хотя блок вполне доступен, так как только что настраивал его через протокол http. Похоже, что библиотека IPSerial может работать c одним интерфейсом. Это так ? К сожалению, в BIOS нельзя отключить одну из сетевых карт, поэтому не смог сделать вторую сетевую карту первой и единственной. Кто нибудь сталкивался с таким ? Добрый день, Вобщем-то Вы всё описываете правильно. По протоколу UDP передача unicast и broadcast осуществляется в точности так, как Вы и описали. Multicast, к сожалению, не поддерживается. Что касается IP Serial Library - да, действительно, она работает только в режиме TCP Server. То есть NPort выступает сервером, на который Вы можете подать с компьютера команды типа "открыть порт", "передать данные", "прочитать данные" итп. Вообще говоря, функции IP Serial Library пользователи применяют не часто. Данные в NPort (и из NPort'а) можно передавать напрямую через TCP- или UDP-сокеты. Например, если взять изначально выбранный Вами режим UDP: Настройте NPort так, чтобы он передавал данные на IP-адрес Вашего компьютера. А на компьютере откройте UDP-сокет 4001 и ожидайте приема данных. Всё, что придет в последовательный порт NPort'а, будет принято в этом сокете. То есть Вашей прикладной программе придется на компьютере читать те же самые последовательны данные, только не из COM-порта, а из сокета. Аналогично и для передачи данных. Обратите внимание, что в режиме UDP нельзя управлять служебными сигналами последовательного порта, такими как RTS/CTS, DTR/DSR. Это можно делать только по TCP. Если Вы заметили, то в режимах TCP Server и TCP Client помимо "основного" сокета 4001 есть и "командный" сокет 966, по которому и происходит управление сигналами, и по которому в своем специальном формате IP Serial Library выдает команды. А просто передача данных по TCP идет так же как и по UDP - в прозрачном режиме, через сокет 4001 (по умолчанию). Link to comment
Dsmover Posted December 8, 2008 Share Posted December 8, 2008 >Если Вы заметили, то в режимах TCP Server и TCP Client помимо "основного" сокета 4001 есть и "командный" сокет 966, по которому и происходит >управление сигналами, и по которому в своем специальном формате IP Serial Library выдает команды. Добрый день! В нашей фирме необходимо разработать программу под WinCE, которая будет получать данные с весов, подключенных к NPort 5210. Библиотеку ip serial library под WinCE я не нашел. Можно ли получить документацию о протоколе ip serial library, чтобы работать с Nport через сокеты напрямую? dsmover собака mail.ru Link to comment
Dsmover Posted December 9, 2008 Share Posted December 9, 2008 Интересно именно как настроить скорость порта и прочие параметры через "командный" сокет 966... Спасибо Link to comment
Dsmover Posted December 12, 2008 Share Posted December 12, 2008 Интересно именно как настроить скорость порта и прочие параметры через "командный" сокет 966... Спасибо Эта информация не опубликовывается? Link to comment
Komantsev Posted December 12, 2008 Share Posted December 12, 2008 Эта информация не опубликовывается? Добрый день, Сорри за поздний ответ. Нет, к сожалению эту информацию мы не можем опубликовать публично, поскольку служебный протокол управления не описан в стандартной документации и, более того, не оформлен в виде отдельного документа. Я Вам скину имеющиеся материалы по электронной почте. Link to comment
Dsmover Posted December 12, 2008 Share Posted December 12, 2008 Спасибо.... Будем разбираться... Link to comment
Recommended Posts