PDA

View Full Version : سوال: پیدا کردن پورت مودم



bah_jaf
دوشنبه 06 اردیبهشت 1389, 18:41 عصر
سلام دوستان
من یک برنامه دارم که از طریف serialport یک شماره تلفن را میگیره منتها توی هر کامپیوتر پورت مودم فرق میکنه. من میخوام اول برنامم پورت مودم را پیدا کنه و به جای تکس باکس 2 (در کد زیر) مقدارشو بذارم اینم نمونه برنامم:


Dim sp As IO.Ports.SerialPort
sp = New IO.Ports.SerialPort(TextBox2.Text)
sp.Open()
sp.Write("AT" & vbNewLine)
sp.Write("ATD " & TextBox1.Text & vbNewLine)

bah_jaf
سه شنبه 07 اردیبهشت 1389, 09:08 صبح
لطفا کمک کنید

Shahram_Shobeiri
سه شنبه 07 اردیبهشت 1389, 11:07 صبح
از طریق کد زیر می تونی لیست پورت های valid رو بدست بیاری


Dim ports As String() = SerialPort.GetPortNames()

بعد برای تک تک این پورت ها با متد زیر چک کن ببین کدوم true برمی گردونند. اون که true برگردوند پورت مودم شماست.


Public Function AT_Support() As Boolean
Clear_Buffer()
GSM_Port.WriteLine("AT" + Chr(13))
GSM_Port.ReadLine()
If GSM_Port.ReadLine = "OK" + Chr(13) Then Return True Else Return False
End Function

bah_jaf
سه شنبه 07 اردیبهشت 1389, 11:55 صبح
دوست عزیز ممنون فقط برای حذف خطاها من timeout تعریف کردم که دیگه ارور نده برنامه رو هم برای بقیه اینجا میذارم :


Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
sp = New IO.Ports.SerialPort(TextBox2.Text)
sp.Open()
sp.Write("AT" & vbNewLine)
sp.Write("ATD " & TextBox1.Text & vbNewLine)
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
sp.Close()

End Sub
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim ports As String() = SerialPort.GetPortNames()
For i As Int16 = 0 To ports.Count - 1
If AT_Support(ports(i)) Then TextBox2.Text = ports(i)
Next
End Sub
Public Function AT_Support(ByVal _Inputport As String) As Boolean
sp = New SerialPort(_Inputport)
sp.Open()
sp.WriteTimeout = 100
sp.ReadTimeout = 100
'sp.Close()
Try
sp.WriteLine("AT" + Chr(13))
sp.ReadLine()
If sp.ReadLine = "OK" + Chr(13) Then
sp.Close()
Return True
Else
sp.Close()
Return False
End If
Catch
Return False
End Try
End Function