кошка повреждает данные последовательного порта

Существует способ изменить его, но это не полностью отвечает на Ваш вопрос.
Можно отредактировать /usr/share/gnome-screensaver/lock-dialog-default.ui в Вашем любимом текстовом редакторе (убедиться сделать резервное копирование сначала!). Прокрутите вниз и найдите


        True
        True
        False
        0
        
        True
        True

"visibility" = False вызывает текстовый эффект пароля. Можно добавить новое право собственности ниже видимости для изменения символа (замена точки).

 

Я попробовал это на Debian 6, но он должен работать над любой системой Gnome. К сожалению, это должно показать некоторого заполнителя, таким образом, это не будет работать как терминальная подсказка пароля и ничего не показывать. Самое близкое, которое я получил, использовало пробел. Но Вы могли экспериментировать для наблюдения то, что действительно работает.

4
23.09.2012, 20:45
3 ответа

Это не повреждается. То, что происходит, то, что cat команда получает некоторые байты, и Ваше приложение получает некоторых из них. Таким образом, когда Вы работаете cat, любые байты, считанные им, пропущены приложением и обоими cat и приложение будет видеть (различные) частичные потоки, которые кажутся поврежденными.

4
27.01.2020, 20:45
  • 1
    Привет Jim, Как я могу предотвратить это? –  Ricardo Cristian Ramirez 23.09.2012, 16:10
  • 2
    Вы не можете изменить то поведение, таким образом, необходимо будет разработать на основе этого. Например, запишите программу, которая читает из последовательного порта и подает данные к Вашему приложению, дополнительно отображая его. Или имейте свое приложение, пишут его собственную отладочную информацию. Для нечастой отладки Вы смогли сходить с рук strace видеть то, что читает Ваше приложение. –  Jim Paris 24.09.2012, 19:09
  • 3
    Спасибо Jim. У меня нет источника получения заявления. Я просто использую его вершину данных его. Так запись программы мультиплексора будет более полезна для моего случая. Я не работал с последовательными портами до сих пор, и я думал cat прерывания и дисплеи поток, но я был неправ. Кроме того, я нашел подобную тему в stackoverflow –  Ricardo Cristian Ramirez 26.09.2012, 00:11
  • 4
    Не Можете Вы делать a tee и перенаправление в фиктивный файл, который будет считан из Вашего приложения? –  xcorat 29.12.2016, 14:52

Вы уверены, что данные не повреждаются Вашим терминалом (или везде, где кошка отображается)? cat вряд ли повредит Ваши данные.

Попытайтесь использовать od (восьмеричный дамп) для дампа данных, прибывающих из последовательного порта, таким образом, Вы видите точно, что производит впечатление (не полагаясь на него являющийся печатаемым). Использовать od -c если Вы ожидаете данные ASCII.

Если Вы все еще видите повреждение, возможно, Ваш последовательный порт не вполне настроен правильно? Попробовать setserial и stty видеть, могут ли они настроить вещи лучше.

9
27.01.2020, 20:45
  • 1
    Привет P.T., На самом деле я не уверен, что повреждает данные, но если я не использую cat все хорошо работает. Если я использую cat, это печатает корректные данные, но приложение с другой стороны не отвечает, так или иначе cat съешьте данные. BTW, stty следующим образом: -parenb -parodd cs8 hupcl -cstopb cread clocal crtscts -ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany -imaxbel -iutf8 -opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0 -isig -icanon -iexten -echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke –  Ricardo Cristian Ramirez 23.09.2012, 16:08
  • 2
    , обновите свой вопрос указать, что Вы также получили приложение, читающее из последовательного порта. Это объясняет, что повреждение как байты на последовательном порте "используется", когда считано, таким образом, только одно приложение видит их. –  P.T. 23.09.2012, 20:04
  • 3
    Привет снова я отредактировал вопрос. Если только одно приложение видит данные, есть ли подходящий способ перенаправить данные к приложению после выполнения cat?Спасибо. –  Ricardo Cristian Ramirez 23.09.2012, 20:24
  • 4
    PT: это - то, что мой ответ предположил, что он имел в виду –  Jim Paris 24.09.2012, 19:10

cat не изменяет данные. Могли бы быть старые системы Unix, где это усекает строки, которые содержат пустые байты, но не Linux, и я думаю не любая современная подобная Unix система.

С другой стороны, при попытке отобразить двоичные данные непосредственно по Вашему терминалу, то терминал интерпретирует управляющие символы как команды для управления дисплеем. Это - то, для чего управляющие символы. Если Вы хотите видеть печатаемое представление необработанных данных, у Вас есть несколько решений:

  • Выполненный cat -A, который распечатает читаемое, но неоднозначное представление управляющих символов (например. ^A мог быть байт 0x01 или двухбайтовый 0x5e 0x41 последовательности).
  • Выполненный hexdump -C, od -t x1 или некоторая другая шестнадцатеричная программа дампа (или восьмеричный дамп, если Вы предпочитаете).
  • Выполненный less /dev/ttyS0 и нажмите F считывать некоторые данные затем Ctrl+C просмотреть его. В меньше, ввести -r переключаться между необработанным дисплеем управляющих символов и печатаемым представлением.

Отметьте то чтение /dev/ttyS0 шоу, что Ваш последовательный порт получает, не, что отправляется через него. Если Вы хотите это, шпиона на приложении, это пишет, например, с strace или отладчик.

6
27.01.2020, 20:45
  • 1
    Привет Gilles, hexdump -C и od -t x1 произведите изящные выводы. Я использовал их обоих спасибо. –  Ricardo Cristian Ramirez 23.09.2012, 16:12

Теги

Похожие вопросы