2012-01-21 65 views
0

我正在做一個桌面學術項目這個項目的要求之一是通過短信提醒移動用戶,這個短信應該通過與PC連接的移動設備發送。我不知道我該怎麼做。當我做谷歌搜索這裏我得到了GSM調制解調器網關的一種解決方案,通過電腦發送短信。但他們不是免費的。然後,諾基亞Conectivity SDK是另一種方式,但它與Visual Studio2010不兼容。我在網站上得到了這個例子,但發件人最後說我的代碼中有錯誤。如何連接手機與PC

Option Explicit On 

Imports System 
Imports System.Threading 
Imports System.ComponentModel 
Imports System.IO.Ports 

Public Class form1 



Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.load 


End Sub 


Private WithEvents SMSPort As SerialPort 

Private SMSThread As Thread 
Private ReadThread As Thread 
Shared _Continue As Boolean = False 
Shared _ContSMS As Boolean = False 
Private _Wait As Boolean = False 
Shared _ReadPort As Boolean = False 
Public Event Sending(ByVal Done As Boolean) 
Public Event DataReceived(ByVal Message As String) 

Public Sub New(ByRef COMMPORT As String) 
SMSPort = New SerialPort 
With SMSPort 
.PortName = COMMPORT 
.BaudRate = 9600 
.Parity = Parity.None 
.DataBits = 8 
.StopBits = StopBits.One 
.Handshake = Handshake.RequestToSend 
.DtrEnable = True 
.RtsEnable = True 
.NewLine = vbCrLf 
End With 
ReadThread = New Thread(AddressOf ReadPort) 
End Sub 

Public Function SendSMS(ByVal CellNumber As String, ByVal SMSMessage As String) As Boolean 
Dim MyMessage As String = Nothing 
'Check if Message Length <= 160 

If SMSMessage.Length <= 160 Then 
MyMessage = SMSMessage 
Else 
MyMessage = Mid(SMSMessage, 1, 160) 
End If 
If IsOpen = True Then 
SMSPort.WriteLine("AT+CMGS=" & CellNumber & vbCr) 
_ContSMS = False 
SMSPort.WriteLine(MyMessage & vbCrLf & Chr(26)) 
_Continue = False 
RaiseEvent Sending(False) 
End If 
End Function 

Private Sub ReadPort() 
Dim SerialIn As String = Nothing 
Dim RXBuffer(SMSPort.ReadBufferSize) As Byte 
Dim SMSMessage As String = Nothing 
Dim Strpos As Integer = 0 
Dim TmpStr As String = Nothing 

While SMSPort.IsOpen = True 
If (SMSPort.BytesToRead <> 0) And (SMSPort.IsOpen = True) Then 
While SMSPort.BytesToRead <> 0 
SMSPort.Read(RXBuffer, 0, SMSPort.ReadBufferSize) 
SerialIn = SerialIn & System.Text.Encoding.ASCII.GetString(RXBuffer) 
If SerialIn.Contains(">") = True Then 
_ContSMS = True 
End If 
If SerialIn.Contains("+CMGS:") = True Then 
_Continue = True 
RaiseEvent Sending(True) 
_Wait = False 
SerialIn = String.Empty 
ReDim RXBuffer(SMSPort.ReadBufferSize) 
End If 
End While 
RaiseEvent DataReceived(SerialIn) 
SerialIn = String.Empty 
ReDim RXBuffer(SMSPort.ReadBufferSize) 
End If 
End While 
End Sub 

Public ReadOnly Property IsOpen() As Boolean 
Get 
If SMSPort.IsOpen = True Then 
IsOpen = True 
Else 
IsOpen = False 
End If 
End Get 
End Property 

Public Sub Open() 
If IsOpen = False Then 
SMSPort.Open() 
ReadThread.Start() 
End If 
End Sub 

Public Sub Close() 
If IsOpen = True Then 
'SMSPort = New SMSCOMMS("COM1") 
'SMSEngine.Open() 
'SMSEngine.SendSMS("919888888888", "SMS Testing") 
'SMSEngine.Close() 

SMSPort.Close() 
End If 
End Sub 

End Class 

但它是在vb.net我沒有它的命令。它工作嗎?

請給我一些想法,例如我使用c sharp在winform中執行此操作。

回答

0

我不確定你是否想要一種方式連接到手機或從PC發送短信的方式,所以我會給兩者。

要連接到手機(如果它有數據和Android或IOS或可以直接修改代碼的地方),您可以創建一個從PC連接到手機的套接字連接。我之前在android aps中完成了這個工作,效果很好。

如果您只是需要從您的計算機發送一個短信,你知道的載體只是用這個名單http://www.mutube.com/projects/open-email-to-sms/gateway-list/

+0

但沒有我的國家的名字在這份名單 – buddy

+0

OK試試這個http://en.wikipedia.org/wiki/List_of_SMS_gateways,如果沒有哪個國家你從那時起? – ghostbust555