2012-06-28 1 views
0

Я работаю над ut ubox vs 2000 ecg machine. Эта машина ecg транслирует свои данные в форме массива байтов как в локальной сети (LAN), приведенной ниже.ut ubox vs 2000 ecg machine Значения данных

Как я могу получить значение волны ecg из этого массива.

Мой код такой, как показано ниже. Но я не могу получить фактическое значение.

byte[] tst = {0xFF, 0xCF, 0xFC, 0xFF, 0xDF, 0xFE, 0xFF, 0xEF, 0xFD, 0xFF, 0xCF, 0xFC, 0xFF, 0xFF, 0xFE, 0xFF, 0xEF, 0xFD, 0xFF, 0xCF, 0xFC, 0xFF, 0xDF, 0xFE, 0xFF, 0xEF, 0xFD, 0xFF, 0xFF, 0xFC, 0xFF, 0xDF, 0xFE, 0xFF, 0xEF, 0xFD, 0xFF, 0xCF, 0xFC, 0xFF, 0xDF, 0xFE, 0xFF, 0xFF, 0xFD, 0xFF, 0xCF, 0xFC, 0xFF, 0xDF, 0xFE, 0xFF, 0xEF, 0xFD, 0xFF, 0xCF, 0xFC, 0xFF, 0xFF, 0xFE, 0xFF, 0xEF, 0xFD, 0xFF, 0xCF, 0xFC, 0xFF, 0xDF, 0xFE, 0xFF, 0xEF, 0xFD, 0xFF, 0xFF, 0xFC, 0xFF, 0xDF, 0xFE, 0xFF, 0xEF, 0xFD, 0xFF, 0xCF, 0xFC, 0xFF, 0xDF, 0xFE, 0xFF, 0xFF, 0xFD, 0xFF, 0xCF, 0xFC, 0xFF, 0xDF, 0xFE, 0xFF, 0xEF, 0xFD, 0xFF, 0xCF, 0xFC, 0xFF, 0xFF, 0xFE, 0xFF, 0xEF, 0xFD, 0xFF, 0xCF, 0xFC, 0xFF, 0xDF, 0xFE, 0xFF, 0xEF, 0xFD, 0xFF, 0xFF, 0xFC, 0xFF, 0xDF, 0xFE, 0xFF, 0xEF, 0xFD, 0xFF, 0xCF, 0xFC, 0xFF, 0xDF, 0xFE, 0xFF, 0xFF, 0xFD, 0xFF, 0xCF, 0xFC, 0xFF, 0xDF, 0xFE, 0xFF, 0xEF, 0xFD, 0xFF, 0xCF, 0xFC, 0xFF, 0xFF, 0xFE, 0xFF, 0xEF, 0xFD, 0xFF, 0xCF, 0xFC, 0xFF, 0xDF, 0xFE, 0xFF, 0xEF, 0xFD, 0xFF, 0xFF, 0xFC, 0xFF, 0xDF, 0xFE, 0xFF, 0xEF, 0xFD, 0xFF, 0xCF, 0xFC, 0xFF, 0xDF, 0xFE, 0xFF, 0xFF, 0xFD, 0xFF, 0xEF, 0xFE, 0xFF, 0xEF, 0xFE, 0xFF, 0xEF, 0xFE, 0xFF, 0xEF, 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xEF, 0xFE, 0xFF, 0xEF, 0xFE, 0xFF, 0xEF, 0xFE, 0xFF, 0xEF, 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xEF, 0xFE, 0xFF, 0xEF, 0xFE, 0xFF, 0xEF, 0xFE, 0xFF, 0xEF, 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xEF, 0xFE, 0xFF, 0xEF, 0xFE, 0xFF, 0xEF, 0xFE, 0xFF, 0xEF, 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xEF, 0xFE, 0xFF, 0xEF, 0xFE, 0xFF, 0xEF, 0xFE, 0xFF, 0xEF, 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xEF, 0xFE, 0xFF, 0xEF, 0xFE, 0xFF, 0xEF, 0xFE, 0xFF, 0xEF, 0xFE, 0xFF, 0xFF, 0xFE }; 

string strresult = ""; 
for (int j = 0; j < tst.Length-1; j+=2) 
{ 
    strHex = String.Format("{0:x2}", tst[j]); 
    strHex += String.Format("{0:x2}", tst[j + 1]); 
    strresult = strresult + "," + short.Parse(strHex, System.Globalization.NumberStyles.HexNumber); 
} 

Console.WriteLine(strresult); 

ответ

0

Итак, вы хотите преобразовать массив байтов (8 бит) в массив слов (16 бит)?

Попробуйте BitConverter.ToUInt() метод, он занимает два байта из массива и возвращает int16 аку короткого

for (int j = 0; j < tst.Length-1; j+=2){ 
    strresult = strresult + "," + BitConverter.ToUInt16(tst, j).toString(); 
} 

Выберите предпочтительный метод (ToUint16 или toInt16 в зависимости от подписанных или значений без знака и следить за little or big endianess, вы возможно, придется в какой-то момент переключить порядок байтов.

(код не проверен для синтаксиса)

Смежные вопросы