Просмотр полной версии : Универсальная функция обмена с приборами OwenIO
BaJlenoK
22.05.2009, 09:22
1.Поясните пожалуйта подробнее что означает параметр "param_sz", в справке написано что это "Размер параметра, передается и возвращается"
2. если можно пример чтения или записи любого параметра прибора с использованием этой функции
Дмитрий Егоренков
22.05.2009, 12:14
это размер поля данных протокола ОВЕН.
вот пример:
int ReadInt(int address, const char* name, int index, int& value)
{
unsigned char data[15];
DWORD dataSize = 0;
if (index != -1)
{
data[dataSize++] = (char)((index >> 8) & 0xFF);
data[dataSize++] = (char)(index& 0xFF);
}
int res = OwenIO(address, ADRTYPE_8BIT, 1, (char*)name, (char*)data, &dataSize);
if (res != ERR_OK)
return res;
if (index != -1)
{
dataSize -= 2;
}
_ASSERT(0 < dataSize && dataSize <= 15);
if (0 >= dataSize || dataSize > 15)
return ERR_FORMAT;
value = 0;
for (int i = 0; i < dataSize; ++i)
{
value <<= 8;
value += data[i];
}
return ERR_OK;
}
покажите пожалуйста примеры чтения и записи регистров выходов МВУ
Дмитрий Егоренков
19.06.2009, 12:41
как-то так. функции для работы с параметрами приборов можно посмотреть в файле tas.txt, который поставляется с библиотекой.
int res;
float value;
res = OpenPort(COM_1, spd_9600, prty_NONE, databits_8, stopbit_1,
RS485CONV_AUTO);
// первый канал прибора с адресом 16
res = ReadFloat24(16, ADRTYPE_8BIT, "r.Oe", value, -1);
res = WriteFloat24(16, ADRTYPE_8BIT, "r.Oe", 0.5f, -1);
// второй канал прибора с адресом 16
res = ReadFloat24(16 + 1, ADRTYPE_8BIT, "r.Oe", value, -1);
res = WriteFloat24(16 + 1, ADRTYPE_8BIT, "r.Oe", 0.5f, -1);
ClosePort();
большое спасибо. все работает.
покажите пожалуйста примеры чтения измеренных значений на входах мва
Powered by vBulletin® Version 4.2.3 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot