建议寻求纽曼来电通厂家的技术支持,找他们要那几个API的使用demo,再不行,把你的代码寄给他们,让他们调通后,寄回给你。说点儿好听的给他们听,就搞定了。预祝楼主工作顺利!

解决方案 »

  1.   

    1.在listBox1.Items.Add("端口"+port+": 来电号码 "+number);处按F9设断点,
    单步调试一下看看程序有没有走这里;
    2.看窗体是不是假死了,在
    listBox1.Items.Add("端口"+port+": 来电号码 "+number);
    后面加上this.Refresh();试试;
    3.Setup_Tel(LDTCallBack CallBack, int y);你确定这个y指的是port?
      

  2.   

    我用断电跟过
     public void MyCallBack(int port)
            {
                if (port == 0)
                {
                    //设备有改变
                }
                else 
                {
                    string number;
                    number = LDT.GetNumber_Tel(port).ToString();
                    listBox1.Items.Add("端口"+port+": 来电号码 "+number);
                }
            }
    这段代码就没进去,说明不是假死的原因吧
      

  3.   

    看了下 你少了一段开启设备的代码//打开设备
                try
                {
                    for (int i = 1; i <= LDT.DevCount_Tel(); i++)
                    {
                        if (LDT.Begin_Tel(i, '1') == 1)
                        {
                            ListviewItems("开启设备" + i.ToString() + "成功", Convert.ToString(DateTime.Now));
                        }
                    }
                    //设置回调
                    GC.Collect();
                    GC.WaitForPendingFinalizers();
                    GC.Collect();                //LDTCallBack callback = new LDTCallBack(MyCallBack);
                    callback = new LDTCallBack(MyCallBack);
                    LDT.Setup_Tel(callback, 1);
                }
                catch (Exception ex)
                {            } 这段代码你没有写
      

  4.   


    btnSetup_Click button1_Click这两个事件里边头写了这段代码,分两部而已。
    GC.Collect();
      GC.WaitForPendingFinalizers();
      GC.Collect();
    少了这个
      

  5.   

    楼主,这是MSDN上的例子:
    C++:
    void TestCallBack(FPTR pf, int value);
    void TestCallBack2(FPTR2 pf2, char* value);C#:
    public delegate bool FPtr( int value );
    public delegate bool FPtr2( String value );public class LibWrap
    {// Declares managed prototypes for unmanaged functions.
       [ DllImport( "..\\LIB\\PinvokeLib.dll" )]
       public static extern void TestCallBack( FPtr cb, int value );   
       [ DllImport( "..\\LIB\\PinvokeLib.dll" )]
       public static extern void TestCallBack2( FPtr2 cb2, String value );   
    }
    public class App
    {
       public static void Main()
       {
          FPtr cb = new FPtr( App.DoSomething );
          LibWrap.TestCallBack( cb, 99 );
          FPtr2 cb2 = new FPtr2( App.DoSomething2 );
          LibWrap.TestCallBack2( cb2, "abc" );
       }
       
       public static bool DoSomething( int value )
       {
          Console.WriteLine( "\nCallback called with param: {0}", value );
          …
       }
       public static bool DoSomething2( String value )
       {
          Console.WriteLine( "\nCallback called with param: {0}", value );
          …
       }   
    }