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 的时候,无法送串口输出数据,可能这个获得的句柄无用