Fanuc数控系统多线程采集

1:这篇文章不讲法兰克的具体采集细节,自从focas1/2开源后,法兰克的采集都烂大街了,随便找找sdk,4.0版本的就可以。我看了一下4.15的以及最新版的focas,除了支持新的系统,如手机版本,以及多了几个函数外,没啥大的改动。用4.0的就可以。

2:法兰克通讯成功后会返回一个句柄,这个就很人性化了,多线程时你可以直接把句柄静态存储下来,然后采集数据 时调用对应设备编号的句柄就可以了。一般采集函数建议写成静态方法,出于线程安全考虑,一般除了通讯句柄,不再调用全局静态变量,装载数据的类等全部在方法内部消化释放。

3:源码:

1:我们先定义一个字典,用来存储句柄:

        //定义一个字典用来保存通讯句柄

        public static Dictionary<string, ushort> fwlibhandleDic = new Dictionary<string, ushort>();


2:定义通讯函数,将通讯成功句柄保存在字典中

 /// <summary>
        ///  no:设备编号
        ///  adrip:设备Ip
        ///  port:设备端口
        ///  overtime:设备连接时间
        ///  fwlibhandle:通讯句柄
        ///  连接法拉克
        /// </summary>
        /// <param name="no"></param>
        public static bool FConnect(string no, string adrip, ushort port, int overtime)
        {
            ushort fwlibhandle = 0;
            bool returnValue;
            short ret = Focas1.cnc_allclibhndl3((object)adrip, port, overtime, out fwlibhandle);
            if (ret == Focas1.EW_OK)
            {
                returnValue = true;
                if (fwlibhandleDic.Keys.Contains(no))//如果存在该键,直接为该键赋值
                {
                    fwlibhandleDic[no] = fwlibhandle;
                }
                else // 如果不存在该键,直接添加
                {
                    fwlibhandleDic.Add(no, fwlibhandle);
                }
                ErrorCheck(no, "通讯成功!");


            }
            else
            {
                if (fwlibhandleDic.Keys.Contains(no))//如果存在该键,直接为该键赋值
                {
                    fwlibhandleDic[no] = 0;
                }
                else // 如果不存在该键,直接添加
                {
                    fwlibhandleDic.Add(no, 0);
                }
                returnValue = false;
                ErrorCheck(no, "通讯失败,请检查!");
            }


            return returnValue;

        }


然后你给你的设备编号,对应哪个设备,调用哪个句柄即可。

4:排版是我爹!!!!!

  • 4
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值