本帖最后由 沉默 于 2011-8-18 10:28 编辑
//用C#写的发送int部分的源代码,不少是抄别人的,所以有些也搞不太懂
//comm是串口
//rawData数组是所要发送的串口信号,5-8位是所要发送的int数值
//sendRawData方法是rawData加上两位数据长度后发送至串口
public byte[] sendRawData(byte[] rawData)
{
const int byteSize = 256;
Byte[] sendLength = new Byte[rawData.Length+2];
sendLength[0] = (byte)(rawData.Length % byteSize);
sendLength[1] = (byte)(rawData.Length / byteSize);
for (int i = 0; i < rawData.Length; i++)
{
sendLength[i + 2] = rawData;
}
comm.Write(sendLength, 0, sendLength.Length);
return sendLength;//为了格式,要有个返回值乱填的,发送字符串的时候无影响 ,应该不是这里的问题
}
public byte[] sendInt(int data)
{
const int mask = 0xff;
//串口所要发送的
byte[] rawData = { 0x00, 0x09, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00 }; // 4 bytes data
//rawData[2] 数组的第三个值,也就是邮箱,偷懒就用一号邮箱
rawData[2] = (byte)(0);
//8位8位的取值依次放入数组rawData的5-8位
//错误应该是在这里
for (int i = 0; i < 4; i++)
{
rawData[4+i] = (byte)(data & mask);
data >>= 8;
}
return sendRawData(rawData);
}
|