2014-03-05 2 views
1

DataGridView에서 데이터를 제공하는 ModbusTCP Slave 응용 프로그램에서 C# 창을 개발합니다. dataGridView에서 데이터를 읽어 들여서 시작하는 메소드를 만듭니다. 현재 듣고있는 데이터를 새로 고칠 수 있어야합니다.Modbus TCP 슬레이브. 데이터 전송

내 방법

void Button1Click(object sender, EventArgs e) 
    { 
     IPAddress address = IPAddress.Parse(tbIP.Text); 
     int port = Convert.ToInt32(tbPort.Text); 
     slaveTcpListener = new TcpListener(address, port); 
     slave = ModbusTcpSlave.CreateTcp(1, slaveTcpListener); 
     DataStore data = new DataStore(); 
      for (int i=0; i<dgV.Rows.Count-1; i++) 
      { 
      slave.DataStore.InputRegisters[Convert.ToInt32(dgV[0,i].Value)] = (ushort)Convert.ToUInt16(dgV[1,i].Value); 
      } 

      slave.Listen();} 

내가있는 DataGridView에서 데이터 새로 고침이 필요합니다. 나는 그것을 어떻게 할 수 있는가? 그래서 테이블에서 데이터를 변경하고 버튼을 다시 클릭하면 오류가 발생합니다. 도움 주셔서 감사합니다.

답변

1

timer 개체 (추가 정보 here)를 사용할 수 있습니다. 예를 들어 타이머를 시작하여 버튼을 누르면 타이머가 데이터를 읽고 gridview를 업데이트 할 수 있습니다. 당신의 양식에 도구 상자에서

  1. 드래그 타이머 객체 (폴더 "모든 윈도우 양식"에가 있어야한다) : 다음 단계를 수행 할 수 있습니다 예를 들어

    . 시각적 스튜디오는 디자이너 창 하단에 timer1이라는 개체를 만들어야합니다.
  2. timer1을 두 번 클릭합니다. Visual Studio에서는 타이머의 클릭 이벤트에 대한 처리기를 만듭니다 (timer1_Tick()이라고해야합니다). 타이머는 timer1_Tick() 이벤트 처리기에 넣은 코드를 주기적으로 실행합니다.
  3. 복사 당신이 버튼으로 예를 들어, 구성하고 타이머를 시작해야 마지막으로

    private void timer1_Tick(object sender, EventArgs e) 
    { 
        IPAddress address = IPAddress.Parse(tbIP.Text); 
        int port = Convert.ToInt32(tbPort.Text); 
        slaveTcpListener = new TcpListener(address, port); 
        slave = ModbusTcpSlave.CreateTcp(1, slaveTcpListener); 
        DataStore data = new DataStore(); 
        for (int i=0; i<dgV.Rows.Count-1; i++) 
        { 
         slave.DataStore.InputRegisters[Convert.ToInt32(dgV[0,i].Value)] = (ushort)Convert.ToUInt16(dgV[1,i].Value); 
        } 
        slave.Listen(); 
    } 
    
  4. timer1_Tick()에 버튼 쓴 코드 : 이제 경우

    void Button1Click(object sender, EventArgs e) 
        { 
         timer1.Interval = 10000; //timer tick occurs every 10'000ms=10sec 
         timer1.Enabled = true; 
         timer1.Start(); 
        } 
    

Button1을 클릭하면 타이머가 시작되고 Modbus에서 데이터를 읽고 매 10 초마다 GridView을 업데이트해야합니다.

관련 문제