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.