信捷PLC与通讯问题
最近在做C#与信捷PLC方面的东西,寄存器D1002里的数值为浮点数65535,我用C#写了一段通讯代码,如下:
bool bolRead = false;
float fltData = 0;
try
{
DateTime dtNow;
TimeSpan tsOut;
byte[] bytBuffer = new byte[6];
bytBuffer[0] = 0x01;
bytBuffer[1] = 0x03;
byte[] bytAddr = stringToBytes(intAddr.ToString("X2").PadLeft(4, '0'));
bytBuffer[2] = bytAddr[0];
bytBuffer[3] = bytAddr[1];
bytBuffer[4] = 0x00;
bytBuffer[5] = 0x02;
byte[] bytCRC = CRC16(bytBuffer);
serPort.DiscardInBuffer();
serPort.Write(bytCRC, 0, bytCRC.Length);
dtNow = DateTime.Now;
Thread.Sleep(50);
int intCunt = serPort.BytesToRead;
if (intCunt > 0)
{
tsOut = DateTime.Now - dtNow;
if (tsOut.Milliseconds <= intTimeOut)
{
byte[] bytRec = new byte[intCunt];
int intRead = serPort.Read(bytRec, 0, bytRec.Length);
if (intRead >= 7)
{
byte[] bytCopy = new byte[4];
if (bytRec[1] == (byte)3 && bytRec[2] == (byte)2)
{
Array.Copy(bytRec, 3, bytCopy, 0, 2);
string strRece = string.Empty;
for (int i = 0; i < bytCopy.Length; i++)
{
byte bytBuff = bytCopy[i];
strRece += bytBuff.ToString("X").PadLeft(2, '0');
}
//string strDsc = strRece.Substring(4, 4) + strRece.Substring(0, 4);
fltData = BitConverter.ToSingle(bytCopy, 0);
bolRead = true;
PLC应该返回的数据为FFFF才对,但是只有FF00,请问大神么,我错在哪里?