上位机扫描问题

1)今天在做与6001进行对接,后来需要扫描设备地址,我做了个循环

for (int i = 1; i < 50; i++)

            {

                if (scanResultFlag)

                {

                    byte[] msg = ModbusRtu2.readModbusRtuRegister(i, 10 - 1, 1);

                    userComControlMeter.serialSendMsg(msg);

                    showMessageTolog("读设备地址", msg);

                    Thread.Sleep(500);

                }

                else

                {

                    break;

                }

            }      

 

本以为在接收端进行数据解析,接收到数据,然后就break跳出循环,但是与设想的不一致,虽然接收到了数据,但是并不能进行parseScan(),估计是for(50)循环占据了主线程,只有在主线程全部结束后,才能进行解析,所以,最后全部运行完毕后,报出了地址=10的提示

 

DelgateCOMFourFaithConnect delgateCOMMeterConnectByte = new DelgateCOMFourFaithConnect(showRead6001Info);

                        Invoke(delgateCOMMeterConnectByte, buffer);

private void parseScan(byte[] buffer)

        {

            if (buffer[1] == 0x03)

            {

                byte[] bScrq = new byte[2];

                Array.Copy(buffer, 3, bScrq, 0, 2);

                txt_sbdz.Text = ByteCalculator.byte2Int(bScrq[0], bScrq[1]).ToString();

                showMessageTolog("设备地址返回", buffer);

                MessageBox.Show("设备地址="ByteCalculator.byte2Int(bScrq[0], bScrq[1]).ToString());

                delByteToByteList(buffer);

            }

            else

            {

                delByteToByteList(buffer);

            }

        }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值