Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Средства редактирования вывода из файла.  (Прочитано 895 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Vorgehen

  • Автор темы
  • Любитель
  • *
  • Сообщений: 84
    • Просмотр профиля
Здравствуйте товарищи. Мой вопрос будет краток.
Дано файл с следующим содержимым.
<01><03><02><00><FD
<01><03><02><00><FD
<01><03><02><00><FD
<01><03><02><00><FD
и.т.д.
Нужно получить файл
00FD
00FD
00FD
00FD
и .т.д.
, т.е. то же самое но без лишних символов.
Подскажите средства.Или функции языка СИ или баш скрипты для удаления лишних символов из строки.
Благодарю всех кто откликнется.

Оффлайн easy2002

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 2786
  • Мурманск
    • Просмотр профиля
Re: Средства редактирования вывода из файла.
« Ответ #1 : 18 Апреля 2011, 21:04:58 »
awk '{split ($0, a, "><"); print a[4]a[5]}' /path/to/file
Tempora mutantur et nos mutantur in illis

Оффлайн Vorgehen

  • Автор темы
  • Любитель
  • *
  • Сообщений: 84
    • Просмотр профиля
Re: Средства редактирования вывода из файла.
« Ответ #2 : 18 Апреля 2011, 21:12:45 »
Спасибо огромное дорогой друг.Всё работает :)



Пользователь решил продолжить мысль 19 Апреля 2011, 02:54:13:
Работает только из готового файла.А пока устройство пишет в текстовый файл ничего не выходит.Пробовал даже с задержками пускать.
Даже не знаю как поступить.Может есть какие нибудь средства стандартный вывод улавливать и редактировать?Ведь должны же быть в Си функции посимвольного удаления.Пробовал с функцией printf играться.Концовку строки срезал,а вот начало и символы >< не могу.Ладно буду копаться.Если есть у кого нибудь мысли делитесь.Иногда достаточно просто навести на мысль.
« Последнее редактирование: 19 Апреля 2011, 02:54:13 от Vorgehen »

Оффлайн Yurror

  • Старожил
  • *
  • Сообщений: 1966
    • Просмотр профиля
Re: Средства редактирования вывода из файла.
« Ответ #3 : 19 Апреля 2011, 07:59:02 »
Код: (main.cpp) [Выделить]
#include <cstdlib>
#include <iostream>
#include <sstream>
#include <vector>
#include <iomanip>
#include <algorithm>

using namespace std;

bool for_replace (char i) { return (i == '<') || (i == '>'); }

int main(int argc, char** argv) {
    string line;
    while (getline(cin, line)) {
        replace_if(line.begin(), line.end(), for_replace, ' ');
        istringstream iss(line);
        vector<uint> nums;
        while (!iss.eof()) {
            uint nr;
            iss >> hex >> nr;
            nums.push_back(nr);
        }
#ifdef debug
        for (vector<uint>::const_iterator iter = nums.begin(); iter != nums.end(); ++iter) {
            cout << hex << *iter << ' ';
        }
#else
        cout << uppercase << setfill('0') << setw(2) << hex << nums[3] /*<< ' '*/ << nums[4];
#endif // debug
        cout << endl;
    }
    return 0;
}
ты это хотел?
« Последнее редактирование: 19 Апреля 2011, 10:14:45 от Yurror »

Оффлайн Vorgehen

  • Автор темы
  • Любитель
  • *
  • Сообщений: 84
    • Просмотр профиля
Re: Средства редактирования вывода из файла.
« Ответ #4 : 19 Апреля 2011, 17:43:45 »
Ну это не просто наводка,а готовый код???Спасибо Уважаемый Yurror :)На днях разберусь и протестирую :)

