void
MainWindow
::
String2Hex
(
QString
str
,
QByteArray
&
senddata
)
{
int hexdata,lowhexdata;
int hexdatalen = 0;
int len = str.length();
senddata.resize(len/2);
char lstr,hstr;
for(int i=0; i<len; )
{
//char lstr,
hstr=str[i].toLatin1();
if(hstr == ' ')
{
i++;
continue;
}
i++;
if(i >= len)
break;
lstr = str[i].toLatin1();
hexdata = ConvertHexChar(hstr);
lowhexdata = ConvertHexChar(lstr);
if((hexdata == 16) || (lowhexdata == 16))
break;
else
hexdata = hexdata*16+lowhexdata;
i++;
senddata[hexdatalen] = (char)hexdata;
hexdatalen++;
}
senddata.resize(hexdatalen);
}
char MainWindow::ConvertHexChar(char ch)
{
if((ch >= '0') && (ch <= '9'))
return ch-0x30;
else if((ch >= 'A') && (ch <= 'F'))
return ch-'A'+10;
else if((ch >= 'a') && (ch <= 'f'))
return ch-'a'+10;
else return (-1);
}
int main()
{
QString
dbm
;
QByteArray
db_m;
char db_buff[10]={0};
dbm
=
ui
->
lineEdit_dB
->
text
();
unsigned
int
db
=
dbm
.
toInt
();
sprintf
(
db_buff
,
"%x"
,
db
);
if
(
strlen
(
db_buff
)%
2
)
{
qDebug("奇数");
for(i=0;i<strlen(db_buff)+1;i++)
{
db_buff[strlen(db_buff)-i+1] = db_buff[strlen(db_buff)-i];
}
db_buff[0]='0';
dbm=QString::fromLocal8Bit(db_buff,strlen(db_buff));
qDebug("db_buffm%s",db_buff);
memset(db_buff,0,strlen(db_buff));
}
else
{
dbm=QString::fromLocal8Bit(db_buff,strlen(db_buff));
}
String2Hex(dbm,db_m);
serial->write(db_m);
}