Возвратите вектор значений сигналов
int xPCGetSignals(intport
, intnumSignals
, const int *signals
, double *values
);
| Введите значение, возвращенное функцией xPCOpenTcpIpPort. |
| Введите номер сигналов, которые будут получены (то есть, количество значений в |
| Введите список чисел сигнала, которые будут получены. |
| Возвращенные значения хранятся в двойном массиве |
Если функция завершает выполнение, не обнаруживая ошибку, это возвращает 0
. Если функция обнаруживает ошибку, она возвращает -1
.
Функция xPCGetSignals
является векторной версией функции xPCGetSignal. Эта функция возвращает значения вектора сигналов (до 1000
) с такой скоростью, как это может получить их. Функция получает некоторые значения сигналов в одном временном шаге и более поздние сигналы в другом. Чтобы получить значения сигналов в одном временном шаге, задайте осциллограф типа SCTYPE_HOST
и используйте xPCScGetData. xPCGetSignal, делает то же самое для одного сигнала и мог использоваться многократно, чтобы достигнуть того же результата. Однако функция xPCGetSignals
быстрее, и значения сигналов, более вероятно, будут расположены с интервалами тесно вместе. Сигналы преобразованы в, удваивается независимо от фактического типа данных сигнала.
Для signals
сохраните список, который вы предоставляете в целочисленном массиве. Получите числа сигнала с функцией xPCGetSignalIdx.
Чтобы сослаться на данные о сигнальном векторе, а не скалярные значения, передайте вектор индексов для данных сигнала. Например:
/**********************************************************/ /* Assume a signal of width 10, with the blockpath * mySubsys/mySignal and the signal index s1. */ int i; int sigId[10]; double sigVal[10]; /* Signal values are stored here */ /* Get the ID of the first signal */ sigId[0] = xPCGetSignalIdx(port, "mySubsys/mySignal/s1"); if (sigId[0] == -1) { /* Handle error */ } for (i = 1; i < 10; i++) { sigId[i] = sigId[0] + i; } xPCGetSignals(port, 10, sigId, sigVal); /* If no error, sigVal should have the signal values */ /***********************************************************/
Чтобы неоднократно получать сигналы, повторите вызов xPCGetSignals
. Если вы не изменяете sigID
, вызовите xPCGetSignalIdx только однажды.