Кому интересно то это измеритель температуры.Протокол связи Modbus-RTU.Использовал урезанную(вырезал половину ненужного мне кода) библиотеку с сайта http://www.libmodbus.org/.
И простенькую программку не чтение регистров прибора.И вот этот файл на старте топика и есть кадр ответа(без контрольной суммы),мне нужно только извлечь 2 байта данных перевести в десятичную систему и результат поделить на 10.Что будет являться комнатной температурой,измеренной хромель-капелевой термопарой.Всё уже написано(нагугленно в интернете и работает),а вот с вводом-выводом загвоздка,из-за не совершенного знания языков программирования :)Я не программист поэтому прошу не судить строго :)
О результате сообщу .

Оффлайн Yurror

  • Старожил
  • *
  • Сообщений: 1966
    • Просмотр профиля
Re: Средства редактирования вывода из файла.
« Ответ #5 : 20 Апреля 2011, 05:42:22 »
Было бы лучше если бы ты с самого начала написал последнее сообщение.
можно было не резать библиотеку, получать ответы и просто брать из них нужные байты. получилось бы без всякой ненужной шелухи. а так тут 10 конвертаций. чтобы получить 2 байта.

Оффлайн Vorgehen

  • Автор темы
  • Любитель
  • *
  • Сообщений: 84
    • Просмотр профиля
Re: Средства редактирования вывода из файла.
« Ответ #6 : 20 Апреля 2011, 16:18:58 »
Спасибо Yurror :)Пойду гуглить :)Пока не добраться и не поглядеть ваш код Си++,думаю в пятницу откомпилю и проверю :)

Немного разочаровался в своей схеме из-за задержек и большого числа получающегося мусора.

Был план использовать такую схему:
1.Чтение с регистров прибора используя обрезанную libmodbus-2.0.3 - работает :)
2.Обработка и запись данных с помощью обычных файлов но идут сильные задержки.
3.Чтение из получающегося отредактированного файла и отображение при помощи http://mathgl.sourceforge.net/
4.Использую Си для всего вышеописанного.И баш скрипты для связки.

А теперь думаю насчёт альтернативы
1.Чтение с регистров прибора используя обрезанную libmodbus-2.0.3
2...............
3......отображение при помощи http://mathgl.sourceforge.net/

Что вы думаете по этому поводу?
Чем заменить многоточие?В какую сторону смотреть?

Кадр ответа пока 7 байт.Из низ первый байт адресс прибора в сети,Второй байт номер функции modbus.Третий адресс регистра,4,5 данные,6,7 контрольная сумма crc16.

Видел в интернете использование питона для таких нужд.Но Питон даже близко читать не умею :(И не представляю принцип работы с ним даже отдалённо :(

Кстати библиотечку пытался использовать целиком,а она ругается.Срезал ненужные проверки, функции которые не юзаю. Ну и изъял поддержку TCP оттуда.

Укажите в какую сторону копать.
Башка уже ватная.
Спасибо за помощь :)

Оффлайн Yurror

  • Старожил
  • *
  • Сообщений: 1966
    • Просмотр профиля
Re: Средства редактирования вывода из файла.
« Ответ #7 : 21 Апреля 2011, 06:20:10 »
Просто постарайся обойтись без файлов. держи в памяти нужный объём данных. смотри чтобы память не потекла.
Нарисуй всё на бумажке, посмотри где можно избежать дублирования.
будет три блока, получение данных, храниение и визуализация.

Оффлайн Vorgehen

  • Автор темы
  • Любитель
  • *
  • Сообщений: 84
    • Просмотр профиля
Re: Средства редактирования вывода из файла.
« Ответ #8 : 23 Апреля 2011, 14:19:59 »
Спасибо за помощь :)Теперь понял в каком направлении рыть.

P.S. спасибо за ту программу что вы написали на си++.Сегодня скомпилировал её и опробовал.Работает :) Хотя иногда ноль срезает:)
Теперь отображается температура :)
Жаль что не пригодится :-[
Надо было сразу обратиться за помощью.

P.S.S. Скажите что за фрукт RUBY?
Читал про этот язык,но хотелось бы узнать мнение опытных людей.Стоит ли тратить на него время или нет?


 

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