0

私は ut ubox 対 2000 ecg マシンに取り組んでいます。このecgマシンは、以下に示すLAN(ローカルエリアネットワーク)のようにバイト配列形式でデータを転送します。

この配列から心電図の値を取得するにはどうすればよいですか。

私のコードは以下のとおりですが、実際の値を取得できません。

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);
4

1 に答える 1

0

では、バイト配列 (8 ビット) をワード配列 (16 ビット) に変換したいですか?

BitConverter.ToUInt()メソッドを試してください。配列から 2 バイトを取り、int16 別名 short を返します。

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

優先するメソッド (符号付きまたは符号なしの値に応じて toUInt16 または toInt16) を選択し、エンディアンが小さいか大きいかに注意してください。ある時点でバイト オーダーを切り替える必要がある場合があります。

(コードの構文はテストされていません)

于 2012-06-28T11:27:10.327 に答える