PDA

View Full Version : پیدا کردن پورت modem



titbasoft
سه شنبه 25 اسفند 1383, 12:58 عصر
من از ms comm برای کارکردن با مودم استفاده می کنم اما برای شروع کار باید پورت مودم رو به صورت immediate مشخص کنم . چطوری پورت مودم رو میشه پیدا کرد. :گیج:

Behrouz_Rad
سه شنبه 25 اسفند 1383, 17:50 عصر
روال زیر رو نوشتم و بر روی سیستم خودم چک کردم. به خوبی جواب میده.


Private Sub DetectModem()
Dim intLoopCount As Integer, intModemFound As Integer, strInput As String

intModemFound = 0
For intLoopCount = 1 To 4
MSComm.CommPort = intLoopCount
MSComm.Settings = "9600,N,8,1"

On Error Resume Next
MSComm.PortOpen = True
If Err.Number = 0 Then
MSComm.Output = "AT" & vbCr
strInput = MSComm.Input
If InStr(strInput, "OK") > 0 Then
intModemFound = MSComm.CommPort
MSComm.PortOpen = False
Exit For
End If
MSComm.PortOpen = False
Else
MSComm.PortOpen = False
End If
Next intLoopCount
If intModemFound > 0 Then
MsgBox("Modem Found On COM " & intModemFound , vbInformation)
Else
MsgBox("Modem Not Found")
End If
End Sub

احتمالا کد فوق در ویندوز XP تنها برای دفعه اول کار می کنه.
اگر اینجور بود، یک تاخیر زمانی بین ارسال فرمان AT و چک برای ورودی ایجاد کنید.
موفق باشید.

titbasoft
سه شنبه 25 اسفند 1383, 18:10 عصر
مرسی
:flower: :wink:

sourenaface
سه شنبه 07 تیر 1384, 23:59 عصر
سلام
این کد روی دستگاه من به خوبی کار کرد با ویندوز اکس پی اما روی دستگاه پسرعمم با همون ویندوز اکس پی کار نکرد
جالب اینجاست که پورت مودم هرد.وتا دستگاه 3 هست
لطفا راهنمائی کنید :گیج:

MM_Mofidi
چهارشنبه 08 تیر 1384, 12:38 عصر
مربوط به سرعت cpu میشه و اختلافش با مودم بین دو دستور ارسال فرمان at و خوندن بافر مودم یک delay ایجاد کنید مشکل حل میشه
:موفق:

sourenaface
جمعه 10 تیر 1384, 00:17 صبح
سلام من متوجه نمی شم میشه شما این تغییر رو اعمال کنید
من ازsleep استفاده کردم نشد
لطفا کمکم کنید. حیاتیه

MM_Mofidi
جمعه 10 تیر 1384, 12:51 عصر
با اجازه آقا بهروز
استفاده از یک حلقه for هم میشه


Private Sub DetectModem()
Dim intLoopCount As Integer, intModemFound As Integer, strInput As String

intModemFound = 0
For intLoopCount = 1 To 4
MSComm.CommPort = intLoopCount
MSComm.Settings = "9600,N,8,1"

On Error Resume Next
MSComm.PortOpen = True
If Err.Number = 0 Then
MSComm.Output = "AT" & vbCr
'change the number to give answer
For loop_counter = 0 To 999999: DoEvents: Next
strInput = MSComm.Input
If InStr(strInput, "OK") > 0 Then
intModemFound = MSComm.CommPort
MSComm.PortOpen = False
Exit For
End If
MSComm.PortOpen = False
Else
MSComm.PortOpen = False
End If
Next intLoopCount
If intModemFound > 0 Then
MsgBox("Modem Found On COM " & intModemFound , vbInformation)
Else
MsgBox("Modem Not Found")
End If
End Sub

:موفق:

sourenaface
جمعه 10 تیر 1384, 13:44 عصر
ممنونم
خیلی خوشحالم که دوستان خوبی مثل شماها دارم
امیدوارم جبران کنم

MM_Mofidi
جمعه 10 تیر 1384, 13:49 عصر
خواهش میکنم قابلی نداشت :موفق:

sourenaface
یک شنبه 12 تیر 1384, 17:47 عصر
بازم سلام
آقا این کارا رو کردم ولی نشد
اما

وقتی ویندوز طرفرو دوباره ازاول نصب کردم و برنامم رو همنصبکردم بدون این کدبالا درست شد

فکر نمی کنید ایراداز ورژن mscomm.ocxباشه که قبلا رو دستگاه بوده؟؟؟؟؟

بازم تشکر
بای