من از ms comm برای کارکردن با مودم استفاده می کنم اما برای شروع کار باید پورت مودم رو به صورت immediate مشخص کنم . چطوری پورت مودم رو میشه پیدا کرد.
من از ms comm برای کارکردن با مودم استفاده می کنم اما برای شروع کار باید پورت مودم رو به صورت immediate مشخص کنم . چطوری پورت مودم رو میشه پیدا کرد.
هر که بر مرکب باطل نشیند ، در سراى پیشمانى فرودش مىآورند
روال زیر رو نوشتم و بر روی سیستم خودم چک کردم. به خوبی جواب میده.
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 و چک برای ورودی ایجاد کنید.
موفق باشید.
مرسی
:flower: :wink:
هر که بر مرکب باطل نشیند ، در سراى پیشمانى فرودش مىآورند
سلام
این کد روی دستگاه من به خوبی کار کرد با ویندوز اکس پی اما روی دستگاه پسرعمم با همون ویندوز اکس پی کار نکرد
جالب اینجاست که پورت مودم هرد.وتا دستگاه 3 هست
لطفا راهنمائی کنید
مربوط به سرعت cpu میشه و اختلافش با مودم بین دو دستور ارسال فرمان at و خوندن بافر مودم یک delay ایجاد کنید مشکل حل میشه
:موفق:
سلام من متوجه نمی شم میشه شما این تغییر رو اعمال کنید
من ازsleep استفاده کردم نشد
لطفا کمکم کنید. حیاتیه
با اجازه آقا بهروز
استفاده از یک حلقه 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
:موفق:
ممنونم
خیلی خوشحالم که دوستان خوبی مثل شماها دارم
امیدوارم جبران کنم
بازم سلام
آقا این کارا رو کردم ولی نشد
اما
وقتی ویندوز طرفرو دوباره ازاول نصب کردم و برنامم رو همنصبکردم بدون این کدبالا درست شد
فکر نمی کنید ایراداز ورژن mscomm.ocxباشه که قبلا رو دستگاه بوده؟؟؟؟؟
بازم تشکر
بای