【问题标题】:Modbus TCP Slave. Data transmitModbus TCP 从站。数据传输
【发布时间】:2014-04-07 18:04:03
【问题描述】:

我从 ModbusTCP Slave 应用程序开发 c# windows 应用程序,该应用程序提供来自 dataGridView 的数据。 我创建了从 dataGridView 读取数据并开始监听的方法。 我需要我可以在当前收听中刷新数据。

我的方法:

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 中刷新数据。我怎么能呢? 因此,如果我更改表中的数据并再次单击按钮,则会出现错误。 谢谢你的帮助

【问题讨论】:

    标签: c# datagridview modbus


    【解决方案1】:

    您可以使用timer 对象(更多信息here)。例如,您可以按下按钮启动计时器,然后计时器可以读取数据并更新您的网格视图。

    例如,您可以按照以下步骤操作:

    1. 将计时器对象从工具箱中拖到窗体上(它应该位于“所有 Windows 窗体”文件夹中)。 Visual Studio 应该在设计器窗口的下部创建一个名为 timer1 的对象
    2. 双击timer1。 Visual Studio 为您的计时器的单击事件创建一个处理程序(它应该被称为timer1_Tick())。计时器将定期运行您放入 timer1_Tick() 事件处理程序的代码。
    3. 将您为按钮编写的代码复制到timer1_Tick()

      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. 最后,您必须配置并启动计时器,例如使用按钮:

      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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-31
      • 2020-12-01
      • 2014-06-07
      • 2020-07-16
      • 2020-06-10
      • 2019-05-14
      • 2021-04-18
      • 2016-09-06
      相关资源
      最近更新 更多