[转]如何在C#中开发来电显示功能遇到的问题

时间:2022-09-06 10:35:29

因为公司现在需要开发一套CallCenter系统,需要客户来电的时候能够自动从数据库中检索出相关的资料,所以我打算用C#+MSCOMM来开发,但是由于是第一次开发所以有些不知道怎么下手。
比如:
在Form_Load里面我是这么写的
axMSComm1.CommPort = System.Convert.ToInt16(1);   
axMSComm1.Settings = "9600,N,8,1";
if (!axMSComm1.PortOpen)
 axMSComm1.PortOpen = true;  //打开串口
 axMSComm1.InputLen = 0; //清除接收缓冲区
 axMSComm1.DTREnable = true;  //置DTR有效
 axMSComm1.RTSEnable = true;  //置RTS有效
 axMSComm1.InputMode = MSCommLib.InputModeConstants.comInputModeText;
 axMSComm1.RThreshold = 1;  //设置为接收缓冲区每接收一个字符将引发一次OnComm事件
这样的话是不是设置就ok了?
每次只要Modem所在的Com1口有信号进来,我如下来处理
private void axMSComm1_OnComm(object sender, System.EventArgs e)
{
                  string strTel=this.axMSComm1.Input;
}
就可以提取到每次相应的信息了??可是我做的时候怎么老是不成功呢?有的时候在axMSComm1.Settings = "9600,N,8,1";地方也有异常发生,或者是根本截获不到任何信息,我测试的环境是Winxp+VS.Net2003,电脑上现在没有modem我就是用下Com1端口测试,按说我的网卡应该走的是COM1端口吧?不可能网卡上从来接受不到数据的吧?郁闷中,各位帮帮忙啊





设置MSComm控件属性
InBufferSize=1024;
Inputlen=0;
InputMode=0;
Rthreshold=1;
RTSEnable=True;
Settings=“9600,N,8,1";
Sthreshold=0。


首先初始化Modem,然后等待来电。当有来电时,MSComm产生OnComm事件。
Modem送出的信息格式为“DATE = 月日回车换行TIME = 时分回车换行NMBR = 电话号码回车换行”。在OnComm事件处理程序中对读入信息进行截取


"AT#CID=1" + 回车  

是初始化Modem的指令,以字符方式发给Modem


当有来电时在OnComm事件中接收就行了