Связь с модемом и чтение с com порта.

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

Proto
Начинающий
Начинающий
 
Сообщения: 13
Зарегистрирован: 18.06.2002 (Вт) 7:54
Откуда: Belarus

Связь с модемом и чтение с com порта.

Сообщение Proto » 12.08.2009 (Ср) 17:36

Добрый день.

Попробовал работать с com-портом используя serialport, и у меня возник ряд вопросов.

Весь код из снипплетов. VB 2008 Express
Код: Выделить всё
Using comPort As SerialPort = My.Computer.Ports.OpenSerialPort("COM8", 14400)
            comPort.DtrEnable = True
            comPort.Write(txtSend.Text & vbCrLf)

            ' All data transfer code goes here.

        End Using


Отправляю из текстбокса ATDT номер, но модем никак не реагирует (модем - телефон SE 800i). Почему так получается?

Когда читаю данные с порта следующим кодом программа полностью подвисает до тех пор пока кома не придут данные (RING). При этом данные в текстбоксе не отображаются, хотя они пришли и прога отвисла. Тоже не понятно почему так.

Код: Выделить всё
Using comPort As SerialPort = My.Computer.Ports.OpenSerialPort("COM8")
            txtGet.Text = txtGet.Text & comPort.ReadLine()
        End Using


Может у кого-нибудь есть рабочий пример программы, которая бы читала и писала в порт, не подвисая при этом в ожидании следующей порции данных?

Извините за ламерство. Спасибо.

773FF
Обычный пользователь
Обычный пользователь
 
Сообщения: 86
Зарегистрирован: 07.02.2008 (Чт) 10:51

Re: Связь с модемом и чтение с com порта.

Сообщение 773FF » 13.08.2009 (Чт) 20:53

Код: Выделить всё
 
                Shared _serialPort As System.IO.Ports.SerialPort

Private Sub frmMain_Load(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles MyBase.Load
                'Запускаем в работу COM-подключение
                ' Create a new SerialPort object with default settings.
                _serialPort = New System.IO.Ports.SerialPort()

                ' Allow the user to set the appropriate properties.
                _serialPort.PortName = My.Settings.NComPort
                _serialPort.BaudRate = 2400
                _serialPort.Parity = IO.Ports.Parity.None
                _serialPort.DataBits = 8
                _serialPort.StopBits = IO.Ports.StopBits.One
                _serialPort.Handshake = IO.Ports.Handshake.None

                ' Set the read/write timeouts
                _serialPort.ReadTimeout = 500
                _serialPort.WriteTimeout = 500
End Sub




    Sub SendSerialData(ByVal data As String)
        ' Send strings to a serial port.
        Try
            _serialPort.Write(data)
        Catch
        End Try

    End Sub

    Function ReceiveSerialData() As String
        ' Receive strings from a serial port.
        Dim returnStr As String = ""

        Try
            If _serialPort.BytesToRead >= 2 Then
                For iRead As Integer = 0 To _serialPort.BytesToRead - 1
                    returnStr = returnStr & Chr(_serialPort.ReadChar)
                Next iRead

            End If

            Return returnStr
        Catch
        End Try

        Return returnStr

    End Function
'Использование (в таймере или как)
Dim Buff As String = ReceiveSerialData()
SendSerialData("AT" + Chr(13))
System.Threading.Thread.Sleep(300) 'Значение (300) подобрать
Buff = ReceiveSerialData()

С мобильником пробовал один раз, отправил SMS - работает.

Proto
Начинающий
Начинающий
 
Сообщения: 13
Зарегистрирован: 18.06.2002 (Вт) 7:54
Откуда: Belarus

Re: Связь с модемом и чтение с com порта.

Сообщение Proto » 21.08.2009 (Пт) 9:04

спасибо. похоже мой код тоже работал, только надо было правильно установить режим обмена.


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex-бот и гости: 10

    TopList