User Ratings
Rate This Project
Login To Rate This Project
User Reviews
-
Great start point for playing with RDM. Doesn't require any expensive stuff. Only problem I had is multiple devices Discovery didn't work, could find only single RDM devices. After some editing of Discovery function I have three devices (just didn't try more, I only have three slaves at hand) successfully found and operating. Here's modified Discovery response parsing which works with multiple slaves on line: if (FT_Read(ftHandle, &RxField, 26, &ByteCnt) == FT_OK) //receive response { i = 0; /* if no response, ByteCnt = 0 */ if (0 < ByteCnt) { /* something received, at least a collision */ res = 1; } if (ByteCnt >= 18) /* minimum length of a full Discovery response, see * RDM specs on dropping 0xFE preamble bytes */ { while ((RxField[i++] != 0xAA) && (i < 26)); //find preamble separator if (i < 20) { res = 1; Form1->LogMemo->Lines->Add("Discovery Response received"); long long tst; tst = (RxField[i] & RxField[i + 1]); tst = (tst << 8) + (RxField[i + 2] & RxField[i+3]); tst = (tst << 8) + (RxField[i + 4] & RxField[i + 5]); tst = (tst << 8) + (RxField[i + 6] & RxField[i + 7]); tst = (tst << 8) + (RxField[i + 8] & RxField[i + 9]); tst = (tst << 8) + (RxField[i + 10] & RxField[i + 11]); if ((LoVal == tst) || (HiVal == tst)) { FoundDev = tst; res = 2; //target identified } } } }