public static bool ReadRegisters(ISerialPortIo serialPort) { byte[] AddressBytes1 = BitConverter.GetBytes(2); //Current Speed At Address 2 byte[] AddressBytes2 = BitConverter.GetBytes(36); //Input Contact Status At Address 36 byte[] AddressBytes3 = BitConverter.GetBytes(6); //Single -Turn Data L At Address 46 byte[] AddressBytes4 = BitConverter.GetBytes(8); //Single -Turn Data H At Address 48 byte[] AddressBytes5 = BitConverter.GetBytes(22); //Current Torque At Address 22 //byte[] AddressBytes6 = BitConverter.GetBytes(38); //Output Contact Status At Address 38 byte[] Command = new byte[15]; Command[0] = 0x00; //Node ID Command[1] = 0x6A; //Function Command[2] = 0x0A; //Byte Count Command[3] = AddressBytes1[1]; //Starting Address Hi Command[4] = AddressBytes1[0]; //Strating Address Low Command[5] = AddressBytes2[1]; //Starting Address Hi Command[6] = AddressBytes2[0]; //Strating Address Low Command[7] = AddressBytes3[1]; //Starting Address Hi Command[8] = AddressBytes3[0]; //Strating Address Low Command[9] = AddressBytes4[1]; //Starting Address Hi Command[10] = AddressBytes4[0]; //Strating Address Low Command[11] = AddressBytes5[1]; //Starting Address Hi Command[12] = AddressBytes5[0]; //Strating Address Low Command[13] = 0x00; //CRC Hi Command[14] = 0x00; //CRC Low byte[] array = BitConverter.GetBytes(ModRTU_CRC(Command, 13)); Command[13] = array[0]; //CRC Hi Command[14] = array[1]; //CRC Low serialPort.DiscardInBuffer(); serialPort.DiscardOutBuffer(); bool result = serialPort.WriteWaitResponse(Command, 0, 15, 15); System.Diagnostics.Debug.WriteLine("ReadRegisters Thread Id: " + System.Threading.Thread.CurrentThread.ManagedThreadId); return result; }