Помогите передать NULL

demon54
Offline
Зарегистрирован: 05.01.2017

История. Надо передать в систему мониторинга zabbix данные. Те примеры что я нашел, чего то не очень то и работают. А вот "в ручную" я данные передал. Взял программку TCP/UPD NetAssistant, поймал покетики от утилиты zabbix_sender, послал такой же из NetAssistant на сервер ивсе заработало. А посылка такая.

ZBXD `       {
	"request":"sender data",
	"data":[
		{
			"host":"box1",
			"key":"b1t1",
			"value":"101"}]}

Так вот, в первой строке, от символа D до кавычек должны быть такие байтики в HEX

01 60 00 00 00 00 00 00 00

не могу передать нули, они не доходят или конвертятся в число 20 (пробел).

Использую библиотеку ESP8266pro-master. Беру и вот так посылаю.

char StrB1t1[] = {'Z', 'B', 'X', 'D', 0x01, '`', 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x7B, 0x0A, 0x09, 'A', 'B', 'C'};

con.send(StrB1t1);

Посылается до первого нуля. Прочитал, что нуль признак конца строки в Си. А как это побороть не нашел. Если не слать NULL то все работает как надо.

Туплю. Помогите.

Клапауций 823
Клапауций 823 аватар
Offline
Зарегистрирован: 13.01.2017

почитай, что такое char char

demon54
Offline
Зарегистрирован: 05.01.2017

Не понял Вашего посыла. Может я не внимателен. Вот еще пример. Так работает. и присылает 5A 42 58 44 01 01 в HEX

String stringSend="ZBXD\x01\x01";
con.send(stringSend);

А так не работает и присылает 5A 42 58 44 01 в HEX

String stringSend="ZBXD\x01\x00\x01";
con.send(stringSend);

Намекните прозрачнее, пожалуйста.

Клапауций 823
Клапауций 823 аватар
Offline
Зарегистрирован: 13.01.2017

ок. теперь читай, что такое String String

demon54
Offline
Зарегистрирован: 05.01.2017

Надо сразу посылать читать Кернигана, Ричи. )))

Мне такие советы не нравятся, если Вы ткнете носом где на этих двух страничках ответ на мой вопрос, я скажу три раза "ку". Но там ответа нет, а глумиться над проблемой не хорошо.

Вот тут люди обсуждали подобное, но я не понял решения https://www.linux.org.ru/forum/development/360461 .

И на странички описания char и String там не посылали.

Клапауций 823
Клапауций 823 аватар
Offline
Зарегистрирован: 13.01.2017

demon54 пишет:

И на странички описания char и String там не посылали.

будешь выепываться, я тебя не в описания чар пошлю, а найух.

всё просто https://www.google.com.ua/search?q=arduino+передать+HEX

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

строки в С это последовательность байт, заканчивающихся нулем.  В Кернигане/Риччи это написано.  Поэтому, con.send() принимая от тебя строку, передает все байты до нулевого символа, думая, что строка закончилась.  И заканчиваеца с чюством выполненного долга.

demon54
Offline
Зарегистрирован: 05.01.2017

Спасибо за помощь.