Как из строки получить байт массив?
- Войдите на сайт для отправки комментариев
Ср, 22/02/2017 - 20:37
Имеется Ардуино+Ethenet shield. Хочу динамически изменять ip в зависимости от того, что придет на вход порта.
Вся проблема кроется в том что входная строка имеет тип String, а метод Ethernet.begin принимает на вход byte array. В общем никак не пойму как эту строку правильно сконвертировать. Пытался сделать велосипед, переведя строку в char array, а потом уже в byte array. Не получилось.
#include <SPI.h> #include <Ethernet.h> String readString; byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //physical mac address //byte ip[] = { 192, 168, 1, 102 }; // ip in lan assigned to arduino //byte gateway[] = { 192, 168, 1, 1 }; // internet access via router //byte subnet[] = { 255, 255, 255, 0 }; //subnet mask byte myserver[] = { 208, 104, 2, 86 }; // zoomkat web page server IP address EthernetClient client; ////////////////////// void initEthernetConfig(byte ip[]) { Ethernet.begin(mac, ip); //Ethernet.begin(mac, ip, subnet, gateway); Serial.begin(9600); Serial.println("Better client test 12/01/11"); // so I can keep track of what is loaded Serial.println("Send an e in serial monitor to test"); // what to do to test } void setup(){ byte ip[] = { 10, 28, 33, 4 }; // initEthernetConfig(ip); } void loop(){ // check for serial input while (Serial.available()) { char c = Serial.read(); //gets one byte from serial buffer readString += c; //makes the String readString delay(2); //slow looping to allow buffer to fill with next character } if (readString.length() >0) { byte inArray[4]; char * tokens; int i = 0; tokens = strtok(readString, "."); while (tokens != NULL) { inArray[i] = atoi(tokens); tokens = strtok(NULL, "."); i++; } initEthernetConfig(ip); } }
Вы серьёзно собрались strtok применять к классу String?
А кто Вам собственно сказал, что читать из сериала нужно обязательно в переменную типа String? Сами создаёте себе проблемы, чтобы потом их геройски преодолевать?
В общем. выбросьте кашу из головы и прочитайте внимательно о работае со строками (с массивами char) хоть в том же Кернигане и Ритчи. Любые подсказки сейчас Вам не помогут - только добавят каши. Прочитайте разберитесь и подсказки не понадобятся.