Connection between two GSM Modems using RS232

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • ajorge
    New Member
    • Oct 2008
    • 4

    Connection between two GSM Modems using RS232

    I'm a rookie with C# and VB programming languages, but I need to make a connection of two GSM Modems for Remote Monitoring. I've done some web research and i've found a C# code to make the two modems dialing. I converted that code to VB but something's wrong... When i run the program, there's an error and i can't find it's origins. Could someone help me?

    Code in VB:

    Imports System
    Imports System.Windows
    Imports System.Threadin g 'Para elaboração da função OnComm
    Imports System.Diagnost ics 'Para utilização da função para contar o nº de 'elementos de um array


    Public Class Form1

    Private Sub Form1_Load(ByVa l sender As System.Object, ByVal e As System.EventArg s) Handles MyBase.Load

    End Sub

    Private Sub InitComPort()

    Me.AxMSComm1.Co mmPort = 1 'Porta de comunicações a alterar

    If Me.AxMSComm1.Po rtOpen = True Then 'Caso a porta de 'comunicações esteja aberta, procede-se ao seu fecho

    Me.AxMSComm1.Po rtOpen = False

    End If

    Me.AxMSComm1.RT hreshold = 1 'Abre-se a porta de comunicações 'sempre que se recebem dados

    Me.AxMSComm1.Se ttings = "9600, n, 8, 1"

    'Me.AxMSComm1.D TREnable = true 'Usa-se quando se pretende manter o modem em espera

    Me.AxMSComm1.RT SEnable = True '????

    Me.AxMSComm1.Ha ndshaking = MSCommLib.Hands hakeConstants.c omNone 'Não é utilizado o handshaking - 'garantia de não perder dados

    Me.AxMSComm1.In putMode = MSCommLib.Input ModeConstants.c omInputModeText 'Usa-se a linha de 'comunicações para entradas de arrays de bytes

    Me.AxMSComm1.In putLen = 0 'Procede-se à leitura de todos os dados 'que se encontram em espera quando ocorre entrada de dados através da porta 'de comunicações

    Me.AxMSComm1.Nu llDiscard = False 'Garante que os bytes nulos não 'são desprezados

    '************** *************** *************** ***************
    '* 'com.OnComm += new System.EventHan dler(this.OnCom m)
    '* 'QUAL O OBJECTIVO DESTA LINHA DE COMANDOS???
    '************** *************** *************** ***************
    Me.AxMSComm1.Po rtOpen = True

    End Sub

    '************** *************** *************** *************** *************** *******
    '* !!!!!!FUNÇÃO OnComm!!!!!!
    '************** *************** *************** *************** *************** *******

    Private Sub OnComm(ByVal sender As System.Object, ByVal e As System.EventArg s)

    Thread.Sleep(20 0)

    If Me.AxMSComm1.In BufferCount > 0 Then

    Try

    'Caso se pretenda receber os dados em modo binário, devem-se 'tirar de comentário as duas linhas abaixo e colocar em comentário as linhas 'para processamento em modo de texto

    'Dim b1 As Byte = Convert.ToByte( Me.AxMSComm1.In put)
    'ProcessRespons eBinary(b1)

    Dim response As String = Convert.ToStrin g(Me.AxMSComm1. Input) 'Processa-se os dados em modo de 'texto
    ProcessResponse Text(response)

    Catch ex As Exception

    MessageBox.Show (ex.Message, "Falha no processamento dos 'dados recebidos!", MessageBoxButto ns.OK, MessageBoxIcon. Information)

    End Try

    End If

    End Sub

    Private Sub ProcessResponse Binary(ByVal response() As Byte) 'Função 'para apresentação dos dados recebidos na caixa de texto

    Dim i As Integer

    For i = 0 To (response.Lengt h - 1) 'Percorre-se o array de bytes 'elemento a elemento

    RichTextBox1.Ap pendText(Conver t.ToString(resp onse(i)) + " ")

    Next

    RichTextBox1.Ap pendText("\n")

    End Sub

    Private Sub ProcessResponse Text(ByVal input As String) 'Processamento 'de dados recebidos em modo de texto

    If input.Trim() = "RING" Then

    RichTextBox1.Cl ear()
    RichTextBox1.Te xt = "Ring..."

    ElseIf input.Trim() = "CONNECT 9600" Then

    MessageBox.Show (input.Trim(), "Ligação conseguida!", MessageBoxButto ns.OK, MessageBoxIcon. Information)

    Else

    MessageBox.Show (input.Trim(), "Falha na ligação!", MessageBoxButto ns.OK, MessageBoxIcon. Information)
    RichTextBox1.Te xt = input.Trim()

    End If

    RichTextBox1.Ap pendText(input + "\n")

    End Sub

    Private Sub Button1_Click(B yVal sender As System.Object, ByVal e As System.EventArg s) Handles Button1.Click

    If TextBox1.Text.T rim() = "" Then 'Caso não se tenha introduzido o nº 'GSM

    MessageBox.Show ("Especifiqu e o nº GSM!", "", MessageBoxButto ns.OK, MessageBoxIcon. Information)

    TextBox1.Focus( )

    Return

    End If

    If Not Me.AxMSComm1.Po rtOpen Then 'Caso a porta de 'comunicações não esteja aberta

    Me.AxMSComm1.Po rtOpen = True 'Abre-se

    End If

    Dim gsm_command As String = "ATD" 'ATD - Attention Dial
    Dim phone_number As String = TextBox1.Text.T rim()
    Dim command1 As String = gsm_command + phone_number + "\n"
    Dim command_to_dial () As Byte = System.Text.ASC IIEncoding.Defa ult.GetBytes(co mmand1)

    Me.AxMSComm1.Ou tput = command_to_dial

    RichTextBox1.Cl ear()
    RichTextBox1.Te xt = "Dialing... "

    End Sub



    Private Sub Button3_Click(B yVal sender As System.Object, ByVal e As System.EventArg s) Handles Button3.Click

    If Me.AxMSComm1.Po rtOpen Then 'Caso a porta de comunicações 'esteja aberta

    Me.AxMSComm1.Po rtOpen = False 'Fecha-se

    MessageBox.Show ("Disconnected. ..", "", MessageBoxButto ns.OK, MessageBoxIcon. Information)

    RichTextBox1.Cl ear()

    End If

    End Sub



    Private Sub Button2_Click(B yVal sender As System.Object, ByVal e As System.EventArg s) Handles Button2.Click

    Dim msg As String = ""

    If TextBox2.Text.T rim() = "" Then 'Caso não se esteja a enviar 'qualquer mensagem

    MessageBox.Show ("Please specify command!", "", MessageBoxButto ns.OK, MessageBoxIcon. Information)
    TextBox2.Focus( )

    Return

    End If

    If Not Me.AxMSComm1.Po rtOpen Then 'Caso a porta de comunicações 'esteja fechada

    Me.AxMSComm1.Po rtOpen = True 'Abre-se

    End If

    msg = TextBox2.Text.T rim() + "\n"

    Me.AxMSComm1.Ou tput = System.Text.ASC IIEncoding.Defa ult.GetBytes(ms g)

    RichTextBox1.Cl ear()
    RichTextBox1.Te xt = "Message Sent..."

    End Sub

    End Class



    Best Regards.
Working...