Как отправить текстовые и шестнадцатеричные коды на последовательный дисплей VFD [VB.NET]

Я хочу запрограммировать дисплей vfd для использования с vb.net. В настоящее время я могу только отправлять текст на дисплей vfd, однако он все еще не в правильном формате. Я не мог понять это, поэтому я включу руководство по программированию.

Вещи, которые я хочу сделать:

  • Поскольку есть две строки, я хочу показать разные данные в этих двух строках.
  • Я должен быть в состоянии очистить дисплей.
  • Если текст длиннее дисплея (20 строк), он должен начать прокрутку. На сегодня все, надеюсь, кто-нибудь сможет мне помочь.

Вот код, который я использовал:

 Dim sp As New SerialPort()

    sp.PortName = "COM1"
    sp.BaudRate = 9600
    sp.Parity = Parity.None
    sp.DataBits = 8
    sp.StopBits = StopBits.One
    sp.Open()
    sp.WriteLine(TextBox1.Text)
    sp.WriteLine(TextBox2.Text)
    sp.Close()
    sp.Dispose()
    sp = Nothing

2 ответа

Решение

Для отправки двоичных данных лучше использовать перегрузку SerialPort.Write метод, который принимает массив байтов. Если вы отправляете символы или строку, вам придется иметь дело с кодировкой символов, которая в лучшем случае раздражает, а в худшем - дает сбой. Иногда, когда вы кодируете числовое значение для символа, а затем декодируете его обратно в числовое значение, декодированное значение не будет соответствовать исходному значению. Следовательно, самый безопасный и простой способ - отправить байтовые значения в виде байтового массива. Например:

Dim bytes() As Byte = { &H00, &H20, &HFF }
sp.Write(bytes, 0, bytes.Length)

Или, если вы хотите загрузить каждый байт шестнадцатеричным значением по отдельности:

Dim bytes(3) As Byte 
byte(0) = &H00
byte(1) = &H20
byte(2) = &HFF
sp.Write(bytes, 0, bytes.Length)

Или, если вы просто хотите отправить один байт по шестнадцатеричному значению:

sp.Write(New Byte() { &H20 }, 0, 1)

попробуйте это: это сработало для меня.

      Dim sp As New SerialPort()
sp.PortName = "COM6"
sp.BaudRate = 9600
sp.Parity = Parity.None
sp.DataBits = 8
sp.StopBits = StopBits.One
sp.Open()

sp.Write(Convert.ToString(Chr(12)))
'first line goes here
sp.WriteLine("Total: " + cur1.Text + " " + lblGrandtotal.Text)
'2nd line goes here
sp.WriteLine((Convert.ToString(Chr(13))) + "Thank You!")
sp.Close()
sp.Dispose()
sp = Nothing
Другие вопросы по тегам