代码拉取完成,页面将自动刷新
#include "mydatatype.h"
//线程资源同步
QQueue<quint8> threadBuffer;
QReadWriteLock rwLock; //读写锁
QList<QString> threadBuffer_g;
QReadWriteLock rwLock_g; //读写锁
//数据类型
const uint8_t myChar = 0;
const uint8_t myUint8_t = 1;
const uint8_t myShort = 2;
const uint8_t myUint16_t = 3;
const uint8_t myInt = 4;
const uint8_t myUint32_t = 5;
const uint8_t myFloat = 6;
const uint8_t myDouble = 7;
const uint8_t _3bytesToInt = 8;
const uint8_t _2bytesToInt = 9;
//数据类型名
const QStringList myDataTypeList = (QStringList()<<"char"<<"uint8_t"<<"short"<<"uint16_t"<<"int"<<"uint32_t"<<"float"<<"double"<<"3bytesToInt"<<"2bytesToInt");
myDataType::myDataType()
{
endianModex = little_Endian;
}
short myDataType::func_2bytesToShort(uint8_t *buffer)
{
if(endianModex == little_Endian){
_2bytesToShort.buf[0] = *(buffer++);
_2bytesToShort.buf[1] = *(buffer++);
}else{
_2bytesToShort.buf[1] = *(buffer++);
_2bytesToShort.buf[0] = *(buffer++);
}
return _2bytesToShort.var;
}
uint16_t myDataType::func_2bytesToUint16(uint8_t *buffer)
{
if(endianModex == little_Endian){
_2bytesToUint16.buf[0] = *(buffer++);
_2bytesToUint16.buf[1] = *(buffer++);
}else{
_2bytesToUint16.buf[1] = *(buffer++);
_2bytesToUint16.buf[0] = *(buffer++);
}
return _2bytesToUint16.var;
}
int myDataType::func_4bytesToInt(uint8_t *buffer)
{
if(endianModex == little_Endian){
_4bytesToInt.buf[0] = *(buffer++);
_4bytesToInt.buf[1] = *(buffer++);
_4bytesToInt.buf[2] = *(buffer++);
_4bytesToInt.buf[3] = *(buffer++);
}else{
_4bytesToInt.buf[3] = *(buffer++);
_4bytesToInt.buf[2] = *(buffer++);
_4bytesToInt.buf[1] = *(buffer++);
_4bytesToInt.buf[0] = *(buffer++);
}
return _4bytesToInt.var;
}
uint32_t myDataType::func_4bytesToUint32(uint8_t *buffer)
{
if(endianModex == little_Endian){
_4bytesToUint32.buf[0] = *(buffer++);
_4bytesToUint32.buf[1] = *(buffer++);
_4bytesToUint32.buf[2] = *(buffer++);
_4bytesToUint32.buf[3] = *(buffer++);
}else{
_4bytesToUint32.buf[3] = *(buffer++);
_4bytesToUint32.buf[2] = *(buffer++);
_4bytesToUint32.buf[1] = *(buffer++);
_4bytesToUint32.buf[0] = *(buffer++);
}
return _4bytesToUint32.var;
}
float myDataType::func_4bytesToFloat(uint8_t *buffer)
{
if(endianModex == little_Endian){
_4bytesToFloat.buf[0] = *(buffer++);
_4bytesToFloat.buf[1] = *(buffer++);
_4bytesToFloat.buf[2] = *(buffer++);
_4bytesToFloat.buf[3] = *(buffer++);
}else{
_4bytesToFloat.buf[3] = *(buffer++);
_4bytesToFloat.buf[2] = *(buffer++);
_4bytesToFloat.buf[1] = *(buffer++);
_4bytesToFloat.buf[0] = *(buffer++);
}
return _4bytesToFloat.var;
}
double myDataType::func_8bytesToDouble(uint8_t *buffer)
{
if(endianModex == little_Endian){
_8bytesToDouble.buf[0] = *(buffer++);
_8bytesToDouble.buf[1] = *(buffer++);
_8bytesToDouble.buf[2] = *(buffer++);
_8bytesToDouble.buf[3] = *(buffer++);
_8bytesToDouble.buf[4] = *(buffer++);
_8bytesToDouble.buf[5] = *(buffer++);
_8bytesToDouble.buf[6] = *(buffer++);
_8bytesToDouble.buf[7] = *(buffer++);
}else{
_8bytesToDouble.buf[7] = *(buffer++);
_8bytesToDouble.buf[6] = *(buffer++);
_8bytesToDouble.buf[5] = *(buffer++);
_8bytesToDouble.buf[4] = *(buffer++);
_8bytesToDouble.buf[3] = *(buffer++);
_8bytesToDouble.buf[2] = *(buffer++);
_8bytesToDouble.buf[1] = *(buffer++);
_8bytesToDouble.buf[0] = *(buffer++);
}
return _8bytesToDouble.var;
}
int myDataType::func_3bytesToInt(uint8_t* buffer)
{
if(endianModex == big_Endian){
_4bytesToInt.buf[3] = *(buffer++);
_4bytesToInt.buf[2] = *(buffer++);
_4bytesToInt.buf[1] = *(buffer++);
_4bytesToInt.buf[0] = 0x00;
}else{
_4bytesToInt.buf[0] = 0x00;
_4bytesToInt.buf[1] = *(buffer++);
_4bytesToInt.buf[2] = *(buffer++);
_4bytesToInt.buf[3] = *(buffer++);
}
return (_4bytesToInt.var >> 8);
}
int myDataType::func_2bytesToInt(uint8_t *buffer)
{
if(endianModex == big_Endian){
_2bytesToShort.buf[1] = *(buffer++);
_2bytesToShort.buf[0] = *(buffer++);
}else{
_2bytesToShort.buf[0] = *(buffer++);
_2bytesToShort.buf[1] = *(buffer++);
}
return (int)_2bytesToShort.var;
}
void myDataType::updateEndianMode(int modex)
{
if(modex == 0)
{
endianModex = little_Endian;
}else if(modex == 1)
{
endianModex = big_Endian;
}else
{
endianModex = little_Endian; //默认为小端模式
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。