采用串口通信对通信特服终端设备进行监控的实现方法

文档序号:7764461阅读:811来源:国知局
专利名称:采用串口通信对通信特服终端设备进行监控的实现方法
技术领域
本发明属于通信技术领域,特别涉及对通信特服终端设备的监控,即根据接收信息对线路和工作坐席台当前工作状态进行直观显示,根据发送信息进行线路开放、调度、闭锁,坐席开放、调度、闭锁等一系列控制管理工作。
背景技术
通信数据在传输过程中,需要对通信特服终端设备的工作状态进行实时的监测,以便发现故障及时反馈、及时修理。在沟通通信设备和监控机时常用的数据交换方式有许多,如无线通信技术、基于网络的数据传输技术、和串口通信技术等。采用串口通信技术,具有成本低、保密性强、安全稳定等优点,因此本发明在监控通信特服终端设备时采用串口通信技术。即采用监控计算机与通信特服终端之间进行串口通信,实时地从通信终端设备中传出状态信息,监控机接收数据并实时显示状态;在监控机端可以人为发出指令,进行线路或坐席的调度、控制等管理工作。目前,实现串口通信的方法很多,比如①用ACTIVEX控件实现串口通信②利用 WINDOWS提供的标准通信API函数实现串口通信。本发明采用WINDOWS提供的标准通信API 函数实现串口通信。在实时显示部分的程序设计中,可采用的编程语言也非常多,常用的有VC++、VB、 B0RLANDCC++、C#等,本发明采用BORLANDC C++BUILEDR语言编程实现监控机实时显示与交互。在串口通信数据的读写控制方面,可采用WINDOWS定时器进行数据读写控制,也可采用多线程通信中使用的监控串口事件的方式对串口通信进行控制,考虑到通信监控的稳定性、时性、专业性等因素,本发明采用定时器方式进行串口通信控制。发明内容本发明提出了采用BORLANDC C++BUILDER编程进行监测机后台管理, 配合WINDOWS提供的标准通信API函数实现串口通信,采用定时器进行串口通信控制的实现方法。具体技术方案如下1)设计串口通信硬件电路。2)设计串口通信程序实现串口通信;3)设计定时器,实现串口控制;4)设计实时更新显示及控制管理程序。所述步骤1)中,通信终端设备端采用8051系列单片机,监测机端采用80X86系列主机,选择RS232进行串口通信,选择MAX238作为接口芯片,其结构示意图如图1所示。串口通信过程中通信特服终端设备所传出的数据主要有①线路状态信息②坐席状态信息③ 经通信终端设备统计后的工作量数据。监测机发出的数据主要有①线路控制信息②坐席控制信息所述步骤幻中,串口通信程序设计主要包含如下内容1、打开串口所使用函数CreateFile该函数的原型为HANDLECreateFile (LPCTSTR IpFiIeName,//IpFileName 将要打开的串口逻辑名,如 "C0M1,,;
DWORD dwDesiredAccess,//dwDesiredAccess :指定串口访问的类型,可以
是读取、写//入或二者并列;DWORD dwShareMode,//dwShareMode 指定共享属性,由于串口不能共
享,该参数//必须置为0;LPSECURITY_ATTRIBUTES IpSecurityAttributes, //IpSecurityAttributes 引用安全性属性//结构,缺省值为NULL ;DWORD dwCreationDistribution, //dwCreationDistribution 仓ll建标志,对串
口操作该参数// 必须置为 0PEN_EXISTING ;DWORD dwFlagsAndAttributes, //dwFlagsAndAttributes 属性描述,用于指定该串口是Il否进行异步操作,该值为FILE_FLAG_ OVERLAPPEDH表示使用异步的1/0 ;该值为0,表示同步 1/0操作;HANDLEhiTemplateFile)//MemplateFile 对串口而言该参数必须置为NULL ;2、配置串口所使用函数BuildCommDCB在打开通讯设备句柄后,常常需要对串口进行一些初始化配置工作。这需要通过一个DCB结构来进行。DCB结构包含了诸如波特率、数据位数、奇偶校验和停止位数等信息。 在查询或配置串口的属性时,都要用DCB结构来作为缓冲区。DCB主要有以下几个重要的成员①BYTE ByteSize //通信字节位数②BYTEParity//指定奇偶校验方法。此成员可以有下列值// EVENPARITY偶校验N0PARITY无校验//MARKPARITY标记校验0DDPARITY奇校验③BYTEMopBits//指定停止位的位数。此成员可以有下列值//0NEST0PBITl位停止位//TW0ST0PBITS2位停止位//0NE5ST0PBITS1. 5位停止位除了使用B⑶设置串口的一些基本参数外,一般还需要设置串口收发数据缓冲区的大小和超时,超时的作用是在指定的时间内没有读入或发送指定数量的字符,读写操作仍然会结束。Windows用1/0缓冲区来暂存串口输入和输出的数据,如果通信的速率较高, 则应该设置较大的缓冲区。我们可以使用API函数ktupComm设置串口的输入和输出缓冲区的大小,其原型如下B00L SetupComm(HANDLE hFile, //串口句柄DWORD dwInQueue, //输入缓冲区的大小(字节数)DWORD dwOutQueue) //输出缓冲区的大小(字节数)串口初始化的过程为
DCB deb ;//定义数据控制块结构GetCommState (hCom, &dcb) ;// 读串口原来的参数设置BuildCommDCB ( "COM2 :9600, N,8,1”,&dcb) ;// 创建数据控制块 DCB 结构SetCommState (hCom, &dcb) ;// 将结构 DCB 的主要参数设置到串口 COM2说明其中的BuildCommDCB( "COM2 :9600,N,8,1”,&dcb)语句可以代替前面 4 条串口通信参数赋值语句的效果。3、设置通信口状态所使用函数ktComn^tate函数原型B00L SetCommState (HANDLE hFile,//通信设备句柄LPDCB IpDCB//指针指向DCB结构块);要修改串行口的配置,应该先修改DCB结构,然后再调用ktCommS tate函数用指定的DCB结构来设置串行口。4、清除通信接收或发送缓冲区所使用函数PurgeComm在读写串口之前,还要用PurgeCommC ..)函数清空缓冲区,该函数原型BOOLPurgeComm(HANDLEhFile,//串口句柄DWORD dwFlags)//需要完成的操作参数dwFlags指定要完成的操作, 可以是下列值的组合PURGE_TXAB0RT中断所有写操作并立即返回, 即使写操作还没有完成;PURGE_RXAB0RT中断所有读操作并立即返回,即使读操作还没有完成;PURGE_T)(CLEAR清除输出缓冲区PURGE_RXCLEAR清除输入缓冲区5、恢复或取得通信口状态所使用函数ClearCommError函数原型B00L ClearCommErroHHANDLE hFile,//通信设备句柄LPDffORD IpErrors,//指针指向接收错误代码LPC0MSTAT IpStat//指针指向通信状态数据缓存区);说明在调用ReadFile和feiteFile之前,线程应该调用ClearCommError函数清除错误标志。该函数负责报告指定的错误和设备的当前状态。6、从通信接收缓冲区读字符所使用函数ReadFile函数原型B00L ReadFile (HANDLE hFile,//串口的句柄LPVOID IpBuffer,//保存读入数据的指针DWORD nNumberOfBytesToRead,//要读入的数据的字节数
LPDffORD IpNumberOfBytesRead, // 实际读入的字节数LPOVERLAPPED IpOverlapped)//OVERLAPPED,同步为 NULL7、向通信发送缓冲区写字符所使用函数WriteFile函数原型BOOL WriteFile (HANDLE hFile,//串口的句柄LPCVOIDlpBuffer,//要写入数据的地址DWORD nNumberOfBytesToffrite, //要写入数据的字节数LPDffORD IpNumberOfBytesffritten, // 实际写入的字节数LPOVERLAPPEDlpOverlapped)//OVERLAPPED,同步为 NULL。说明在进行同步操作时,读写函数要等到执行完才返回,而在异步操作时函数立即返回,但不保证读写操作完成,这时候就需要使用OVERLAPPED结构进行异步控制,该结构体有一个重要的成员hEvent,该成员是windows事件对象的句柄在控制线程同步及异步操作时常用到,如果是异步操作,我们可以使用CreateEvent (...)创建事件对象并将返回值赋给hEvent,然后使用WaitForSingleObject或GetOverlappedResult等待读写操作完成,进而达到控制异步操作的目的。8、关闭通信串口所使用函数CloseHandle在不使用串口的时候应该将其关闭,以释放windows的资源供其他程序使用,关闭串口只需调用CloseHandle (hComm/*串口句柄*/)即可。所述步骤3)中,采用设置定时器的方法实现串口通信的读写控制。①设置定时器1控制线路状态信息的接收②设置定时器2控制数据的发送③设置定时器3控制坐席状态信息的接收。④退出时删除定时器1、定时器2、定时器3所述步骤4)中,采用B0RLANDC C++BUILDER编程实现如下功能1\PCM状态信息的实时显示对2M 口送来的30路线路信息状态进行监测,采用不同颜色位图实时反映它是处于空闲状态,还是应答状态或锁闭态,并可对每路的呼入次数等进行统计。2、模拟线路和座席状态监测实时地对系统所具有的多条线路状态(示闲、占用、应答、闭塞)进行检测,对系统所带的多个座席状态(示闲、占用、应答、闭塞)进行监测,在多条线路占用多个座席的情况下,可实时反映哪具体某条线路占用了哪个工作座席台,为维护人员提供方便。3、闭塞设置功能通过前台机,可通过设置,人为地闭塞某些线路或闭塞某些座席,为故障查找提供有效手段,也可将不用的线路、座席暂时闭塞不用,待扩容要用时,再开放它。4、信息字监测对2M 口数字线路的帧同步码,复帧同步码字进行显示,便于直观地发现是同步还是失步。5、设备设置功能—个通信特服终端设备满配置时,是多块2M数字板一块,用户线路板多块(每路上包括两路用户线路)。设备配置功能可将插了哪些板子,板上哪条线路正使用,哪条没用, 通过清晰的位图进行显示,一目了然。6、主叫号码显示此功能是针对数字2M 口 30条线路的,在使用多频互控收主叫号码的情况下,此功能可以将所收的主叫号码完整地显示在对应的线路号上。7、信令显示此功能也是针对2M 口数字电路的,它能够将某条线路的信令处于空闲、占用或占用证实、话务员拆线状态信息实时地显示出来,便于维护人员监测线路状态。8、分组功能此功能分三部分a、30路PCM分组,可将线路随意地分成A、B两组b、8路用户线分组,可将8路随意地分成A、B两组c、8座席分组,可将8路随意地分成A、B两组此功能是为实现一通信特服终端设备接多种工作坐席而专门设计的。即可以将通信特服终端设备同时接114或1 等其它特服,可实现线路座席分组使用,不会交叉分配。9、告警功能可以监测PCM同步信号,座席全锁信号和其它各种故障信号,在它们不能正常工作时给出告警图象并按有蜂鸣声,故障恢复,告警图象消失同时关闭蜂鸣声音。10、测试串行口以上所有功能都是以串行口正常通信为基础的,因此串行口能否正常工作是整个监测功能否得以实现的关键。因此特意设计了测试串行口的功能,对串行口是否有数据传输进行检测,有则实时显示抓捕的数据。


