Отправка целого числа в COM1 с использованием SerialPort - PullRequest
0 голосов
/ 12 мая 2010

У меня проблемы с отправкой целого числа в последовательный порт ... Я пытаюсь сделать что-то вроде этого, все работает нормально, но я ничего не поднимаю в порту.

Private Sub fireToPort()
    Dim sPort As New SerialPort("COM1", 56000, Parity.None, 8, StopBits.One)
    sPort.Open()
    sPort.Write(New Byte() {Hex(1), 255}, 0, 0)
    sPort.Close()
End Sub

Любой совет?

Ответы [ 4 ]

3 голосов
/ 12 мая 2010

Не должен ли последний аргумент sPort.Write быть числом байтов, которое вы хотите отправить?

, например

  sPort.Write(New Byte() {Hex(1), 255}, 0, 2)
2 голосов
/ 12 мая 2010

Получите PortMon Марк Руссинович (ранее SysInternals) .

Это поможет вам подтвердить, что порт открыт, правильно настроен и записан. Вы должны увидеть, как ваш процесс выполняет операцию IRP_MJ_WRITE с результатом SUCCESS.

Если все это работает, то, вероятно, проблема в том, что все, что вы подключили к COM1, ожидает другую скорость передачи данных.

1 голос
/ 19 июня 2013
sPort.Write(New Byte() {Hex(1), 255}, 0, 0)

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

1 голос
/ 13 мая 2010

Попробуйте это

    'I looped my serial port on COM5
    Dim sPort As New IO.Ports.SerialPort("COM5", 57600, IO.Ports.Parity.None, _
                                         8, IO.Ports.StopBits.One)

    sPort.Handshake = IO.Ports.Handshake.None '<<< pick the correct one

    sPort.Open()
    Dim b() As Byte = New Byte() {1, 255, 0, 0}
    sPort.Write(b, 0, b.Length)
    sPort.BaseStream.Flush()

    'because I looped the port I should be able to read it
    Dim b1(3) As Byte
    sPort.Read(b1, 0, 4)
    sPort.Close()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...