Я бы хотел отправить команды hex
моему устройству, потому что он может понять только hex
.Отправьте строку в ее шестнадцатеричный эквивалент
Из-за того, что мне удалось создать функцию, которая может проверить, если пользователи ввода, который является string
имеет действующий соответствующий hex
. Вопрос here.
Итак, подтвердив, что users input
имеет соответствующий эквивалент hex
, я уверен, что то, что отправит моя система, будет прочитано моим устройством. By searching я понял, что он должен быть преобразован в байты, говорится
Используйте класс ASCIIEncoding для convtert строки в массив байтов вы можете передавать.
Код:
Dim str as String = "12345678"
Dim bytes() as Byte = ASCIIEncoding.ASCII.GetBytes(strNumbers)
' Then Send te bytes to the reader
sp.Write(bytes, 0, bytes.Length)
Вам не нужно тайному значения в HEX, в этом случае HEX является mearly другой способ отображения то же самое.
Мой код:
'This is a string with corresponding hex value
Dim msg_cmd as string = "A0038204D7"
'Convert it to byte so my device can read it
Dim process_CMD() As Byte = ASCIIEncoding.ASCII.GetBytes(msg_cmd)
'Send it as bytes
ComPort.Write(process_CMD, 0, process_CMD.Length)
Мой выход:
41 30 30 33 38 32 30 34 44 37
Желаемый результат:
A0 03 82 04 D7
Это единственный способ, чтобы поговорить с устройством через какой-то инструмент командной строки?Разве нет API, где вы можете отправлять фактические байты? – Plutonix
Существует API, я использую [Terminal] (https://sites.google.com/site/terminalbpp/) в качестве получателя, чтобы проверить, действительно ли то, что посылает моя система, является шестым или нет. –
Итак, вы хотите, чтобы он посылал шестнадцатеричные цифры в виде строки? Если да, какую кодировку вы хотите использовать для строки? ASCII? Если вы не хотите отправлять его в виде строки, то вы полностью сбиты с толку, потому что это то, что такое hex. Hex представляет собой строковое представление числового значения. –