图1—串口通信硬件实现2——串口通信部分程序流程3——8251读写操作功能4——监控程序总流程图具体实施方式
以下从设计串口通信硬件电路、设计定时器实现串口控制、设计串口通信程序实现串口通信,、设计监控显示及管理程序四个方面分别介绍具体实施方式
。1、串口通信硬件电路及数据传送协议设计串口通信硬件电路的设计如图1所示。本电路采用串行接口电路8251设计,采用 RS232串行口与监控机之间通信,向监控机传送系统各种可视、可闻信号。监控机能明确直观地显示整个系统的工作状态,便于工作人员的诊断、维护。8251是一种全双工同步/异步/接收/发送器,可作为各种微处理器和单片机的串行接口电路。其中包括接收器、发生器、调制解调器控制电路、读/写控制电路、状态缓冲器、发送命令/数据缓冲器和接收缓冲其工作原理如下①接收数据
串行传送时,数据接收器接收在R)(D引脚上串行输入的数据,并把它转换为并行数据,送入接收缓冲器。本电路工作于异步工作方式,在允许接收和接收准备好时,监视RXD 输入端。在无字符传送时,R )端为高电平。当R )端出现低电平时,启动内部计数器计数, 在计数到个字符宽度的1倍时重新采样R)(D端。若R )仍为低电平,则确认起始位。此后每隔16个脉冲采样一次R)(D端,作为数据输入,送入移位寄存器。经移位,奇偶校验和去掉停止位后,并行送入接收数据缓冲器,同时发RXRDY信号,向CPU表示数据已经接收好。②发送数据串口传输时,数据由发送器发出。发送器接收CPU送来的并行数据,加上起始位、 奇偶校验位和停止位后,由T)(D输出端串行发出。③读写控制电路用来对CPU输出的控制信号进行译码,以实现如图3所示的读写功能,USART检测/RD和/WR端的信号来确定何种I/O操作。若二者均为高电平,USART不执行任何I/O操作;若二者均为低电平,按非法状态处理;若/RD为低而/WR为高,CPU从 USART读数据,反之CPU向USART写数据。监控机与通信特服终端之间传送数据时,为便于区分,采用功能码进行约定。它所设置的主要功能码如下①130请求设备发送线路状态,在监控程序中使用BZ变量区分请求,BZ = 1,线路信息,BZ = 2,坐席信息,并根据BZ位改变对应位图显示。②131请求设备发送坐席状态信息,在监控程序中使用BZ变量区分请求,BZ = 1,线路信息,BZ = 2,坐席信息,并根据BZ位改变对应位图显示。③132请求设备发送工作量信息④133发送PCM设置信息给通信设备,00代表开放线路,55代表闭锁线路⑤134发送坐席设置信息给通信设备,00代表开放坐席,55代表闭锁坐席......2、设计定时器当需要每隔一段时间执行一件事件的的时候就需要使用ktTimer函数设置定时器。本发明中采用设置定时器,并应用定时器去控制串口读写,即每隔一定时间间隔去读一次串口或写一次串口。使用定时器的方法比较简单,通常告诉WINDOWS—个时间间隔,然后 WINDOWS根据时间间隔周期性触发程序,即发送WM_TIMER消息。主程序中循环扫描消息,扫描到WM_TIMER消息,即知道间隔时间到了,转去读串口或写串口。SetTimer函数的原型UINT_PTR SetTimer (HWND hffnd,//窗口句柄UINT_PTR nIDEvent, //定时器ID,多个定时器时,可以通过该ID判断是哪个定时器UINT uElapse,//时间间隔,单位为毫秒TIMERPROC IpTimerFunc//回调函数);1)本程序设置三个定时器,设计程序如下①设置定时器1,如设置不成功则弹出出错对话框,提示定时器设置不成功,重新设置。while( ! SetTimer(hffnd, IDM_TIME1, 500, NULL)){if (IDCANCEL == MessageBox (hffnd,‘‘ Timerl Error“ , ‘‘ return“,MB_RETRYCANCEL|MB_IC0NEXCLAMATI0N))return FALSE ;}②设置定时器2,如设置不成功则弹出出错对话框,提示定时器设置不成功,重新设置。while( ! SetTimer(hffnd, IDM_TIME2,100, NULL)){if (IDCANCEL = = MessageBox (hffnd,“ Timer2 Error",“ RETURN",MB_RETRYCANCEL|MB_IC0NEXCLAMATI0N))return FALSE ;}③设置定时器3,如设置不成功则弹出出错对话框,提示定时器设置不成功,重新设置。while( ! SetTimer(hffnd, IDM_TIME3,50, NULL)){if (IDCANCEL = = MessageBox (hffnd,“ Timer3 Error",“ RETURN",MB_RETRYCANCEL|MB_IC0NEXCLAMATI0N))return FALSE ;}定时器4、5的设置方式同上。不在赘述。在设计定时器时间间隔时要兼顾到,串口对数据的处理速度,避免读串口数据未读完,又转去执行写串口数据程序。因此设计的间隔时间要足够保证必须处理的数据处理完。本设计中分别设置了 500,100,50三种间隔,经运行,可确保数据的执行。解决此类问题的另一种方法是用完一个定时器后及时关闭,等待再次用到时重新打开。在程序结束时,删除定时器,其实现方式如下删除定时器1、2、3 (定时器4、5删除方式相同,省略)KillTimer (hffnd, IDM_TIME1);KillTimer (hffnd, IDM_TIME2);KillTimer (hffnd, IDM_TIME3);3、串口通信程序设计创建程序中设置窗口,和功能按钮,设置定时器,完成一系列初始化工作。①串口初始化
I、打开串口,,并设置输入输出缓冲区大小idComDev = CreateFiIe ( “ com2 〃,GENERIC_READ|GENERIC_WRITE,0,NULL, 0PEN_EXISTING,0, NULL) ;//打开串口SetupCommidComDev,, 4, 2) ;//设置输入、输出缓冲区的大小(传送坐席信息时)或SetupCommidComDev,, 64,64) ;//设置输入、输出缓冲区的大小(传送线路状态信息时)II、配置串口BuildCommDcb (“ com2 300, η, 8,1",&dcb) ;//创建数据控制块 DCB 结构,波特
率//300,每次传送一字节数据, 即8位III、定义块SetCommState (idComDev, &dcb);完成串口初始化。②消息循环串口初始化完成后程序进入消息循环。、其实现语句如下Showffindow (hffnd, Sff_SHOWMAXIMIZED);显示窗口并发送消息程序主窗口Updateffindow (hffnd) ;WM_PAINTwhile (GetMessage (&msg, NULL, 0,0))进入消息循环if( ! IsDialogMessage (hffnd, &msg)){TranslateMessage(&msg);DispatchMessage(&msg);}return msg. wParam ;}采用循环方式查询各种消息,并实时处理消息,如果此时接收到和定时器有关的 WM.TIMER消息,则转去执行相应处理程序,其程序设计如下case WM_TIMER 定时器信息来switch (wParam)判断是定时器几{case IDM_TIME1 //timel ks{if(bz ==1) 是定时器1且选线路PCM状态(用BZ变量取值,判断是 PCM状态还是坐席ZX状态){
rect. left = 205 ; 更新屏幕rect. right = 552 ;rect. top = 320 ;rect. bottom = 386 ;if (zl == TRUE)InvalidateRect (hffnd, &rect, FALSE);}if (sionumb ! = 0){yuan
= outsio[sionumb-l];sionumb = sionumb-1 ;PurgeComm(idComDev, PURGE_TXAB0RT|PURGE_RXAB0RT|PURGE_TXCLEAR|PURGE_ RXCLEAR) ;//清除输出缓冲区WriteFile (idComDev, yuan, 1,xnumb, NULL) -J/ 写串口,即送出功能码 130(程序初始化时定义//功能码,每个功能的功能码各不相同),请求设备Il送线路状态信息}}break ;//timel endcase IDM_TIME2 是定时器 2 则读串口{PurgeComm(idComDev, PURGE_TXAB0RT|PURGE_RXAB0RT|PURGE_TXCLEAR|PURGE_ RXCLEAR) ;//清除输入缓冲区if (ReadFiIe (idComDev, bin, 1,dnumb, NULL) ==1)switch (bz)对读入的信息进行分析{case 1://线路状态,约定设备回送一字节内容, 其中D7 D6 D5线路状态//D4D3D2D1D0 线路号应小于 30*/{if(beginb < 8) break ;取数据、分析数据y = (bin
>> 5)&7 ;并控制画笔对改动部份进行状态
更新i = bin
&0xlf ;
if (i < 30&&pcmst[i] ! = y){if (pcmst [i] = = 0&&y < 2) //根据y值判断线路处于呼入还是应答状态{pcmnu [i] = pcmnu [i] +1 ;hrnumb = hrnumb+1 ;// 呼入工作量力口 1}if (y == 2){ydnumb = ydnumb+1 ;// 应答工作量力口 1if (mlst[i] ==0)hrnumb = hrnumb+1 ;}pcmst [i] = y ;Il更新线路状态变量数据χ = i ;y = 0 ;while (χ > 9)//在对应位置更新屏幕显示{χ = χ-10 ;y++ ;}rect. left = χ氺54+39 ;rect. right = rect. left+57 ;rect. top = y*66+84+20 ;rect. bottom = rect. top+76 ;InvalidateRect (hffnd, &rect, FALSE);}}break ;case 2//如果送回的是坐席信息(一字节),,约定D7 D4为坐席状态//信息,D3 DO为坐席号y = (bin
>> 4)&15 ; //根据接收状态信息,更新屏幕显示zxst [y] = bin
&15 ;If (y > 7){y = (y&7)+l ;χ = 0 ;While (y > 1){y = y-2 ;χ = x+1 ;}Rect. left = y*223+192 ;Rect. right = rect. left+100 ;Rect. top = x*45+147 ;
Rect. bottom = rect. top+23 ;InvalidateRECT (hffnd, &rect, FALSE);Break ;}
}}Return 0 ;}//switch bz endbreak ;//time2 end}是定时器3来消息,处理方式同上,请求设备送工作量信息。读取工作量。工作量信息,如总呼入量信息,在传送过程中采用四字节完成,其数据约定如下第3字节D7D6 = 11D5 DO 工作量低六位第2字节D7D6 = 10D5 DO 工作量中六位第1字节D7D6 = 01D5 工作量高一位D4 DO地址高五位第0字节D7D6 = 00D5 DO 地址低6位对工作量进行存储,其实现程序如下hFile = OpenFile (〃 c:\〃 work, dat 〃,&ofs,0F_WRITE);_llseek(hFile, ((timework[i] [2]_l)*24+timework[i] [3]*32,0);for(j = 1 ;j < 17' j++){_write (hFile, &g21workl [i] [j],2);_Iclose (hFile);}③退出处理对消息的处理完成后,结束退出时,删除定时器1、2、3......,退出消息循环。其实
现语句如下case ESC 按下子按纽退出则for(i = 0 ;i < 10 ;i++)使主功能键可选Enableffindow (hbutton[i], TRUE);Delebitmap (bz);删除字位图、画笔bzl = 0 ;zl = FALSE ;CloseHandle (idComDev);关串口InvalidateRect (hffnd, NULL, FALSE);return 0 ;}break ;}
case WM_DESTR0Y 退出主窗口时处理DeleteObject(HBJ) ;1.删背景位图if ( ! bz)Delebitmap (bz) ;2.删当前位图KillTimer (hffnd, IDM_TIME1) ; 3.删定时器 1、2、3KillTimer (hffnd, IDM_TIME2);KillTimer (hffnd, IDM_TIME3);PostQuitMessage (0) ;4.发退出消息置主程序return 0 ;消息循环4、监控显示及管理程序设计 其程序流程图如图4所示。 它所使用的函数有1).Bool Port Init(Handle hw, intbpl, int bp2);用于设置串行工作状态,初始化串行口,初始化不正确给出错误提示。2). Clea button(void)用于清除与之相对应在退出功能时的按纽3). Bool LB(int bitl)画笔在进入某个子功能时,用于装入某个位图4). BoolDele bitmap ()在退出某个子功能时,删除每个子功能画笔位图5). Void setupButton(void)在进入某项功能所需要的按纽 它所使用的对话框有1). MLF2DLGPR0C 模拟用户线分组对话框2). 2XF2DLGPR0C 座席分组对话框3). XF2DLGPR0C 线路分组对话框用于分组功能时,通过对话框选择相应分组路数,分组类型4). BSHELPDLGPR0C 提示闭塞功能时的帮助信息5). 2XBSDLGPR0C用户模拟线闭塞功能,选择时弹出的对话框6). 2XBSDLGPR0C座席线闭塞功能,选择时弹出的对话框7). XLBSDLGPR0C数字线路闭塞功能,选择时弹出的对话框在闭塞设置时,通过对话框选择相应闭塞或开放线路 它所处理的消息类型有1) case WM_CREATE //在创建窗口时创建10个功能按纽2) case WM_C0MMAND //收到命令信息分析信息3) case WM_TIMER //定时器信息来的处理4) case WM_PAINT //画笔处理5) case WM_DESTR0Y //退出主窗口时处理
权利要求
1.一种对通信特服终端设备进行实时监控的实现方法,其特征是使用串口通信技术实现通信特服终端设备与监控机之间的实时数据传输,以及BORLANDC C++BUILDER软件环境中实现如下步骤操作1)设计串口通信硬件电路;2)设计串口通信程序实现串口通信;3)设计定时器,实现串口控制;4)设计实时更新显示及控制管理程序。
2.根据权利要求1所述的串口通信硬件电路,其特征是所述步骤1)中,设计通信特服终端机的接口,设计监控机端接口,以实现数据的交换。实现设计的步骤是1)串口通信硬件电路设计通信终端设备端采用8051系列单片机,监测机端采用80X86系列主机,选择RS232进行串口通信,选择MAX238作为接口芯片,其结构示意图如图1所示。2)串口通信传送数据格式设计①线路状态信息约定设备回送一字节内容,其中D7 D6 D5线路状态信息,D4D3D2D1D0为线路号,线路号应小于30。②坐席状态信息约定设备回送一字节内容,约定D7D6D5D4为坐席状态信息,D3D2D0为坐席号。③工作量信息工作量信息,在传送过程中采用四字节完成,其数据约定如下 第3字节D7D6=11 D5 DO 工作量低六位第2字节D7D6 =10 D5 DO 工作量中六位第1字节D7D6 = 01 D5 工作量高一位D4 DO地址高五位第0字节D7D6 = 00 D5 DO 地址低6位④线路控制信息约定监控机送一字节内容给通信特服终端设备,00代表开放线路,55代表闭锁线路。⑤坐席控制信息约定监控机送一字节内容给通信特服终端设备,00代表开放坐席,55代表闭锁坐席。3)主要功能码设计①130请求设备发送线路状态。②131请求设备发送坐席状态信息。③132请求设备发送工作量信息。④133发送PCM设置信息给通信设备。00代表开放线路,55代表闭锁线路。⑤134发送坐席设置信息给通信设备。00代表开放坐席,55代表闭锁坐席。
3.根据权利要求1所述的对通信特服终端设备进行实时监控的实现方法,其特征是所述步骤2)中,设计串口通信程序实现串口通信,具体实施步骤如下①打开串口HANDLE CreateFile(LPCTSTR IpFileName,//IpFileName 将要打开的串口逻辑名,如“C0M1,,;DWORD dwDesiredAccess, //dwDesiredAccess 指定串口访问的类型,可以是读取、写//入或二者并列;DWORD dwShareMode,//dwShareMode 指定共享属性,由于串口不能共享,该参数Il必须置为ο ;LPSECURITY_ATTRIBUTESIpSecurityAttributes, //IpSecurityAttributes 弓丨用安全性属性Il结构,缺省值为NULL; DWORD dwCreationDistribution, //dwCreationDistribution 创建标志,对串口操作该参数// 必须置为 0PEN_EXISTING ; DWORD dwFlagsAndAttributes, //dwFlagsAndAttributes 属性描述,用于指定该串口是//否进行异步操作,该值为FILE_FLAG_OVERLAPPEDIl表示使用异步的I/O ;该值为0,表示同步I/O操作;HANDLE MemplateFile)//MemplateFile 对串口而言该参数必须置为NULL ;②配置串口BuildCommDCB ( "COM2 :9600, N,8,1”,&dcb);③设置通信口状态 B00L SetCommState(HANDLE hFile, //通信设备句柄 LPDCB IpDCB//指针指向DCB结构块);④清除通信接收或发送缓冲区 BOOLPurgeComm( HANDLEhFile, //串口句柄DWORD dwFlags) //需要完成的操作参数dwFlags指定要完成的操作,可以是下列值的组合PURGE_TXAB0RT中断所有写操作并立即返回,即使写操作还没有完成;PURGE_RXAB0RT中断所有读操作并立即返回, 即使读操作还没有完成;PURGE_T)(CLEAR清除输出缓冲区 PURGE_RXCLEAR清除输入缓冲区⑤恢复或取得通信口状态BOOL ClearCommError(HANDLE hFile,//通信设备句柄LPDffORD IpErrors,//指针指向接收错误代码LPCOMSTAT IpStat//指针指向通信状态数据缓存区);⑥从通信接收缓冲区读字符 BOOL ReadFile(HANDLE hFile, //串口的句柄LPVOID IpBuffer,//保存读入数据的指针DWORD nNumberOfBytesToRead,//要读入的数据的字节数LPDffORD IpNumberOfBytesRead, // 实际读入的字节数 LPOVERLAPPED IpOverlapped)//OVERLAPPED,同步为 NULL⑦向通信发送缓冲区写字符 BOOL WriteFile(HANDLE hFile,//串口的句柄LPCVOIDlpBuffer,//要写入数据的地址DWORD nNumberOfBytesToffrite, //要写入数据的字节数 LPDffORD IpNumberOfBytesffritten, // 实际写入的字节数 LPOVERLAPPEDlpOverlapped)//OVERLAPPED,同步为 NULL。⑧关闭通信串口 CloseHandle (hComm)。
4.根据权利要求1所述的对通信特服终端设备进行实时监控的实现方法,其特征是所述步骤3)中,设计定时器,实现串口控制,其具体实施步骤如下①设置定时器1,如设置不成功则弹出出错对话框,提示定时器设置不成功,重新设置。while( ! SetTimer(hffnd, IDM_TIME1,500, NULL)){if (IDCANCEL = = MessageBox(hffnd, “Timerl Error“ , “ return“, MB_RETRYCANCEL|MB_IC0NEXCLAMATI0N)) return FALSE ;}②设置定时器2,如设置不成功则弹出出错对话框,提示定时器设置不成功,重新设置。while ( ! SetTimer (hffnd, IDM_TIME2,100, NULL)){if (IDCANCEL = = MessageBox(hffnd, “Timer2 Error" , “ RETURN", MB_RETRYCANCEL|MB_IC0NEXCLAMATI0N)) return FALSE ;}③设置定时器3,如设置不成功则弹出出错对话框,提示定时器设置不成功,重新设置。while ( ! SetTimer (hffnd, IDM_TIME3, 50, NULL)){if (IDCANCEL = = MessageBox(hffnd, “Timer3 Error" , “ RETURN", MB_RETRYCANCEL|MB_ICONEXCLAMATION)) return FALSE ;}定时器4、5的设置方式同上。不在赘述。
5.根据权利要求1所述的对通信特服终端设备进行实时监控的实现方法,其特征是所述步骤4)中,实时更新显示及控制管理程序,其具体实施步骤如下①其程序流程图如图4所示。②它所使用的函数有a)BoolPort Init (Handle hw,intbpl,int bp2);用于设置串行工作状态,初始化串行口,初始化不正确给出错误提示。b)Cleabutton(void)用于清除与之相对应在退出功能时的按纽。c)BoolLB(int bitl)画笔在进入某个子功能时,用于装入某个位图。d)BoolDele bitmap ()在退出某个子功能时,删除每个子功能画笔位图。e)Void setupButton(void) 在进入某项功能所需要的按纽。③它所使用的对话框有a)MLF2DLGPR0C模拟用户线分组对话框b)2XF2DLGPR0C座席分组对话框c)XF2DLGPR0C线路分组对话框,用于分组功能时,通过对话框选择相应分组路数,分组类型d)BSHELPDLGPROC 提示闭塞功能时的帮助信息e)2XBSDLGPR0C用户模拟线闭塞功能,选择时弹出的对话框f)2XBSDLGPR0C座席线闭塞功能,选择时弹出的对话框g)XLBSDLGPROC数字线路闭塞功能,选择时弹出的对话框在闭塞设置时,通过对话框选择相应闭塞或开放线路④它所处理的消息类型有a)case WM_CREATE //在创建窗口时创建10个功能按纽b)case WM_COMMAND //收到命令信息分析信息c)case WM_TIMER //定时器信息来的处理d)caseWM_PAINT // 画笔处理e)case WM_DESTROY //退出主窗口时处理。
全文摘要
通信数据在传输过程中,需要对通信特服终端设备的工作状态进行实时的监测,以便发现故障及时反馈、及时修理。在沟通通信设备和监控机时常用的数据交换方式有许多,如无线通信技术、基于网络的数据传输技术、和串口通信技术等。采用串口通信技术,具有成本低、保密性强、安全稳定等优点,因此本发明在监控通信特服终端设备时采用串口通信技术,即采用监控计算机与通信特服终端之间进行串口通信,实时地从通信终端设备中传出状态信息,监控机接收数据并实时显示状态;在监控机端可以人为发出指令,进行线路或坐席的调度、控制等管理工作。监控机端采用BORLANDC C++BUILDER语言编程实现屏幕实时更新、监控管理工作;在通信特服终端设备与监控机间采用RS232串口通信技术进行数据交换,双方对数据格式进行约定,采用功能码区分各种菜单按钮功能。
文档编号H04M3/22GK102467432SQ20101053461
公开日2012年5月23日 申请日期2010年11月4日 优先权日2010年11月4日
发明者周琳 申请人:周琳
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1