/ / प्राप्त संदेश जो हेक्साडेसिमल में पढ़ा जाता है - हेक्स, आर्डिनो

हेक्साडेसिमल - हेक्स, आर्डिनो में पढ़ा गया संदेश प्राप्त करें

मैं arunino 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);

}

मैं (धारावाहिक टर्मिनल द्वारा) एक संदेश भेजने की कोशिश कर रहा हूं जिसे हेक्साडेसिमल में देखा जा सकता है।

छूट के लिए अगर मैं लिखूँ: "xaax22xa1" यह हेक्साडेसिमल के रूप में नहीं पढ़ेगा, यह होगा?

मैं हेक्साडेसिमल के रूप में प्रोग्राम को इनपुट में स्ट्रिंग को कैसे पढ़ने दे सकता हूं?

उत्तर:

उत्तर № 1 के लिए 1

आपका डेटा गलत नहीं है और यह प्रारूप है। क्या आपके पास प्रिंटफ की पहुंच है? यदि ऐसा है तो printf("%x",char) हेक्साडेसिमल के रूप में एक चार को देखने के लिए।

Arduino समाधान Serial.print (78, HEX) "4E" देता है

देख http://arduino.cc/en/Serial/Print

[संपादित करें]

मुझे प्रिंट के विपरीत चाहिए। मुझे यह चाहिए कि धारावाहिक टर्मिनल से जो स्ट्रिंग लिया गया है, उसकी व्याख्या हेक्स के रूप में की गई है।

इस उपयोग को पढ़ने के लिए () करें, लेकिन आपको ascii HEX से डेटा में कनवर्सेशन फ़ंक्शन को लागू करना होगा, 2 चरों पर बाइट होल्स के लिए HEX डेटा के रूप में, मेरा फ़ंक्शन इनपुट के रूप में दो चार्ट लेता है)

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 एएससीआई चार्ट पढ़ने के लिए) फिर इस फंक को कॉल करें