Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net System.IO.Ports.SerialPort-是否可以配置IOCTL\u SERIAL\u SET\u WAIT\u掩码?_.net_Serial Port - Fatal编程技术网

.net System.IO.Ports.SerialPort-是否可以配置IOCTL\u SERIAL\u SET\u WAIT\u掩码?

.net System.IO.Ports.SerialPort-是否可以配置IOCTL\u SERIAL\u SET\u WAIT\u掩码?,.net,serial-port,.net,Serial Port,我一直试图通过编写一个小型Windows窗体应用程序来从旧的外部调制解调器收集来电显示数据,从而了解.Net(3.5)如何通过System.IO.Ports.SerialPorts类与串行端口交互 我已经测试过调制解调器是否支持来电显示;使用Putty或Hyperterminal,我可以配置调制解调器以收集来电显示数据(使用我找到的命令AT#CID=1),当电话铃响时,显示数据。在终端窗口中,如下所示: RING DATE = 0308 TIME = 2045 NMBR = 012345678

我一直试图通过编写一个小型Windows窗体应用程序来从旧的外部调制解调器收集来电显示数据,从而了解.Net(3.5)如何通过
System.IO.Ports.SerialPorts
类与串行端口交互

我已经测试过调制解调器是否支持来电显示;使用Putty或Hyperterminal,我可以配置调制解调器以收集来电显示数据(使用我找到的命令
AT#CID=1
),当电话铃响时,显示数据。在终端窗口中,如下所示:

RING

DATE = 0308
TIME = 2045
NMBR = 01234567890

RING
我的C#应用程序似乎成功配置了调制解调器,并显示一个
铃声
电话铃响时的留言;但是,它从不显示呼叫者ID数据

为了理解为什么会这样,我比较了使用Sysinternals的不同客户机采取的操作

主要区别在于连接配置;我的C#应用程序包括以下行,Putty和Hyperterminal不包括这些行:

0.00000307  callerID.exe    IOCTL_SERIAL_SET_WAIT_MASK  Serial0 SUCCESS Mask: RXCHAR RXFLAG CTS DSR RLSD BRK ERR RING   
据我所知,
IOCTL\u SERIAL\u SET\u WAIT\u MASK
是要筛选的消息类型的一个包含列表

因此,有三个问题:

呼叫方ID信息是否可能被
IOCTL\u SERIAL\u SET\u WAIT\u MASK
抑制

如果是,我如何配置它以显示来电显示信息?它似乎无法从类属性访问

如果我不能配置它,那么我唯一的选择就是绕过它,将自己的包装器写入控制串行端口的较低级别系统函数吗

我对串行端口通信的理解非常基础,因此我认为我的诊断还远远不够。感谢您的指导。

我在MSDN上找到了它,它看起来是一个不错的示例,说明了如何通过系统dll上的p/Invoke访问串行端口

我仍然想知道我是否可以解决.Net类的问题。

我在MSDN上找到了它,它看起来是一个不错的示例,说明了如何通过系统dll上的p/Invoke访问串行端口


我仍然想知道我是否可以解决我在.Net课程中遇到的问题。

我的诊断还远远不够

似乎
WriteLine
方法没有用我的调制解调器期望的行终止符终止它发送的命令

我所需要做的就是在我发送的命令中添加回车符,并使用
Write
方法发送它们


很抱歉浪费了大家的时间。

我的诊断偏离了方向

似乎
WriteLine
方法没有用我的调制解调器期望的行终止符终止它发送的命令

我所需要做的就是在我发送的命令中添加回车符,并使用
Write
方法发送它们


为浪费任何人的时间而道歉。

在回答自己的问题时,您在保持最新信息方面做得非常好!:-DYou在回答您自己的问题时,能够及时了解最新信息,这真是一项出色的工作!:-Dyeah,有必要在方法_serialPort.WriteLine(“at#cid=1”+System.Environment.newline)中添加换行符;是的,有必要在方法_serialPort.WriteLine(“at#cid=1”+System.Environment.newline)中添加换行符;