2013-03-14 4 views
0

В моем коде, я устанавливаю следующие значения:Проверка внешних устройств через последовательный порт

public SerialPort comPort = new SerialPort(); 
comPort.PortName = portName; 

PortName может быть COM17, например.

Теперь, если я добавлю два устройства через мой графический интерфейс, как на COM17, то в конечном итоге вы получите исключение (Access to COM17 denied). Теперь я хотел бы проверить, какое устройство подключено к этому COM-порту, поэтому, если мое приложение распознает его, оно может отправлять команды через порт или если оно не распознано, оно отключит этот параметр в моем графическом интерфейсе.

Итак, есть ли способ получить уникальную информацию из COM-порта, которую я могу сохранить в своей базе данных при ее установке?

EDIT: Чтобы уточнить, если неправильное устройство подключено к этому COM-порту (кроме случаев, когда я установил), я получаю сообщение об ошибке. Я поймаю эту ошибку, поэтому я знаю, что это неверно. Но я хотел бы узнать, какое устройство может быть. Скажем, у меня есть 2 драйвера DLL, 2 разных устройства, и кто-то переключил их. Затем мое приложение могло проверять правильные имена и, следовательно, заключать, что это только вопрос об изменении COM-портов установленных объектов, а не просто бросать ошибку и говорить, что пользователь должен переустановить.

ответ

1

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

+0

Я тоже думал об этом. Тем не менее, если у меня есть 10+ аппаратных частей, из которых 7 одинаковы, это становится сложнее. Есть ли возможность получить идентификатор оборудования или что-то еще уникальное? – Joetjah

+0

@Joetjah: Только если аппаратное обеспечение поддерживает его. Если аппаратное обеспечение может отправить сообщение с серийным номером или аналогичным, тогда да. Если нет, нет. У меня такая же проблема. Наше оборудование не имеет функции, которая даст мне серийный номер, но, к счастью, никто никогда не подключается более чем к одному. –

+0

Хорошо, это кажется достаточно разумным. Слишком плохо, это сделало бы мою жизнь очень легкой на данный момент. Спасибо за информацию. – Joetjah

Смежные вопросы