Russian Qt Forum
Ноябрь 25, 2024, 12:36 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Кириллица шалит  (Прочитано 3225 раз)
U.B.M.
Гость
« : Октябрь 22, 2012, 14:15 »

Доброго времени суток.

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

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

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

P.S. Кодировка KOI8-R - прописал везде где только можно  Обеспокоенный - не помогает.
Записан
Bepec
Гость
« Ответ #1 : Октябрь 22, 2012, 14:26 »

Сарказм ON: "Я читаю книгу, русские буквы понимаю, а английские почему то нет. В чём дело?"

Код в студию.
Записан
U.B.M.
Гость
« Ответ #2 : Октябрь 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);

« Последнее редактирование: Октябрь 22, 2012, 15:00 от U.B.M. » Записан
U.B.M.
Гость
« Ответ #3 : Октябрь 22, 2012, 14:48 »

Сарказм ON: "Я читаю книгу, русские буквы понимаю, а английские почему то нет. В чём дело?"

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

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

Так уж надо сарказмировать.
Записан
Bepec
Гость
« Ответ #4 : Октябрь 22, 2012, 14:53 »

Извиняй, я по винде специализируюсь. А у тебя по виду unix живой Улыбающийся

Совет использовать стороннюю библиотеку для работы с портами - http://www.prog.org.ru/topic_9537_0.html
Записан
U.B.M.
Гость
« Ответ #5 : Октябрь 22, 2012, 14:59 »

Да использовать стороннюю не вопрос - просто интересно...

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

Может быть это связано с тем, что данный бесконечный цикл в потоке вертится?
« Последнее редактирование: Октябрь 22, 2012, 15:01 от U.B.M. » Записан
_OLEGator_
Гость
« Ответ #6 : Октябрь 22, 2012, 15:09 »

А что отладчик показывает в переменной _from сразу после считывания?
Записан
U.B.M.
Гость
« Ответ #7 : Октябрь 22, 2012, 15:11 »

На другом компе попробовал - _from нормальный.

Но всё равно не записывается в файл кириллица
« Последнее редактирование: Октябрь 22, 2012, 15:21 от U.B.M. » Записан
Bepec
Гость
« Ответ #8 : Октябрь 22, 2012, 15:34 »

Попробуй преобразовать в инт и бухнуть в файл. Без всяких других преобразований. Вот и посмотришь. Есть они у тебя в получаемом буфере, или режешь ты их при конвертации.
Записан
U.B.M.
Гость
« Ответ #9 : Октябрь 22, 2012, 15:51 »

преобразовать в инт

преобразовал _from в QString - заработало  Веселый Веселый Веселый

Всем пасибо. Вопрос закрыт
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.046 секунд. Запросов: 21.