Я читаю строки из последовательного соединения (pyserial), на данный момент я использую цикл while для чтения строки, а затем выполняю ряд функций на этом входе, а затем сохраняю их в объект (дальномер).Как обрабатывать ввод как генератор
Было упомянуто, что я должен рассматривать последовательный ввод как генератор, так как это делается в python.
У кого-нибудь есть опыт?
Или может, по крайней мере, объяснить в принципе, как это будет достигнуто?
Почему это лучше? Это чисто для памяти/скорости?
EDIT:
где работает функция:
at_end()
взялось? Я получаю:
AttributeError: 'Serial' object has no attribute 'at_end'
Если я использую
while True:
yield source.readline()
тогда я получаю выход.
Функция генератора, выполняющая то же самое, что и этот класс, - 'def serial_reader (source): while not source.at_end(): yield source.read()'. Напиши меньше уроков! –
@SvenMarnach, откуда берется функция at_end()? Я не могу назвать это своим серийным подключением. – beoliver
Хотя это может показаться pythonic, я не могу представить себе реальный сценарий, где вы захотите сделать это для последовательных данных. Серийные данные обычно поступают медленно и постоянно из потока. Это не часто, как капли данных, которые вы хотите перебирать. У вас может быть пакетный формат данных по последовательному каналу, но вы не можете сохранить эту фрагментацию при прямом чтении в последовательном интерфейсе. Не радуйтесь только ради этого. Чтение ваших байтов в цикле, вероятно, просто отлично. – TJD