SerialPort: Запись-чтение. Проблема.

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

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

RCLIO
Новичок
Новичок
 
Сообщения: 30
Зарегистрирован: 20.03.2009 (Пт) 18:23

SerialPort: Запись-чтение. Проблема.

Сообщение RCLIO » 07.09.2011 (Ср) 10:56

Доброго времени суток.
Имеется прибор, который регистрирует различные значения (напряжение, температуру и т.д.)
Прибор подключается к ПК через rs232.
Чтобы получить регистрируемые значения, шлём на прибор определённую команду.

Проблема заключается в том, что получить ответ от прибора никак не получается.

Код: Выделить всё
Dim sp1 As New IO.Ports.SerialPort

        sp1.PortName = "COM6"
        sp1.BaudRate = 38400
        sp1.StopBits = 1
        sp1.Parity = IO.Ports.Parity.None
        sp1.ReadBufferSize = 256
        sp1.WriteBufferSize = 256
        sp1.Open()

        Dim b() As Byte
        Dim s As String
        b = My.Resources.Untitled1
        Dim Encoding As New System.Text.ASCIIEncoding
        'Dim Encoding As New System.Text.UTF8Encoding
     
        s = Encoding.GetString(b)

        's= Chr(63) & Chr(48) & Chr(51) & Chr(32) & _
        'Chr(8) & Chr(0) & Chr(0) & Chr(104) & _
        'Chr(0) & Chr(201) & Chr(122) & Chr(13)

        sp1.WriteLine(s)
        MsgBox(sp1.ReadLine)

        sp1.Close()


[Хакер] :: Не нужно использовать тег icode для многострочного кода!

(В ресурсах проекта у меня лежит 12-байтовый файл, содержащий команду прибора)

Через программу COM Port Toolkit (см. вложение) послал команду на прибор. Как видно, прибор отвечает. Что я делаю не так?

Спасибо.

P.S.: Прибор - регистратор Ф1771, среда разработки VS2008 Express.
Время ожидания на чтение/запись менять пробовал, -1 ставил.
Вложения
monitor.jpg
monitor.jpg (108.93 Кб) Просмотров: 1408

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: SerialPort: Запись-чтение. Проблема.

Сообщение FireFenix » 07.09.2011 (Ср) 11:46

RCLIO писал(а):Проблема заключается в том, что получить ответ от прибора никак не получается.

MsgBox(sp1.ReadLine)
Эта строка выполняется? что происходит при её выполнении?

Вполне возможно, что чтение осуществляется, до того как пришло сообщение от устройства. Попробуй такой код с событиями
Код: Выделить всё
    Public Shared Sub Main()
        Dim mySerialPort As New SerialPort("COM6")

        mySerialPort.BaudRate = 38400
        mySerialPort.Parity = Parity.None
        mySerialPort.StopBits = StopBits.One

        AddHandler mySerialPort.DataReceived, AddressOf DataReceivedHandler

        mySerialPort.Open()

        Dim s as String = Chr(63) & Chr(48) & Chr(51) & Chr(32) & _
                                  Chr(8) & Chr(0) & Chr(0) & Chr(104) & _
                                  Chr(0) & Chr(201) & Chr(122) & Chr(13)

        mySerialPort.WriteLine(s)

        Console.WriteLine("Press any key to continue...")
        Console.WriteLine()
        Console.ReadKey()
        mySerialPort.Close()
    End Sub

    Private Shared Sub DataReceivedHandler(sender As Object, e As SerialDataReceivedEventArgs)
        Dim sp As SerialPort = CType(sender, SerialPort)
        Dim indata As String = sp.ReadExisting()
        Console.WriteLine("Data Received:")
        Console.Write(indata)
    End Sub
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

RCLIO
Новичок
Новичок
 
Сообщения: 30
Зарегистрирован: 20.03.2009 (Пт) 18:23

Re: SerialPort: Запись-чтение. Проблема.

Сообщение RCLIO » 07.09.2011 (Ср) 12:26

Код: Выделить всё
MsgBox(sp1.ReadLine)

Эта строка выполняется? что происходит при её выполнении?


Ставил задержку от 10 до 10000 - выдаёт "время ожидания истекло".
При -1 просто виснет (т.е. бесконечно ожидает).


----------------------------------
Пример проверил.
Не принимаются данные:(


----------------------------------
Правка от 15:10:
Получилось.
Просто добавил
Код: Выделить всё
mySerialPort.Encoding = System.Text.Encoding.Default


Всем спасибо.


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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 26

    TopList