52 ReadAnyGroup readAnyGroup;
53 for(
auto& pv :
devManager->getAllProcessVariables()) {
54 if(pv->isReadable()) readAnyGroup.add(pv);
56 readAnyGroup.finalise();
59 clock_t start, end, im1, im2, writeTime;
63 float duration1 = 0.0f;
64 devManager->getProcessArray<int32_t>(
"t")->accessChannel(0) = vector<int32_t>{(int32_t)start};
66 while(this->running) {
67 double double_sine =
devManager->getProcessArray<
double>(
"amplitude")->accessChannel(0).at(0) *
68 sin((2 * 3.141) /
devManager->getProcessArray<
double>(
"period")->accessChannel(0).at(0) *
69 devManager->getProcessArray<int32_t>(
"t")->accessChannel(0).at(0));
70 int32_t int_sine = round(double_sine);
72 devManager->getProcessArray<
double>(
"double_sine")->accessChannel(0) = vector<double>{double_sine};
73 devManager->getProcessArray<
double>(
"double_sine")->write();
74 devManager->getProcessArray<int32_t>(
"int_sine")->accessChannel(0) = vector<int32_t>{int_sine};
75 devManager->getProcessArray<int32_t>(
"int_sine")->write();
76 devManager->getProcessArray<ChimeraTK::Boolean>(
"bool")->accessChannel(0) =
77 vector<ChimeraTK::Boolean>{!
devManager->getProcessArray<ChimeraTK::Boolean>(
"bool")->accessChannel(0).at(0)};
78 devManager->getProcessArray<ChimeraTK::Boolean>(
"bool")->write();
79 devManager->getProcessArray<ChimeraTK::Void>(
"void")->write();
80 devManager->getProcessArray<int32_t>(
"t")->accessChannel(0) =
81 vector<int32_t>{(int32_t)((end - start) / (CLOCKS_PER_SEC / 1000))};
82 devManager->getProcessArray<int32_t>(
"t")->write();
84 usleep(
devManager->getProcessArray<int32_t>(
"dt")->accessChannel(0).at(0));
89 for(int32_t i = 1000; i < 65535; i = i + 1000) {
90 string nameDouble =
"testDoubleArray_" + to_string(i);
91 string nameInt =
"testIntArray_" + to_string(i);
92 ProcessArray<double>::SharedPtr testDoubleArray =
devManager->getProcessArray<
double>(nameDouble);
93 ProcessArray<int32_t>::SharedPtr testIntArray =
devManager->getProcessArray<int32_t>(nameInt);
94 for(int32_t k = 0; k < i; k++) {
96 testDoubleArray->accessChannel(0).at(k) = rand() % 6 + 1;
97 testIntArray->accessChannel(0).at(k) = rand() % 6 + 1;
100 testDoubleArray->accessChannel(0).at(k) = rand() % 50 + 10;
101 testIntArray->accessChannel(0).at(k) = rand() % 50 + 10;
105 testDoubleArray->write();
106 testIntArray->write();
108 writeTime += im2 - im1;
112 duration1 = ((float)writeTime / CLOCKS_PER_SEC) * 1000.0f;
113 printf(
"1: %d write passes, duration write: %.3f ms\n", counter, duration1);
115 ProcessArray<double>::SharedPtr testDoubleArray =
devManager->getProcessArray<
double>(
"testDoubleArray_65535");
116 ProcessArray<int32_t>::SharedPtr testIntArray =
devManager->getProcessArray<int32_t>(
"testIntArray_65535");
117 for(int32_t i = 0; i < 65535; i++) {
119 testDoubleArray->accessChannel(0).at(i) = rand() % 6 + 1;
120 testIntArray->accessChannel(0).at(i) = rand() % 6 + 1;
123 testDoubleArray->accessChannel(0).at(i) = rand() % 50 + 10;
124 testIntArray->accessChannel(0).at(i) = rand() % 50 + 10;
128 clock_t tmp2 = clock();
130 testDoubleArray->write();
131 testIntArray->write();
133 clock_t tmp3 = clock();
134 duration1 = ((float)(tmp3 - tmp2) / CLOCKS_PER_SEC) * 1000.0f;
135 printf(
"write pass 2, duration write: %.3f ms\n", duration1);
137 while(readAnyGroup.readAnyNonBlocking().isValid())
continue;