2013-09-02 3 views
1

Я программирования с Arduino 1.0.5 в Lunix/окнаПолучить сообщение, которое читается читать в шестнадцатеричном

С помощью этой части кода:

void readSerialString() { 
    char buffer[8]; 
    if(Serial.available()) { 
     while (Serial.available()){ 
      sb = Serial.read(); 
      buffer[indexB] = sb; 
      indexB++; 
     } 
     } 
     Serial.println(buffer); 

} 

Я пытаюсь отправить (серийным терминал) сообщение, которое можно увидеть в шестнадцатеричном формате.

Например, если я пишу: «\ xaa \ x22 \ xa1» Он не будет читаться как шестнадцатеричный, не так ли?

Как я могу позволить программе читать строку во входном файле как шестнадцатеричную?

ответ

1

Не ошибитесь в данных и его формате. У вас есть доступ к printf? Если это так, используйте printf("%x",char), чтобы увидеть символ как шестнадцатеричный.

Arduino решение Serial.print (78, HEX) дает "4Е"

см http://arduino.cc/en/Serial/Print

[править]

мне нужно противное печати. Мне нужно, чтобы строка, которая была токеном из последовательного терминала, интерпретировалась как hex.

Для этого используйте для чтения(), но вы должны реализовать функцию Convertion от ASCii HEX к данным, в качестве HEX данных для бай HOLS на 2-х символах, моя функция взять два символа в качестве входных данных)

char hex_ascii_to_databyte(char c1, char c2){ 
    char res=0; 
    if(c1>=48 && c1<=57) res = c1-48; 
    else if(c1>=65&& c1<=70) res = c1 - 65 + 0xa; 
    else if(c1>=97&& c1<=102) res = c1 - 97 + 0xa; 
    else{//error 
    } 
    //idem c2 in res2 
    res=res<<4; 
    res+=res2; 
    return res; 
} 

для каждого шестигранного чтения, вызов дважды прочитал (читать 2 ASCii символов), то называем это Func

+0

Спасибо за ответ! У меня нет доступа к printf. В реальности я не хочу печатать как шестнадцатеричный, но я хочу, чтобы ввод читался как шестнадцатеричный. – DarkCoffee

+1

Я также добавил решение arduino – dzada

+0

Да, я читал, но мне нужно обратное отпечатка. Мне нужно, чтобы строка, которая была токеном из последовательного терминала, интерпретировалась как hex. – DarkCoffee

Смежные вопросы