Latest posts on linux работа с устройствами topichttp://python.su/forum/topic/485/2007-02-24T15:10:42+02:00Общий :: Python для экспертов :: linux работа с устройствами
2007-02-24T15:10:42+02:00pythonwin3373<strong>slivlen</strong> спасибо за помощь :)
Общий :: Python для экспертов :: linux работа с устройствами
2007-02-23T18:08:42+02:00slivlen3359<blockquote><em>pythonwin</em><br/>а как из файлового дискриптора создать объект файла?</blockquote>Не знаю, наверно никак, но можно из файлового объекта получить дескриптор :)<br/>Я вообще не советовал бы мешать в кучу файловые объекты и дескрипторы. Лучше выбрать что-нибудь одно.
Общий :: Python для экспертов :: linux работа с устройствами
2007-02-23T14:39:59+02:00pythonwin3349а как из файлового дискриптора создать объект файла?
Общий :: Python для экспертов :: linux работа с устройствами
2007-02-23T12:55:29+02:00slivlen3344Они ждут любые данные, это необязательно должен быть eof. Просто когда встречается eof они считают что достигнут конец файла. В устройствах не всегда есть доступная для считывания инфа, поэтому ф-ции чтения блокируются до поступления данных. Поумолчанию используется блокирующий ввод(файловый объект использует cишную fread) и чтобы это изменить надо передать специальный параметр для os.open или установить нeблокирующий режим для уже открытого дескриптора с помощью fcntl.
Общий :: Python для экспертов :: linux работа с устройствами
2007-02-23T12:26:16+02:00pythonwin3339на самом деле непонятно в чём причина - почему такая проблема возникает при работе с утройством как с объектом файл?<br/>read, readline и readlines ждут конца файла, а его нет?
Общий :: Python для экспертов :: linux работа с устройствами
2007-02-23T11:34:50+02:00pythonwin3337<strong>slivlen</strong> спасибо сейчас посмотрю :)
Общий :: Python для экспертов :: linux работа с устройствами
2007-02-23T11:13:44+02:00slivlen3335Тебе для этого придется работать с файлами на системном уровне(дескрипторы) без использования файловых объектов.<br/>Используй модуль os и ф-цию os.open с режимом O_NONBLOCK.<br/><a href="http://www.python.org/doc/2.3/lib/os-fd-ops.html">http://www.python.org/doc/2.3/lib/os-fd-ops.html</a>
Общий :: Python для экспертов :: linux работа с устройствами
2007-02-23T07:49:56+02:00pythonwin3331Доброе утро!<br/><br/>подскажите, пожалуйста, как сделать так чтобы при чтении из устройства в linux питон не ждал ответа, а сразу возвращал значение, даже если с устройством ничего не происходит?<br/><br/>пример:<br/><div class="code"><pre><span class="n">f</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="s">'/dev/ttyMydev'</span><span class="p">,</span><span class="s">'r'</span><span class="p">)</span>
<span class="n">l</span> <span class="o">=</span> <span class="n">f</span><span class="o">.</span><span class="n">readlines</span><span class="p">()</span> <span class="c"># здесь бывает задержка</span>
<span class="n">f</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
</pre></div><br/>при этом бывает, что на l = f.readlines() программа ждет ответа от устройства, а бывает что просто возвращает текущее значение из устройва и сразу выполняет следующий оператор кода. Здесь нужен второй вариант<br/>код один и тот же и запускается одинаково