создать двоичную полезную нагрузку в node-red

Новое в node-red и javascript. Мне нужно использовать вход TCP для подключения к релейному контроллеру для проверки состояния. Я использую функциональный узел для генерации двухбайтового запроса, который будет поступать на входной узел TCP и на контроллер, но не знаю, как его отформатировать в java. Я могу установить

msg.payload = "hello";

чтобы отправить строку, но мне нужно отправить 2 байта: 0xEF 0xAA. В C # я бы просто создал строку

msg.payload = "\xEF\xAA";

или что-то. Как это сделать в java / node-red?


person buzzard51    schedule 26.01.2017    source источник


Ответы (2)


Двоичные полезные данные - это буфер, объекты NodeJS, поэтому их можно создавать нравится:

msg.payload = new Buffer([0xEF,0xAA]);
person hardillb    schedule 26.01.2017
comment
new Buffer() предшествует. теперь это методы класса. также см. документацию. - person rocksteady; 28.07.2017

На сегодняшний день (nodered 0.17.5) этого можно добиться, выполнив следующие действия, см. документация:

msg.payload = Buffer.from("\xEF\xAA")

or

msg.payload  = Buffer.from('hello world', 'ascii');

Как видите, вы также можете указать параметр encoding:

Кодировки символов, которые в настоящее время поддерживаются Node.js, включают:

'ascii' - for 7-bit ASCII data only. This encoding is fast and will strip the high bit if set.

'utf8' - Multibyte encoded Unicode characters. Many web pages and other document formats use UTF-8.

'utf16le' - 2 or 4 bytes, little-endian encoded Unicode characters. Surrogate pairs (U+10000 to U+10FFFF) are supported.

'ucs2' - Alias of 'utf16le'.

'base64' - Base64 encoding. When creating a Buffer from a string, this encoding will also correctly accept "URL and Filename Safe Alphabet" as specified in RFC4648, Section 5.

'latin1' - A way of encoding the Buffer into a one-byte encoded string (as defined by the IANA in RFC1345, page 63, to be the Latin-1 supplement block and C0/C1 control codes).

'binary' - Alias for 'latin1'.

'hex' - Encode each byte as two hexadecimal characters.
person rocksteady    schedule 28.07.2017
comment
Версия Node-RED не действует, это зависит от базовой версии Node.JS. - person hardillb; 28.07.2017