PDA

Просмотр полной версии : Python библиотека для работы с устройствами по протоколу ОВЕН



vitug
14.12.2012, 18:43
Изначально пытался работать с внешней динамической библиотекой, поставляемой с устройством, но у неё есть ряд ограничений. Например, нельзя по порту, занятому библиотекой, общаться с другими устройствами. Кроме того, как и при работе с любой внешней библиотекой невозможно нормально организовать обработку ошибок или оптимизировать код, скажем по скорости обмена. Поэтому была написана своя библиотека на основе с-реализации протокола, её можно найти в "owen_protocol.c". В моей библиотеке, которая представляет собой библиотеку классов, есть класс для работы с протоколом, есть класс для работы с любым устройством ОВЕН и есть пример специализированного класса для работы с конкретным прибором.

Пример работы с классом протокола:
op = OwenProtocol(address,addrLen)
id=op.name2id('dev')#получаем свертку строкового идентификатора
hash=op.id2hash(id)#получаем хэш параметра

Пример работы с классом прибора:
owen=OwenDevice(None,16)#создаем устройство без указания порта, это значит, что вместо данных будет приходить тестовая строка
result=owen.GetDeviceName()#получаем название устройства, в тестовом режиме будет TPM251

Пример работы с прибором ТРМ251
pidReg=trm251.TRM251(COM,16);#открываем настоящий порт
Temp=pidReg.GetTemperature(1)#получаем температуры с первого датчика

Требования: интерпретатор python, библиотеки pySerial и pyWin32 (под windows), wxPython (для запуска гуёвого примера)

Лицензия: GNU GPL

Теоретически библиотеку без серьезных переделок можно использовать в Linux и в среде NET (не проверялось).

Архив с библиотекой (http://code.google.com/p/py-owen-library/downloads/detail?name=py-owen-library.r31.7z&can=2&q=)
Репозиторий (http://code.google.com/p/py-owen-library/)
Команда для получения последней версии (требует наличия SVN):
svn checkout http://py-owen-library.googlecode.com/svn/trunk/ py-owen-library-read-only