Я не парень по Windows, но я не думаю, что ваш вопрос действительно связан с Windows.
Как сказал @Hessam, вы не можете попросить модем сообщить вам порт, к которому он подключенк тому, что вы не можете обсудить с модемом, потому что вы не знаете порт ...
Я бы попробовал протестировать все возможные порты, чтобы определить правильный, и только потом отправлять ваши SMS.Для этого вы можете выполнить цикл от COM1
до COMXXX
(я не знаю ограничения, но достаточно большой) ... и попытаться отправить команду AT
, для которой вы знаете ответ.Если вы получили ожидаемый ответ, вы получили правильный порт;если нет, попробуйте следующий.Если я хорошо помню, команда AT
AT
просто отвечает OK
.Это был бы самый простой вариант.В противном случае вы можете выбрать ATI
, который предоставляет полную информацию о модеме, или один из AT+GMI
, AT+GMM
или AT+GMR
и т. Д., Которые предоставляют частичную информацию.
Таким образом, у вас будет две функции:
detectModemPort()
, которые будут отвечать с номером порта (или именем порта), если он найден, или с ошибкой SendSMSTo(string port, string cnum)
, который сначала откроет последовательное соединение через порт port
(который существует, потому что мы его только что обнаружили), а затем отправит SMS на cnum
.
Вы также можете посмотретьна этот вопрос / ответ на SuperUser.Похоже, что есть команда devcon.exe
для обнаружения устройств, подключенных к компьютеру, но у меня нет Windows bon, чтобы попробовать это.