PDA

Просмотр полной версии : owen_io_lib



Arkady
25.06.2009, 12:03
В библиотеки owen_io_lib есть функция int ReadIEEE32(DWORD adr,DWORD adr_type,char *command,float &value,int &time,int index), а в ней есть параметр int &time - прочитанное время измерения (см. п. .1.6"Описание протокола обмена между ПЭВМ
и приборами ОВЕН.") - подскажите как оценивать данный параметр то есть как представить время измерения в нормальном временном представлении например 11:15:40 (час:мин:сек). В С++ есть тип time_t или структура tm с ними все понятно , а вот как оценить время через тип int непонятно. Помогите пожалуйста!

Дмитрий Егоренков
25.06.2009, 12:25
ну если у вас есть описание протокола, вам стоит внимательно перечитать п. 5.1.6 "Составной тип данных с информацией о времени".

время измерения -- величина относительная, используемая для вполне определенных целей.

Ярослав
08.10.2009, 08:58
Чтоб не плодить новую тему, напишу здесь.
Хочу работать с модулем МДВВ по протоколу ОВЕН через библиотеки Owen io lib. Какие функции использовать для чтения записи при работе с данным модулем?

Дмитрий Егоренков
09.10.2009, 11:40
http://www.owen.ru/forum/showpost.php?p=8018&postcount=17

bango
03.03.2010, 12:03
Уважаемые разработчики в вашей библиотеке owen_io_lib есть все кроме примеров работы с МДВВ не моглибы ,ВЫ, выложить примеры на Си. :confused:

Дмитрий Егоренков
03.03.2010, 13:00
уважаемые пользователи, не могли бы вы для начала читать ветку, в которую пишете?

http://owen.ru/forum/showpost.php?p=28809&postcount=4

bango
05.03.2010, 00:23
Привет, не давно купили прибор МДВВ не могу разобраться почему возникает ошибка при компиляции пишу на Builder 6
[C++ Warning] Unit1.cpp(184): W8029 Temporary used for parameter 'value'
[C++ Error] Unit1.cpp(184): E2226 Extra parameter in call
Вот код
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if (TabControl1->TabIndex ==0)
{
//МДВВ
int res,tm;
float value;
Memo1->Clear();// очистка окна

res = ReadUInt(16,ADRTYPE_8BIT,"rEAd",value,tm,-1);// ошибка!
if(res >= 0)
{
Memo1->Lines->Add(IntToStr(1) + " - " + FloatToStr(value));
}
else
{
Memo1->Lines->Add(IntToStr(1) + " - Ошибка чтения");
}
}
}
что не так:confused:

Дмитрий Егоренков
05.03.2010, 11:42
ReadIEEE32(16, ADRTYPE_8BIT, "r.ОЕ", value, tm, -1)

bango
05.03.2010, 12:08
Благодарю компиляция прошла нормальна на работе проверю но вот возникает такой вопрос в TEST_LIB.CCP написано "rEAd" а у вас "r.ОЕ" почему.

Дмитрий Егоренков
05.03.2010, 12:16
документацию на прибор пробовали читать?

bango
09.03.2010, 18:36
Привет, у меня возник вопрос на форуме писали.

Как правильно установить библиотеку Owen_io для работы в C++Builder

Ответ

Скопируйте owen_io.dll, owen_io_b.lib, owen_io.h в папку проекта.
В с++Билдере в проект добавьте библиотеку(owen_io_b.lib) через Add to project, затем включите экспорт и файл заголовка библиотеки директивами
#define OWEN_IO_EXPORTS
#include "owen_io.h"
В ClassExplorer в ветке функций появится набор функций библиотеки.
Сам экспорт скопипастите из примера от "ОВЕН"

Я делал вот так компилировалось все без проблем недавно скачал новые файлы в папке Lib вложенны файлы owen_io.lib owen_io.dll owen_io.h когда я их подключаю появляются ошибки при компиляции что я делаю не так и вот это что zip.exe в документации нет никаких разъяснений что это такое. Объясните как все это правильно подключить плиз. :confused:

bango
10.03.2010, 21:00
Ну хоть кто не будь помогите долбаюсь уже неделю прога молчит ты хоть тресни и установка выхода компилируется с ошибкой пишу в builder 6 прибор работает 100% проверял в конфигураторе.:confused:

Дмитрий Егоренков
11.03.2010, 11:55
помогаю.

забудьте c++ builder как страшный сон и возьмите нормальную среду разработки. например, Visual C# Express Edition.

