下面是我写的程序
private void SetText(string text)
if (this.txtData.InvokeRequired)
{
SetTextCallback d = new SetTextCallback(SetText);
this.Invoke(d, new object[] { text });
}
else
{
this.txtData.Text = text;
}
}
text就是我接收到的数据,为string类型。里面有8个字节数据,包含6个数字,一个小数点位,一个指示灯的数据。其中每个数据都是倒过来的,比如说本来仪器显示1234,可是接收到以后就成了4321了,我现在想把它改过来,在网上找了一个vb的源码
'------------------------------------------------read data-----------------------------------------------
NumArray(1) = Chr(StringTemp(6)) '6个字节的数据位
NumArray(2) = Chr(StringTemp(5))
NumArray(3) = Chr(StringTemp(4))
NumArray(4) = Chr(StringTemp(3))
NumArray(5) = Chr(StringTemp(2))
NumArray(6) = Chr(StringTemp(1))
NumArray(0) = StringTemp(8) '提取第9字节 数据的正负及小数点的位置
LightStatus = StringTemp(7) '提取第8字节 指示灯点亮状态
'-------------------------------------------------end---------------------------------------------------
'---------------------------------------------Judge Dot-------------------------------------------------
DotPosition = 8 - (NumArray(0) And &HF&)
'-------------------------------------------------end---------------------------------------------------- If DotPosition < 2 Or DotPosition > 7 Then
Exit Sub
End If'---------------------------------------------Judge Negative--------------------------
If NumArray(0) > 127 Then
NumArray(0) = "-"
Else
NumArray(0) = " "
End If'-------------------------------------------------end----------------------------------------------------
For i% = 7 To DotPosition Step -1
NumArray(i) = NumArray(i - 1)
Next i
NumArray(DotPosition) = "."
iZero = 1
While ZeroSwitch = False
If NumArray(iZero) <> "0" Then
ZeroSwitch = True
Else
If NumArray(iZero + 1) <> "." Then
NumArray(iZero) = " "
iZero = iZero + 1
Else
ZeroSwitch = True
End If
End If
Wend
Temp$ = NumArray(0) + NumArray(1) + NumArray(2) + NumArray(3) + NumArray(4) + NumArray(5) + NumArray(6) + NumArray(7)
TextShow.Text = Temp
我看不大懂上面的意思,想请各位大侠帮帮我,最好能说得具体点,麻烦各位了
private void SetText(string text)
if (this.txtData.InvokeRequired)
{
SetTextCallback d = new SetTextCallback(SetText);
this.Invoke(d, new object[] { text });
}
else
{
this.txtData.Text = text;
}
}
text就是我接收到的数据,为string类型。里面有8个字节数据,包含6个数字,一个小数点位,一个指示灯的数据。其中每个数据都是倒过来的,比如说本来仪器显示1234,可是接收到以后就成了4321了,我现在想把它改过来,在网上找了一个vb的源码
'------------------------------------------------read data-----------------------------------------------
NumArray(1) = Chr(StringTemp(6)) '6个字节的数据位
NumArray(2) = Chr(StringTemp(5))
NumArray(3) = Chr(StringTemp(4))
NumArray(4) = Chr(StringTemp(3))
NumArray(5) = Chr(StringTemp(2))
NumArray(6) = Chr(StringTemp(1))
NumArray(0) = StringTemp(8) '提取第9字节 数据的正负及小数点的位置
LightStatus = StringTemp(7) '提取第8字节 指示灯点亮状态
'-------------------------------------------------end---------------------------------------------------
'---------------------------------------------Judge Dot-------------------------------------------------
DotPosition = 8 - (NumArray(0) And &HF&)
'-------------------------------------------------end---------------------------------------------------- If DotPosition < 2 Or DotPosition > 7 Then
Exit Sub
End If'---------------------------------------------Judge Negative--------------------------
If NumArray(0) > 127 Then
NumArray(0) = "-"
Else
NumArray(0) = " "
End If'-------------------------------------------------end----------------------------------------------------
For i% = 7 To DotPosition Step -1
NumArray(i) = NumArray(i - 1)
Next i
NumArray(DotPosition) = "."
iZero = 1
While ZeroSwitch = False
If NumArray(iZero) <> "0" Then
ZeroSwitch = True
Else
If NumArray(iZero + 1) <> "." Then
NumArray(iZero) = " "
iZero = iZero + 1
Else
ZeroSwitch = True
End If
End If
Wend
Temp$ = NumArray(0) + NumArray(1) + NumArray(2) + NumArray(3) + NumArray(4) + NumArray(5) + NumArray(6) + NumArray(7)
TextShow.Text = Temp
我看不大懂上面的意思,想请各位大侠帮帮我,最好能说得具体点,麻烦各位了
NumArray(1) = Chr(StringTemp(6)) '6个字节的数据位
NumArray(2) = Chr(StringTemp(5))
NumArray(3) = Chr(StringTemp(4))
NumArray(4) = Chr(StringTemp(3))
NumArray(5) = Chr(StringTemp(2))
NumArray(6) = Chr(StringTemp(1))
NumArray(0) = StringTemp(8) '提取第9字节 数据的正负及小数点的位置
LightStatus = StringTemp(7) '提取第8字节 指示灯点亮状态
前面一段就是把数据倒过来,先把接收到的数据转成数组,在逐一赋给另一数组同时把顺序倒置,下面就开始处理数据了。
If NumArray(0) > 127 Then
NumArray(0) = "-"
Else
NumArray(0) = " "
End If 第1个字符(字符数组元素0)表示符号,是负数就给“-”,是正数就给空格。
{
public static int LightStatus=0;
static public string ProcessReadData(int[] StringTemp)
{
char[] NumArray = new char[8];
// ------------------------------------------------read data-----------------------------------------------
// NumArray(1) = Chr(StringTemp(6)) '6个字节的数据位
// NumArray(2) = Chr(StringTemp(5))
// NumArray(3) = Chr(StringTemp(4))
// NumArray(4) = Chr(StringTemp(3))
// NumArray(5) = Chr(StringTemp(2))
// NumArray(6) = Chr(StringTemp(1))
for (int i = 1; i < 7; i++)
NumArray[7 - i] = (byte)StringTemp[i];
// NumArray(0) = StringTemp(8) '提取第9字节 数据的正负及小数点的位置
// LightStatus = StringTemp(7) '提取第8字节 指示灯点亮状态
LightStatus = StringTemp[7];
NumArray[0] = (byte)StringTemp[8];
//'-------------------------------------------------end---------------------------------------------------
//'---------------------------------------------Judge Dot-------------------------------------------------
// DotPosition = 8 - (NumArray(0) And &HF&)
int DotPosition = 8 - (NumArray[0] & 0x000f);
//'-------------------------------------------------end----------------------------------------------------
// If DotPosition < 2 Or DotPosition > 7 Then
// Exit Sub
// End If
if (DotPosition < 2 || DotPosition > 7)
return null;
//'---------------------------------------------Judge Negative--------------------------
// If NumArray(0) > 127 Then
// NumArray(0) = "-"
// Else
// NumArray(0) = " "
// End If
NumArray[0] = NumArray[0] > 127 ? "-" : " ";
//'-------------------------------------------------end----------------------------------------------------
//For i% = 7 To DotPosition Step -1
// NumArray(i) = NumArray(i - 1)
// Next i
for (int i = 7; i > DotPosition; i--)
NumArray[i] = NumArray[i - 1];
// NumArray(DotPosition) = "."
NumArray[DotPosition] = '.';
// iZero = 1
int iZero = 1;
bool ZeroSwitch = false;
// While ZeroSwitch = False
while (!ZeroSwitch)
{
// If NumArray(iZero) <> "0" Then
// ZeroSwitch = True
if (NumArray[iZero] != '0')
ZeroSwitch = true;
// Else
// If NumArray(iZero + 1) <> "." Then
// NumArray(iZero) = " "
// iZero = iZero + 1
else if (NumArray[iZero + 1] != '.')
NumArray[iZero++] = ' ';
// Else
// ZeroSwitch = True
else
ZeroSwitch = true;
// End If
// End If
// Wend
}
// Temp$ = NumArray(0) + NumArray(1) + NumArray(2) + NumArray(3) + NumArray(4) + NumArray(5) + NumArray(6) + NumArray(7)
// TextShow.Text = Temp
return new string(NumArray);
} static void Main()
{
}
}
看了这段代码,不禁感叹当年放弃BASIC是对的。