В библиотеке функций owen_protocol.c, которую можно найти на форуме, реализованы функции для работы по протоколу ОВЕН (вычисление хэшей, кодирование, раскодирование фреймов, преобразование данных). Работы с COM-портами нет, но и не нужно, легко можно реализовать отправку-прием различными методами, тем более, что мне нужно обмениваться через тот же COM-порт с другими устройствами, чего не позволяет делать owen_io.dll.
Я веду разработку программ для своих задач на языке Python, поэтому и решил сделать для него интерфейс к функциям из owen_protocol.c. В сборке поддерживаются все функции исходной библиотеки, их достаточно по крайней мере для чтения параметров, установку пока делать не пробовал, но думаю, что установка тоже будет работать. Функции библиотеки можно вызывать напрямую, но лучше использовать написанный мною класс для устройств ОВЕН, дающий удобный интерфейс для работы с приборами. Внутри приложенного файла сама библиотека для Python, интерфейсный класс и примеры работы. Обёртка сделана с помощью swig, скомпилирована для python 2.7.3.
Ссылка на библиотеку
Ссылка на репозиторий
Команда для получения последней версии исходников (при помощи программы Apache Subversion):
svn export http://py-owen-library.googlecode.com/svn/trunk/ py-owen-library-read-only
Пример кода:
owen=Owen(None,16)#Создаем устройство по адресу 16
print 'Hashes:'
#считаем хэши запросов
hashROUT=owen.GetHash('r.oUt')
hashRST=owen.GetHash('r.St')
hashREAD=owen.GetHash('rEAd')
print 'Read: ',hashREAD,'Out: ',hashROUT,"State: ",hashRST
#читаем данные из устройства
print owen.GetIEEE32(hashREAD)
print owen.GetDeviceName()
print owen.GetFirmwareVersion()
print owen.GetStringByName('dev')
Добавил класс для работы с ТРМ251 (пока реализовано чтение температуры и мощности), консольный пример работы с библиотекой и пример с использованием графического интерфейса пользователя на основе wxPython.
Для запуска примеров могут потребоваться библиотеки pySerial и pyWin32.