2016-01-27 902 views
1

我在Visual Studio中使用NModbus庫編寫了一個簡單的代碼。在c#中使用Nmodbus的Modbus RTU

下面是代碼

private void button1_Click(object sender, EventArgs e) 
{ 
    using (SerialPort port = new SerialPort("COM3")) 
    { 
     // configure serial port 
     port.BaudRate = 57600; 
     port.DataBits = 8; 
     port.Parity = Parity.Even; 
     port.StopBits = StopBits.One; 
     port.Open(); 

     // create modbus master 
     IModbusSerialMaster master = ModbusSerialMaster.CreateRtu(port); 

     byte slaveId = byte.Parse(Slave.Text); ; 
     ushort startAddress = ushort.Parse(StrtAdd.Text); ; 
     //ushort[] registers = new ushort[] { 1, 2, 3 }; 
     // ushort[] registers = new ushort[] { 01, 05, 15 }; 
     // write three registers 
     // master.WriteMultipleRegisters(slaveId, startAddress, registers); 
     ushort[] holding_register = master.ReadHoldingRegisters(slaveId, startAddress, 1); 

     label3.Text = Convert.ToString(holding_register); 
    } 

現在我在lable3得到的結果是System.UInt16[]。如何顯示來自保持寄存器的數據並將其顯示在標籤上。

+1

所以'label3.Text = Convert.ToString(holding_register [0]);'不給你的結果呢? – mrsargent

+0

我現在感覺很尷尬。我完全忘了它是陣列。傻我 – SPandya

回答

2

嘗試label3.Text = Convert.ToString(holding_register[0]);

+0

瞭解它..從我身邊的silly錯誤忘記了陣列。非常感謝.. – SPandya