Russian Qt Forum

Qt => Вопросы новичков => Тема начата: U.B.M. от Октябрь 22, 2012, 14:15



Название: Кириллица шалит
Отправлено: U.B.M. от Октябрь 22, 2012, 14:15
Доброго времени суток.

Возникла непонятная проблема:

- считываю данные из com-порта;
- пихаю в поток;
- записываю в файл.

Кириллица просто не записывается (не мусор, не нулевые байты - просто нету).
с чем может быть связано?

P.S. Кодировка KOI8-R - прописал везде где только можно  :-[ - не помогает.


Название: Re: Кириллица шалит
Отправлено: Bepec от Октябрь 22, 2012, 14:26
Сарказм ON: "Я читаю книгу, русские буквы понимаю, а английские почему то нет. В чём дело?"

Код в студию.


Название: Re: Кириллица шалит
Отправлено: U.B.M. от Октябрь 22, 2012, 14:46
Код:
//	QTextCodec* codec = QTextCodec::codecForName("KOI8-R");
// QTextCodec::setCodecForCStrings(codec);

// это не помогает - да и не важно какая кодировка (если неправильная то каракули были бы)

QFile *rcvr_file = new QFile("rcvr.log");
QTextStream rcvr_stream(rcvr_file);

int fd = open("/dev/ttyS0", O_RDWR | O_NOCTTY | O_NDELAY);

char _from[32];
memset(&_from,0,32);
fcntl(fd, F_SETFL, 0);

for (;;)
{
lseek(fd, 0, SEEK_SET);
n = read(fd, _from, 31);

if ((_from != "") and (_from != NULL))
{
if (rcvr_file->open(QIODevice::Append | QIODevice::Text))
{
rcvr_stream << QDateTime::currentDateTime().toString("\ndd-MM-yy hh:mm:ss\n\n") << _from;
rcvr_file->close();
}
memset(&_from,0,32);
}
}
close(fd);



Название: Re: Кириллица шалит
Отправлено: U.B.M. от Октябрь 22, 2012, 14:48
Сарказм ON: "Я читаю книгу, русские буквы понимаю, а английские почему то нет. В чём дело?"

Код в студию.
Вы наверное не заметили в первом посте про то что кириллица вообще не отображается:

"Я читаю книгу, русские буквы понимаю, а английские почему то нет отсутствуют, хотя они 100% есть. В чём дело?"

Так уж надо сарказмировать.


Название: Re: Кириллица шалит
Отправлено: Bepec от Октябрь 22, 2012, 14:53
Извиняй, я по винде специализируюсь. А у тебя по виду unix живой :)

Совет использовать стороннюю библиотеку для работы с портами - http://www.prog.org.ru/topic_9537_0.html


Название: Re: Кириллица шалит
Отправлено: U.B.M. от Октябрь 22, 2012, 14:59
Да использовать стороннюю не вопрос - просто интересно...

На СОМ приходит набор байтов - компу пофигу ведь что это такое. Он, по-идее, должен всё в файл записать. А он паразит только выборочно записывает - латиницу и цифры  :-[

Может быть это связано с тем, что данный бесконечный цикл в потоке вертится?


Название: Re: Кириллица шалит
Отправлено: _OLEGator_ от Октябрь 22, 2012, 15:09
А что отладчик показывает в переменной _from сразу после считывания?


Название: Re: Кириллица шалит
Отправлено: U.B.M. от Октябрь 22, 2012, 15:11
На другом компе попробовал - _from нормальный.

Но всё равно не записывается в файл кириллица


Название: Re: Кириллица шалит
Отправлено: Bepec от Октябрь 22, 2012, 15:34
Попробуй преобразовать в инт и бухнуть в файл. Без всяких других преобразований. Вот и посмотришь. Есть они у тебя в получаемом буфере, или режешь ты их при конвертации.


Название: Re: Кириллица шалит
Отправлено: U.B.M. от Октябрь 22, 2012, 15:51
преобразовать в инт

преобразовал _from в QString - заработало  :D :D :D

Всем пасибо. Вопрос закрыт