上位机软件下发数据格式为:0A5H,0E2H,2H,数据1-数据10(BCD码),和校验值。
数据1-数据10为:日标量高两位、低两位、秒时量高两位、低两位、达成量高两位、低两位、不良量高两位、低两位、计时周期高两位、低两位。
我测试代码如下(serialport写的):
private void button1_Click(object sender, EventArgs e)
{
byte[] sendBuf;
sendBuf = new byte[14]; byte kt = 0xa5;
byte bz = 0x72;
byte dz = 0x02;
byte s1 = 00000000;
byte s2 = 00000000;
byte s3 = 00000000;
byte s4 = 00000000;
byte s5 = 00000000;
byte s6 = 00000000;
byte s7 = 00000000;
byte s8 = 00000000;
byte s9 = 00000000;
byte s10 = 00000000;
//byte jy =Convert.ToByte( kt ^ bz ^ dz ^ s1 ^ s2 ^ s3 ^ s4 ^ s5 ^ s6 ^ s7 ^ s8 ^ s9 ^ s10);
byte jy = Convert.ToByte(kt | bz | dz | s1 | s2 | s3 | s4 | s5 | s6 | s7 | s8 | s9 | s10); //校验是累加和校验,但不知道对不对 sendBuf[0] = kt ;
sendBuf[1] = bz ;
sendBuf[2] = dz ;
sendBuf[3] = s1 ;
sendBuf[4] = s2 ;
sendBuf[5] = s3 ;
sendBuf[6] = s4 ;
sendBuf[7] = s5 ;
sendBuf[8] = s6 ;
sendBuf[9] = s7 ;
sendBuf[10] = s8 ;
sendBuf[11] = s9 ;
sendBuf[12] = s10 ;
sendBuf[13] = jy;
sp1.Write(sendBuf, 0, sendBuf.Length);
}但发送后,下位机显示一点不变,请高手指教该如何写,谢谢。
数据1-数据10为:日标量高两位、低两位、秒时量高两位、低两位、达成量高两位、低两位、不良量高两位、低两位、计时周期高两位、低两位。
我测试代码如下(serialport写的):
private void button1_Click(object sender, EventArgs e)
{
byte[] sendBuf;
sendBuf = new byte[14]; byte kt = 0xa5;
byte bz = 0x72;
byte dz = 0x02;
byte s1 = 00000000;
byte s2 = 00000000;
byte s3 = 00000000;
byte s4 = 00000000;
byte s5 = 00000000;
byte s6 = 00000000;
byte s7 = 00000000;
byte s8 = 00000000;
byte s9 = 00000000;
byte s10 = 00000000;
//byte jy =Convert.ToByte( kt ^ bz ^ dz ^ s1 ^ s2 ^ s3 ^ s4 ^ s5 ^ s6 ^ s7 ^ s8 ^ s9 ^ s10);
byte jy = Convert.ToByte(kt | bz | dz | s1 | s2 | s3 | s4 | s5 | s6 | s7 | s8 | s9 | s10); //校验是累加和校验,但不知道对不对 sendBuf[0] = kt ;
sendBuf[1] = bz ;
sendBuf[2] = dz ;
sendBuf[3] = s1 ;
sendBuf[4] = s2 ;
sendBuf[5] = s3 ;
sendBuf[6] = s4 ;
sendBuf[7] = s5 ;
sendBuf[8] = s6 ;
sendBuf[9] = s7 ;
sendBuf[10] = s8 ;
sendBuf[11] = s9 ;
sendBuf[12] = s10 ;
sendBuf[13] = jy;
sp1.Write(sendBuf, 0, sendBuf.Length);
}但发送后,下位机显示一点不变,请高手指教该如何写,谢谢。
我这样写 byte jy = Convert.ToByte(kt + bz + dz + s1 + s2 + s3 + s4 + s5 + s6 + s7 + s8 + s9 + s10);会报错,报:值对于无符号的字节太大或太小。
这样呢? byte jy = (byte)(kt + bz + dz + s1 + s2 + s3 + s4 + s5 + s6 + s7 + s8 + s9 + s10)