научитесь читать и понимать прочитанное -- руководство по эксплуатации, справку к библиотеке, сообщения компилятора.

обращаясь за помощью сообщайте всю релевантную информацию. у меня билдера нет, и ставить его чтобы узнать ошибки компиляции я не стану.

если у вас проблема только с этой строчкой: res = WriteIEEE32(16+i,ADRTYPE_8BIT,"r.ОЕ",value,tm,-1);, то в ней параметр tm лишний. что, впрочем, легко было узнать из справки.

и еще обновите библиотеку с сайта.

bango
11.03.2010, 17:56
забудьте c++ builder как страшный сон и возьмите нормальную среду разработки. например, Visual C# Express Edition.:eek:

Объясните почему. Мне на форуме по builder(у) советовали удалить библиотеку и написать с использованием объектных классов и функций WINAPI а еще советовали переходить на python и мотивировал тем что язык свободно распространяемый.
А вы чем мотивируете


забудьте c++ builder как страшный сон:confused:

это не аргумент.

bango
11.03.2010, 18:26
и еще обновите библиотеку с сайта.
Я вот выше писал насчет новой библиотеке не получается прикрутить компилятор ругается что делать не знаю вот поэтому пользуюсь старой я недавно начал изучать builder вот по этому прошу сильно не ругаться.

Дмитрий Егоренков
11.03.2010, 18:36
это не аргумент.

почему не аргумент? мне билдер и делфи только в кошмарах снятся.

мотивирую тем, что это современная, _бесплатная_ (а не краденая, как ваш билдер) среда с потрясающими средствами для написания кода и разработки пользовательского интерфейса и исключительно качественной и объемной библиотекой классов.

программы на C# пишутся проще, быстрее и содержат меньше ошибок даже у разработчиков с низкой квалификацией. как раз то, что вам нужно.

а на форумы по билдеру не ходите -- там только религиозные фанатики.

bango
11.03.2010, 18:54
попробую с# объясните по пунктам как подключить библиотеку овен

Дмитрий Егоренков
11.03.2010, 20:18
вот вам целый пример, который делает примерно то, что и программа на билдере. файл owen_io.dll надо положить или в windows\system32 или в папку проека bin\Debug

bango
11.03.2010, 20:31
огромное спасибо буду теперь качать с#

bango
09.06.2010, 19:47
Первая программа на С# не получается сделать опрос входов с портом прокатила, а с опросом входов не прокатило помогите решить проблему.


//открытие ком порта
if (start)
{ //закрытие ком порта
NativeMethods.ClosePort();
//установить цвет кнопки
button1.BackColor = System.Drawing.Color.Lime;
}
else
{
ConnectionError res = (ConnectionError)NativeMethods.OpenPort(
mdvv_com_port_num, mdvv_speed, mdvv_parity, mdvv_bits,
mdvv_stop_bits, (int)ConverterType.Auto);
if (res != ConnectionError.Ok)
{
MessageBox.Show("Ошибка открытия порта: " + res.ToString());
}
//установить цвет кнопки
button1.BackColor = System.Drawing.Color.Crimson;
}
start = !start;
}
не работает так как хочется

private void buttonReadRCN_Click(object sender, EventArgs e)
{
if (OprosCn)
{
textBoxMemo.Text = "";
//установить цвет кнопки
buttonReadRCN.BackColor = System.Drawing.Color.Lime;
}
else
{
IntPtr name = Marshal.StringToCoTaskMemAnsi("r.Cn");
int bitMask = 0;
ConnectionError res = (ConnectionError)NativeMethods.ReadUInt(
deviceAddress, 0, name, ref bitMask, -1);
if (res == ConnectionError.Ok)
{
string inputs = string.Empty;
for (int i = 12; --i >= 0; )
{
if (((1 << i) & bitMask) != 0)
inputs += '1';
else
inputs += '0';
}
textBoxMemo.Text = inputs;
}
else
MessageBox.Show("Ошибка чтения r.Cn: " + res.ToString());
Marshal.FreeCoTaskMem(name);
//установить цвет кнопки рабочий
buttonReadRCN.BackColor = System.Drawing.Color.Crimson;
}
OprosCn = !OprosCn;
}

Дмитрий Егоренков
10.06.2010, 16:58
в чем, собственно проблема?

bango
10.06.2010, 19:02
Я хочу сделать чтобы входы опрашивались постоянно при нажатой кнопки buttonReadRCN , а при отжатой поле должно быть пустое. Этот код опрашивает один раз входы и счетчик останавливается как его перезапустить.

