使用SerialPort将整数发送到COM1

时间:2010-05-12 10:45:27

标签: vb.net serial-port

我很难将一个整数发送到一个串口...我正在尝试这样的东西,它运行正常,但我没有在端口处拾取任何东西。

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 个答案:

答案 0 :(得分:3)

sPort.Write的最后一个参数不应该是你要发送的字节数吗?

e.g。

  sPort.Write(New Byte() {Hex(1), 255}, 0, 2)

答案 1 :(得分:2)

抓住PortMon By Mark Russinovich (formerly of SysInternals)

这将帮助您确认端口正在打开,配置正确并写入。 您应该会看到您的流程进行IRP_MJ_WRITE操作,结果为SUCCESS

如果这一切都有效,那么问题可能是你连接到COM1的任何东西都需要不同的波特率。

答案 2 :(得分:1)

试试这个

    '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()

答案 3 :(得分:1)

sPort.Write(New Byte() {Hex(1), 255}, 0, 0)

最后一个参数应该是255,这是你要发送的数据长度。