因为工作需要,要编写一个发格8070数控系统的二次开发软件,用于读取系统变量,系统公司提供了一个com组件API8070.dll,我用VS2010,注册后在项目中添加了api8070.TLB的引用。
编写如下代码
        private void button3_Click(object sender, EventArgs e)
        {
            Api8070.CNC8070_PParamTable cs = new Api8070.CNC8070_PParamTable();
            textBox1.Text = cs.ReadCommonPParam(10020).ToString();
        }
可以成功读取到系统变量,但是出现以下问题:
我编写读取系统变量的软件与发格8070通软件不能同时打开,任何一个打开,另一个就会报错,但我需要两个软件同时运行。
有没有高手知道我下,谢谢!

解决方案 »

  1.   


    建议将你写的程序在一台电脑上单独运行,另一个程序在另一台电脑运行来测试。可能是此com程序只允许一个实例,或者是访问的接口或者数据为独占模式。
      

  2.   

    基本上不可能的...你这个大概是是串口通讯. 因为串口只能被一个"实例"打开 .所以这个是没办法的.. 只能运行一个.. 就好比N串口工具也不能同时对一个串口操作.或者 他自己的软件 运行2个exe 也是无法运行的.. 谁先运行 后面的就不行了.. 这个基本上无解..除非从底层 他串口接收数据的时候 做tcp转发服务 给你..不过这个基本没人会给你做...所以 放弃吧
      

  3.   

    厂家的C++实例可以用,他用的api8070.h文件,先建立的服务器连接,然后通过接口访问的变量值。
      

  4.   

    如果仅仅是读取系统变量的话,可以考虑注入一个dll到厂家dll里面,然后和你的进程做通信,不过这比较难
      

  5.   

    一个是32bit和64bit的兼容问题,一个是是否正确注册了控件。
      

  6.   


    那么你就不用纠结于他们的什么 com 组件了。
      

  7.   

    实际上这还是厂商的 com 组件不合格的问题。但是你这里无法沟通厂商。
      

  8.   


    你好,能分享一个C++例子吗? 然后我安装了Fagor的模拟器,安装文件中有一个api8070_i.h文件,是你说的这个api8070.h文件吗?