Дмитрий Егоренков
11.06.2010, 12:48
правильный путь -- завести отдельный поток, и опрашивать прибор в нем.
простой путь -- опрашивать прибор по таймеру, проверяя состояние кнопки.

bango
11.06.2010, 18:04
попробую второй вариант, так как первый вариант даже не представляю, как это делать.

bango
22.06.2010, 19:44
По вашему совету подключил таймер но данные не обновляются в чем проблема не пойму помогите разобраться.


//опрос входов МДВВ
private void buttonReadRCN_Click(object sender, EventArgs e)
{
if (OprosCn)
{
//стереть строку
textBoxMemo.Text = "";
//установить цвет кнопки отключено
buttonReadRCN.BackColor = System.Drawing.Color.Lime;
//Стоп таймера
timer1.Stop();
}
else
{
IntPtr name = Marshal.StringToCoTaskMemAnsi("r.Cn");
int bitMask = 0;
ConnectionError res = (ConnectionError)NativeMethods.ReadUInt(
deviceAddress, 0, name, ref bitMask, -1);

if (res == ConnectionError.Ok)
{
string inputs = string.Empty;
for ( i = 12; --i >= 0; )
{
if (((1 << i) & bitMask) != 0)
inputs += '1';
else
inputs += '0';
}

textBoxMemo.Text = inputs;

}
else
MessageBox.Show("Ошибка чтения r.Cn: " + res.ToString());
Marshal.FreeCoTaskMem(name);
//установить цвет кнопки рабочий
buttonReadRCN.BackColor = System.Drawing.Color.Crimson;
//Запуск таймера
timer1.Start();
}
OprosCn = !OprosCn;
}
private void timer1_Tick(object sender, EventArgs e)
{
if (i==0)
{
i = 12;
}
this.Invalidate();
}
}

Дмитрий Егоренков
23.06.2010, 11:38
так работать не будет. buttonReadRCN_Click() вызывается один раз по нажатию кнопки.

опрос надо вставить в timer1_Tick() и делать его в цикле по флагу, а сам флаг выставлять в buttonReadRCN_Click().

dmitriy515997
03.09.2014, 15:51
Здравствуйте. Вопрос по WriteWord(16, 0, “r-S”, 0, 0) – команда останавливает регулирование на ТРМ151, в вот WriteWord(16, 0, “r-S”, 1, 0) его не запускает (а должна по tags). Пишу на VBA для Excel. Прибор сконфигурирован с разрешением останова и запуска.

dmitriy515997
03.09.2014, 16:31
Посоветуйте куда обратиться лучше по ТРМ151 + owen_io.dll.

dmitriy515997
04.09.2014, 14:57
Ну а с Windows8 owen_io.dll работает?

Илья Глан
04.09.2014, 15:48
Нет принципиальной разницы ТРМ-151 или другой прибор. Сначала изучаете список оперативныйх параметров прибора http://www.owen.ru/documents/94181849, выбираете что хотите читать/писать, дальше читаете хелп на библиотеку. Можно посмотреть примеры по программированию МДВВ в этой ветке. Не вижу причин библиотеке не работать с Win8.

dmitriy515997
04.09.2014, 16:10
У меня свой рабочий проект регистратора показаний с двух каналов ТРМ151, пишется всё в таблицу Excel с интервалом 1с. Выходной мощностью (4-20мА) можно управлять только в режиме Stop (это 0 в функции WriteWord параметр r-S), соответственно 1 запускает прибор. Только этого не происходит. Функции записаны выше одна точно правильно (потому как работает). Понимаю вопрос узкий. Но кроме как перечитать справку. Мож кто ещё сталкивался с подобной ситуацией. Очень хотся и запускать прибор по нажатью кнопки на экране монитора. Спасибо в любом случае.

clawham
30.12.2020, 21:23
Примеры не качаются - где можно взять пример опроса ПЧВ2 прогой c# ?

this
13.04.2021, 15:04
Здравствуйте!
Функция SelectPort. Передаю ей параметром (номер порта) любое значение (int естественно), даже не существующих в системе портов. В ответ всегда получаю "0", т.е. функция отработала успешно. Т.е. данная функция не проверяет корректность введенного порта?

Ельцов Андрей
24.04.2021, 13:58
Коллеги пользуйтесь новой библиотекой!
owenionet : https://owen.ru/product/biblioteka_win_dll