与我的帖子linux writing string value as hex to serial相关(已在x86系统上解决) 我在i368系统上遇到了问题。 该代码适用于intel atom ubuntu系统。 但是在使用ubuntu的intel xeon上,这不再适用了。
这可能是小/大端的问题吗?
我使用了Erik上述帖子的代码。
我正在使用此方法转换
int convert(std::string str, unsigned char*& charArr)
{
// count the number of character pairs (i.e. bytes) in the string
// and dynamically allocate an array of the required size
const int numBytes = str.size() / 2;
charArr = new unsigned char[numBytes];
for (int i = 0; i < numBytes; ++i)
{
// grab two characters from the string...
std::string twoChars = str.substr(2 * i, 2);
// ...and convert them to an integer using a stringstream
int byte;
std::stringstream ss(twoChars);
ss >> std::hex >> byte;
// store the result in our char array
charArr[i] = byte;
}
}
通过
调用方法const std::string str ="8C000002008E";
unsigned char* toSend;
convert(str, toSend);
用以下内容写入串口:
int kWrite = write(mFd, toSend , sizeof(toSend));
串行设备对原子系统作出反应,但不在xeon上作出反应。
我得到的回答是:未定义的格式或校验和错误