Массивы строки строки массивы
- Войдите на сайт для отправки комментариев
Пт, 14/11/2014 - 16:54
В общем вот:
String inData; char charArray[100]; String part1; inData = client.readString(); inData.toCharArray(charArray,100); part1 = strtok(charArray,'='); //Вот как здесь преобразовать в строку массив чаров
Приходящая строка имееет вид "string =int:int:int".
Буду очень признателен за любую помощь.
PS Поиск на сайте ужасен, так что возможно гдето такая тема уже есть но я найти не смог (
Непонятно зачем вы используете String совместно с char. Вы уж определитесь. Или вы работаете с классом String как в Java или с указателями как в C++ - вы определитесь сначала, а потм мы вам пакажем пример для одного из случаев.
P.S. Ковырял ардуиновский класс String - оказывается вполне ничего штука и если вам надо получить 3 символ строки то код такой:
Спасибо за ответ, я уже вроде как подразобрался но не совсем, у меня постоянно теряются символы
if(Serial.available()>0){ String packet = Serial.readString(); char buffer[packet.length()]; packet.toCharArray(buffer,packet.length()); String command = strtok(buffer,":"); if(command == "ADDRESS"){ String _ip = strtok(NULL,":"); String _mac = strtok(NULL,":"); writeDeviceAddress(_ip, _mac); }тут из сериал вылазает честный ADDRESS:192.168.1.222:0xAA,0xAA,0xAA,0xAA,0xAA,0xAA затем я это всё передаю в функцию записи в EEPROM, и вот тут я так понимаю массивы начинают мне усложнять жизнь, а именно, после передачи миссивов в фукнции теряются последние символы, по одному (((
void writeDeviceAddress(String _ip, String _mac){ Serial.println(_ip); Serial.println(_mac); int lenIp = _ip.length(); int lenMac = _mac.length(); char wIP[lenIp]; char wMac[lenMac]; _ip.toCharArray(wIP, lenIp); _mac.toCharArray(wMac, lenMac); for(int i = 0; i < lenIp; i++){ EEPROM.write(START_OF_IP + i, wIP[i]); delay(2); } for(int m = 0; m < lenMac; m++){ EEPROM.write(START_OF_MAC + m, wMac[m]); delay(2); } }Сделай ip-адрес в формате xxx.xxx.xxx.xxx, т.е. добивай октеты нулями и работай со смещениями.