PDA

Просмотр полной версии : Универсальная функция обмена с приборами 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;
}

folot
19.06.2009, 05:25
покажите пожалуйста примеры чтения и записи регистров выходов МВУ

Дмитрий Егоренков
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();

folot
19.06.2009, 16:24
большое спасибо. все работает.

folot
09.09.2009, 06:04
покажите пожалуйста примеры чтения измеренных значений на входах мва