LINUX.ORG.RU

Сообщения guskov_roman

 

Python падает при попытке декодировать строку \x1b\xe2\x80

Пытаюсь сделать оброботчик tty. Вроде бы ничего сложного, но при поптыке вызвать метод decode() в строке где есть последовательность «\x1b\xe2\x80\xa6P» питон просто отваливается. Не кидает исключения - ничего - просто молча падает. По идее опция errors=‘ignore’ должна помочь, но не помогает.

out = b'Mounting \x1b[0;1;39mdev-mqueue.mount\x1b\xe2\x80\xa6POSIX Message Queue File System...\r\r\n['
print ("decode start")
print (out.decode(errors='ignore'))
print ("decode end")

Версия Python 3.10.12

PS: Валиться только при запуске из под tmux. Если запустить в gnome-terminal, то без опции errors=‘ignore’, ругается на символ \xe2.

 

guskov_roman
()

Проблема с USB на embedded linux (сборка Yocto)

Суть истории:

Надо собрать linux для железки nitrogen6x. Для чего был выбран Yocto Linux Fido. Сконфигурировал ядро с menuconfig, собрал image, записал на SD карту. Запустил, вроде все нормально загрузилось, но в GTKTerm постоянно выдает следующее:

hub 1-0:1.0: USB hub found
hub 1-0:1.0: 1 port detected
ci_hdrc ci_hdrc.0: role 0 to 1
ci_hdrc ci_hdrc.0: remove, state 1
usb usb1: USB disconnect, device number 1
ci_hdrc ci_hdrc.0: USB bus 1 deregistered
ci_hdrc ci_hdrc.0: role 1 to 0
ci_hdrc ci_hdrc.0: EHCI Host Controller
ci_hdrc ci_hdrc.0: new USB bus registered, assigned bus number 1
ci_hdrc ci_hdrc.0: USB 2.0 started, EHCI 1.00
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 1 port detected
ci_hdrc ci_hdrc.0: role 0 to 1
ci_hdrc ci_hdrc.0: remove, state 1
usb usb1: USB disconnect, device number 1
ci_hdrc ci_hdrc.0: USB bus 1 deregistered
ci_hdrc ci_hdrc.0: role 1 to 0
ci_hdrc ci_hdrc.0: EHCI Host Controller
ci_hdrc ci_hdrc.0: new USB bus registered, assigned bus number 1
ci_hdrc ci_hdrc.0: USB 2.0 started, EHCI 1.00

И так может повторяться несколько минут подряд, но рано или поздно прекращает. При этом ввод не блокируется, я могу залогинется, вводить команды. К самой плате подключены клавиатура, мышь и монитор hdmi.

Вывод lsusb:

Bus 002 Device 004: ID 045e:07f8 Microsoft Corp. 
Bus 002 Device 003: ID 062a:0003 Creative Labs 
Bus 002 Device 002: ID 0424:2513 Standard Microsystems Corp. 2.0 Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

На мониторе который подключен к плате ничего нет. Этот вывод я вижу только в gtkterm через serial port на своем компьютере.

 

guskov_roman
()

Непонятная фигня с подсчетом времени

Суть проблемы : Я сделал сетевой эмулятор на FPGA который позволяет имитировать разные проблемы сети - задержку, уменьшение Daterate, потерю пакетов и т.д. Мой эмулятор может имитировать задержку прохождения пакетов в диапозоне 1 нс до 4 сек. Что бы проверить, была написана программа на с++ которая работает с сырыми сокетами. Я формирую пакеты вручную и отправляю их, а потом жду когда они придут обратно и замерю время. И вот тут начинается какая то непонятная фигня. Иногда показывает правильное время - более менее правдоподобное 840 мс, а иногда 1421165742397 мс. Что конечно не может быть в принципе.

Для замера времени использую функцию :

long mtime() {
  struct timeval t;
  gettimeofday(&t, NULL);
  long mt = (long)t.tv_sec * 1000 + t.tv_usec / 1000;
  return mt;
}

и в коде после отслыки

long t;
if ( sendto(sock[0], sendbuf, tx_len, 0, (struct sockaddr*)&socket_address, sizeof(struct sockaddr_ll)) )
    t = mtime();
и при приеме :
numbytes = recvfrom(sock[1], buf, BUF_SIZE, 0, NULL, NULL);
if ( eh_rec->ether_dhost == MY_MAC )
    t = mtime() - t;

printf ("Delay is %ld milliseconds.\n",t);
Где может быть проблема ?

OS: Ubuntu 14.04.1 LTS Desktop (64-bit)

 , ,

guskov_roman
()

RSS подписка на новые темы