Как отправить текстовые и шестнадцатеричные коды на последовательный дисплей 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