Добрые люди, помогите. 2 недели засел, не могу реализовать простое чтение с УСБ. Есть такие китайские весы QinHeng Electronics USB Serial. Они непрерывно шлют информацию на порт в таком виде: 0.00,kg,. Делал данный проект в QT под Windows, все отлично работает с таким кодом:
DWORD iSize;
char sReceivedChar;
QByteArray data;
int i = 0;
while (true)
{
ReadFile(hCom, &sReceivedChar, 1, &iSize, 0);
if (sReceivedChar>0)
{
if (sReceivedChar != '\r' && sReceivedChar != '\n' && sReceivedChar != '-')
{
data.append(sReceivedChar);
i++;
}
}
if (i == 8)
{
qDebug() << QString(data);
data.clear();
i = 0;
}
}
Но там и через HyperTerminal приходит сразу корретное значение.
В Ubuntu 20.04 LTS так же в QT проверяю подключение через cat < /dev/ttyUSB1 в ответ получаю вот такое:
怘������~�怘������~�怘
через putty /dev/ttyUSB1 -serial -sercfg 9600, 8, n, 1, N выдает точно такое же:
怘������~�怘������~�怘������~�怘������~�怘
Читаю вот так:
char sReceivedChar;
QByteArray dat;
int i = 0;
while (true)
{
read(fd, &sReceivedChar, 1);
if (sReceivedChar>0)
{
dat.append(sReceivedChar);
i++;
}
if (i == 8)
{
QTextCodec *codec = QTextCodec::codecForName("Windows-1251");
QString str = codec->toUnicode(dat);
qDebug()<<dat<<str;
dat.clear();
i = 0;
sleep(1);
}
}
В ответ получаю вот такое:
"\x18\x18~\x18\x18~\x06\x18" "\u0018\u0018~\u0018\u0018~\u0006\u0018"
Пробовал кодировки менять в коде, попробовал все, что есть в QTextCodec, результат меняется, но как итог - непонятный текст
Помогите разобраться в кодировке, пожалуйста, проект горит.