资源描述:
《深入windows通信编程论文》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、深入Windows通信编程论文.freel打开一通信设备BuildCimmDCB将一设备定义字符串转变为DCB数据结构EnablemNotification使能或禁止传送_MNOTIFY消息SetmState设置通信设备状态SetmEventMask设置通信事件掩码Readm从通信设备读字符ask返回通信事件掩码GetmState返回设备控制块(DCB)GetmError恢复通信设备状态Closem关闭一通信设备DCB数据结构、其它通信函数及各函数的具体用法请参见有关资料。一般ask函数;对于遵循V.25bis之类协议的通信,由于用到了大量信号线来作握手信号,.free
2、l函数中的cbInQue和cbOutQue变量、EnablecmNotification中的cb_MNOTIFY消息之前,通信设备驱动程序必须向应用程序出入队列中写入的字节数),可以使系统每收到固定个字符发出一_MNOTIFY消息,这对于固定长度消息型的通信是很方便的。但实际应用时有时会发生接收数据"丢失"现象,即收到_MNOTIFY消息后从接收队列读出cbNotify个数据时,发现只有前面部分数据正确。经检查,"丢失"现象是由于接收数据超时引起的,当通信对方时钟频率较低时,规定时间内收不到cbessageMg)=〔_FIRST+_MNOTIFY〕;virtualvoi
3、dSetupask=EV_BREAK
4、EV_ERR
5、EV_RXFLAG;//事件掩码strcpy(str,"");strcat(str,itoa(+1,s,10));id=Openm(str,128,1);if(id0)returnid;strcat(str,":300,n,8,1");err=BuildmDCB(str,dcb);dcb.EvtChar=-1;//事件字符0xfferr=SetmState(dcb);SetBaud();if(err0)returnerr;Flushm(id,1);if(!EnableunNotification(id,Hask(id,
6、Mask);returnid;}voidTmmNotify(TMessageMg){UINTflag=0;intid;STATstat;unsignedcharSendChar;staticunsignedchar*p=ReceiveBuff;staticnum=0;intret;id=Mg.ask(id,EV_BREAK);if(flagEV_BREAK)Flushm(id,1);flag=GetmEventMask(id,EV_RXFLAG);if(flagEV_ERR)Flushm(id,1);flag=GetmEventMask(id,EV_RXFLAG);if
7、(flagEV_RXFLAG)//收到了事件字符0xff{SendChar=0x0f;aindShoAppmApp("通信",hInstance,hPrevInstance,1pCmdLine,nCmdShoApp.Run();returnmApp.Status;}