none
c# serialport控件传递句柄给VC DLL接口的方法 RRS feed

  • 问题

  • VC DLL接口的声明里有Query(HANDLE hComm,int nUnitNo)其中第一个参数 就是串口句柄
    请教如何把C#里面的serport控件的句柄传过去
    C#里面定义 handle 应该就是指 intptr。serialport如何转成intptr??
    我查了一下,发现serialport控件没有句柄这一说,网上很多人说用creatfile的方法实现
    但是软件结构已经生成,无法改成creatfile!!
    希望各位知道解决问题的大侠给予帮助,在线等待
    var sp = new SerialPort();
                sp.PortName = "COM4";
                sp.StopBits = StopBits.One;
                sp.Parity = Parity.None;
                sp.DataBits = 8;
                sp.BaudRate = 9600;
                sp.Open();
    object stream = typeof(SerialPort).GetField("internalSerialStream", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(sp);
                var handle = (SafeFileHandle)stream.GetType().GetField("_handle", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(stream);
                IntPtr phandle = handle.DangerousGetHandle();
    这是实验的部分代码,但是获得的句柄传输给VC dll 的时候,无法送串口输出数据,可能这个获得的句柄无用
    2012年6月28日 7:57