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

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

Info

Publication number
CN102467432A
CN102467432A CN2010105346169A CN201010534616A CN102467432A CN 102467432 A CN102467432 A CN 102467432A CN 2010105346169 A CN2010105346169 A CN 2010105346169A CN 201010534616 A CN201010534616 A CN 201010534616A CN 102467432 A CN102467432 A CN 102467432A
Authority
CN
China
Prior art keywords
communication
serial
timer
data
function
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN2010105346169A
Other languages
English (en)
Inventor
周琳
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Chen Jixia
Fang Bingwu
Zhou Lin
Original Assignee
Individual
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Individual filed Critical Individual
Priority to CN2010105346169A priority Critical patent/CN102467432A/zh
Publication of CN102467432A publication Critical patent/CN102467432A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Communication Control (AREA)

Abstract

通信数据在传输过程中,需要对通信特服终端设备的工作状态进行实时的监测,以便发现故障及时反馈、及时修理。在沟通通信设备和监控机时常用的数据交换方式有许多,如无线通信技术、基于网络的数据传输技术、和串口通信技术等。采用串口通信技术,具有成本低、保密性强、安全稳定等优点,因此本发明在监控通信特服终端设备时采用串口通信技术,即采用监控计算机与通信特服终端之间进行串口通信,实时地从通信终端设备中传出状态信息,监控机接收数据并实时显示状态;在监控机端可以人为发出指令,进行线路或坐席的调度、控制等管理工作。监控机端采用BORLANDC C++BUILDER语言编程实现屏幕实时更新、监控管理工作;在通信特服终端设备与监控机间采用RS232串口通信技术进行数据交换,双方对数据格式进行约定,采用功能码区分各种菜单按钮功能。

Description

采用串口通信对通信特服终端设备进行监控的实现方法
技术领域  本发明属于通信技术领域,特别涉及对通信特服终端设备的监控,即根据接收信息对线路和工作坐席台当前工作状态进行直观显示,根据发送信息进行线路开放、调度、闭锁,坐席开放、调度、闭锁等一系列控制管理工作。
背景技术  通信数据在传输过程中,需要对通信特服终端设备的工作状态进行实时的监测,以便发现故障及时反馈、及时修理。在沟通通信设备和监控机时常用的数据交换方式有许多,如无线通信技术、基于网络的数据传输技术、和串口通信技术等。采用串口通信技术,具有成本低、保密性强、安全稳定等优点,因此本发明在监控通信特服终端设备时采用串口通信技术。即采用监控计算机与通信特服终端之间进行串口通信,实时地从通信终端设备中传出状态信息,监控机接收数据并实时显示状态;在监控机端可以人为发出指令,进行线路或坐席的调度、控制等管理工作。
目前,实现串口通信的方法很多,比如①用ACTIVEX控件实现串口通信②利用WINDOWS提供的标准通信API函数实现串口通信。本发明采用WINDOWS提供的标准通信API函数实现串口通信。
在实时显示部分的程序设计中,可采用的编程语言也非常多,常用的有VC++、VB、BORLANDCC++、C#等,本发明采用BORLANDC C++BUILEDR语言编程实现监控机实时显示与交互。
在串口通信数据的读写控制方面,可采用WINDOWS定时器进行数据读写控制,也可采用多线程通信中使用的监控串口事件的方式对串口通信进行控制,考虑到通信监控的稳定性、时性、专业性等因素,本发明采用定时器方式进行串口通信控制。
发明内容  本发明提出了采用BORLANDC C++BUILDER编程进行监测机后台管理,配合WINDOWS提供的标准通信API函数实现串口通信,采用定时器进行串口通信控制的实现方法。具体技术方案如下:
1)设计串口通信硬件电路。
2)设计串口通信程序实现串口通信;
3)设计定时器,实现串口控制;
4)设计实时更新显示及控制管理程序。
所述步骤1)中,通信终端设备端采用8051系列单片机,监测机端采用80X86系列主机,选择RS232进行串口通信,选择MAX238作为接口芯片,其结构示意图如图1所示。串口通信过程中通信特服终端设备所传出的数据主要有:①线路状态信息②坐席状态信息③经通信终端设备统计后的工作量数据。监测机发出的数据主要有:①线路控制信息②坐席控制信息
所述步骤2)中,串口通信程序设计主要包含如下内容:
1、打开串口    所使用函数CreateFile
该函数的原型为:HANDLE CreateFile(
LPCTSTR lpFileName,            //lpFileName:将要打开的串口逻辑名,如“COM1”;
DWORD dwDesiredAccess,     //dwDesiredAccess:指定串口访问的类型,可以是读取、写//
                            入或二者并列;
DWORD dwShareMode,         //dwShareMode:指定共享属性,由于串口不能共享,该参数
                            //必须置为0;
LPSECURITY_ATTRIBUTES lpSecurityAttributes,  //lpSecurityAttributes:引用安全性属性
                                              //结构,缺省值为NULL;
DWORD dwCreationDistribution,  //dwCreationDistribution:创建标志,对串口操作该参数
                                //必须置为OPEN_EXISTING;
DWORD dwFlagsAndAttributes,    //dwFlagsAndAttributes:属性描述,用于指定该串口是
                                //否进行异步操作,该值为FILE_FLAG_OVERLAPPED
                                //表示使用异步的I/O;该值为0,表示同步I/O操作;
HANDLE hTemplateFile)           //hTemplateFile:对串口而言该参数必须置为NULL;
2、配置串口    所使用函数BuildCommDCB
在打开通讯设备句柄后,常常需要对串口进行一些初始化配置工作。这需要通过一个DCB结构来进行。DCB结构包含了诸如波特率、数据位数、奇偶校验和停止位数等信息。在查询或配置串口的属性时,都要用DCB结构来作为缓冲区。DCB主要有以下几个重要的成员:
①BYTE ByteSize  //通信字节位数
②BYTEParity       //指定奇偶校验方法。此成员可以有下列值://EVENPARITY偶校验NOPARITY无校验//MARKPARITY标记校验ODDPARITY奇校验
③BYTEStopBits//指定停止位的位数。此成员可以有下列值://ONESTOPBIT1位停止位//TWOSTOPBITS2位停止位//ONE5STOPBITS1.5位停止位
除了使用BCD 设置串口的一些基本参数外,一般还需要设置串口收发数据缓冲区的大小和超时,超时的作用是在指定的时间内没有读入或发送指定数量的字符,读写操作仍然会结束。Windows用I/O缓冲区来暂存串口输入和输出的数据,如果通信的速率较高,则应该设置较大的缓冲区。我们可以使用API函数SetupComm设置串口的输入和输出缓冲区的大小,其原型如下:BOOL SetupComm(
HANDLE hFile,     //串口句柄
DWORD dwInQueue,  //输入缓冲区的大小(字节数)
DWORD dwOutQueue)  //输出缓冲区的大小(字节数)
串口初始化的过程为
DCB dcb;//定义数据控制块结构
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、设置通信口状态            所使用函数SetCommState
函数原型:BOOL SetCommState(
HANDLE hFile,      //通信设备句柄
LPDCB lpDCB         //指针指向DCB结构块
);
要修改串行口的配置,应该先修改DCB结构,然后再调用SetCommS tate函数用指定的DCB结构来设置串行口。
4、清除通信接收或发送缓冲区    所使用函数PurgeComm
在读写串口之前,还要用PurgeComm(...)函数清空缓冲区,该函数原型:
BOOLPurgeComm(
HANDLEhFile,           //串口句柄
DWORD dwFlags)          //需要完成的操作参数dwFlags指定要完成的操作,可以是下列值的
                        组合:PURGE_TXABORT中断所有写操作并立即返回,即使写操
                        作还没有完成;PURGE_RXABORT中断所有读操作并立即返回,
                        即使读操作还没有完成;PURGE_TXCLEAR清除输出缓冲区
                        PURGE_RXCLEAR清除输入缓冲区
5、恢复或取得通信口状态        所使用函数ClearCommError
函数原型:BOOL ClearCommError(
HANDLE hFile,              //通信设备句柄
LPDWORD lpErrors,          //指针指向接收错误代码
LPCOMSTAT lpStat            //指针指向通信状态数据缓存区
);
说明:在调用ReadFile和WriteFile之前,线程应该调用ClearCommError函数清除错误标志。该函数负责报告指定的错误和设备的当前状态。
6、从通信接收缓冲区读字符    所使用函数ReadFile
函数原型:BOOL ReadFile(
HANDLE hFile,                    //串口的句柄
LPVOID lpBuffer,                 //保存读入数据的指针
DWORD nNumberOfBytesToRead,      //要读入的数据的字节数
LPDWORD lpNumberOfBytesRead,     //实际读入的字节数
LPOVERLAPPED lpOverlapped)        //OVERLAPPED,同步为NULL
7、向通信发送缓冲区写字符      所使用函数WriteFile
函数原型:BOOL WriteFile(
HANDLE hFile,                    //串口的句柄
LPCVOIDlpBuffer,                 //要写入数据的地址
DWORD nNumberOfBytesToWrite,     //要写入数据的字节数
LPDWORD lpNumberOfBytesWritten,  //实际写入的字节数
LPOVERLAPPEDlpOverlapped)         //OVERLAPPED,同步为NULL。
说明:在进行同步操作时,读写函数要等到执行完才返回,而在异步操作时函数立即返回,但不保证读写操作完成,这时候就需要使用OVERLAPPED结构进行异步控制,该结构体有一个重要的成员hEvent,该成员是windows事件对象的句柄在控制线程同步及异步操作时常用到,如果是异步操作,我们可以使用CreateEvent(...)创建事件对象并将返回值赋给hEvent,然后使用WaitForSingleObject或GetOverlappedResult等待读写操作完成,进而达到控制异步操作的目的。
8、关闭通信串口            所使用函数CloseHandle
在不使用串口的时候应该将其关闭,以释放windows的资源供其他程序使用,关闭串口只需调用CloseHandle(hComm/*串口句柄*/)即可。
所述步骤3)中,采用设置定时器的方法实现串口通信的读写控制。
①设置定时器1控制线路状态信息的接收
②设置定时器2控制数据的发送
③设置定时器3控制坐席状态信息的接收。
④退出时删除定时器1、定时器2、定时器3
所述步骤4)中,采用BORLANDC 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或126等其它特服,可实现线路座席分组使用,不会交叉分配。
9、告警功能
可以监测PCM同步信号,座席全锁信号和其它各种故障信号,在它们不能正常工作时给出告警图象并按有蜂鸣声,故障恢复,告警图象消失同时关闭蜂鸣声音。
10、测试串行口
以上所有功能都是以串行口正常通信为基础的,因此串行口能否正常工作是整个监测功能否得以实现的关键。因此特意设计了测试串行口的功能,对串行口是否有数据传输进行检测,有则实时显示抓捕的数据。
附图说明
图1——串口通信硬件实现图
图2——串口通信部分程序流程图
图3——8251读写操作功能图
图4——监控程序总流程图
具体实施方式  以下从设计串口通信硬件电路、设计定时器实现串口控制、设计串口通信程序实现串口通信,、设计监控显示及管理程序四个方面分别介绍具体实施方式。
1、串口通信硬件电路及数据传送协议设计
串口通信硬件电路的设计如图1所示。本电路采用串行接口电路8251设计,采用RS232串行口与监控机之间通信,向监控机传送系统各种可视、可闻信号。监控机能明确直观地显示整个系统的工作状态,便于工作人员的诊断、维护。8251是一种全双工同步/异步/接收/发送器,可作为各种微处理器和单片机的串行接口电路。其中包括接收器、发生器、调制解调器控制电路、读/写控制电路、状态缓冲器、发送命令/数据缓冲器和接收缓冲器等。
其工作原理如下:
①接收数据
串行传送时,数据接收器接收在RXD引脚上串行输入的数据,并把它转换为并行数据,送入接收缓冲器。本电路工作于异步工作方式,在允许接收和接收准备好时,监视RXD输入端。在无字符传送时,RXD端为高电平。当RXD端出现低电平时,启动内部计数器计数,在计数到个字符宽度的1倍时重新采样RXD端。若RXD仍为低电平,则确认起始位。此后每隔16个脉冲采样一次RXD端,作为数据输入,送入移位寄存器。经移位,奇偶校验和去掉停止位后,并行送入接收数据缓冲器,同时发RXRDY信号,向CPU表示数据已经接收好。
②发送数据
串口传输时,数据由发送器发出。发送器接收CPU送来的并行数据,加上起始位、奇偶校验位和停止位后,由TXD输出端串行发出。
③读写控制电路用来对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、设计定时器
当需要每隔一段时间执行一件事件的的时候就需要使用SetTimer函数设置定时器。本发明中采用设置定时器,并应用定时器去控制串口读写,即每隔一定时间间隔去读一次串口或写一次串口。使用定时器的方法比较简单,通常告诉WINDOWS一个时间间隔,然后WINDOWS根据时间间隔周期性触发程序,即发送WM_TIMER消息。主程序中循环扫描消息,扫描到WM_TIMER消息,即知道间隔时间到了,转去读串口或写串口。
SetTimer函数的原型:
UINT_PTR SetTimer(
  HWND hWnd,             //窗口句柄
  UINT_PTR nIDEvent,   //定时器ID,多个定时器时,可以通过该ID判断是哪个定时器
  UINT uElapse,          //时间间隔,单位为毫秒
  TIMERPROC lpTimerFunc      //回调函数
);
1)本程序设置三个定时器,设计程序如下:
①设置定时器1,如设置不成功则弹出出错对话框,提示定时器设置不成功,重新设置。
while(!SetTimer(hWnd,IDM_TIME1,500,NULL))
   {
    if(IDCANCEL==MessageBox(hWnd,
        ″Timer1 Error″,″return″,
        MB_RETRYCANCEL|MB_ICONEXCLAMATION))
       return FALSE;
    }
②设置定时器2,如设置不成功则弹出出错对话框,提示定时器设置不成功,重新设置。
while(!SetTimer(hWnd,IDM_TIME2,100,NULL))
   {
    if(IDCANCEL==MessageBox(hWnd,
     ″Timer2 Error″,″RETURN″,
       MB_RETRYCANCEL|MB_ICONEXCLAMATION))
       return FALSE;
   }
③设置定时器3,如设置不成功则弹出出错对话框,提示定时器设置不成功,重新设置。
while(!SetTimer(hWnd,IDM_TIME3,50,NULL))
   {
     if(IDCANCEL==MessageBox(hWnd,
     ″Timer3 Error″,″RETURN″,
     MB_RETRYCANCEL|MB_ICONEXCLAMATION))
     return FALSE;
   }
定时器4、5的设置方式同上。不在赘述。
在设计定时器时间间隔时要兼顾到,串口对数据的处理速度,避免读串口数据未读完,又转去执行写串口数据程序。因此设计的间隔时间要足够保证必须处理的数据处理完。本设计中分别设置了500,100,50三种间隔,经运行,可确保数据的执行。解决此类问题的另一种方法是用完一个定时器后及时关闭,等待再次用到时重新打开。
在程序结束时,删除定时器,其实现方式如下:
删除定时器1、2、3:(定时器4、5删除方式相同,省略)
KillTimer(hWnd,IDM_TIME1);
KillTimer(hWnd,IDM_TIME2);
KillTimer(hWnd,IDM_TIME3);
3、串口通信程序设计
创建程序中设置窗口,和功能按钮,设置定时器,完成一系列初始化工作。
①串口初始化
I、打开串口,,并设置输入输出缓冲区大小:
idComDev=CreateFile(″com2″,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,
0,NULL);                  //打开串口
SetupCommidComDev,,4,2);//设置输入、输出缓冲区的大小(传送坐席信息时)
SetupCommidComDev,,64,64);//设置输入、输出缓冲区的大小(传送线路状态信息时)
II、配置串口:
BuildCommDcb(″com2:300,n,8,1″,&dcb);//创建数据控制块DCB结构,波特率
                                            //300,每次传送一字节数据,即8位
III、定义块:
SetCommState(idComDev,&dcb);
完成串口初始化。
②消息循环
串口初始化完成后程序进入消息循环。、其实现语句如下:
 ShowWindow(hWnd,SW_SHOWMAXIMIZED);显示窗口并发送消息程序主窗口
UpdateWindow(hWnd);                  WM_PAINT
while(GetMessage(&msg,NULL,0,0))      进入消息循环
     if(!IsDialogMessage(hWnd,&msg))
    {
     TranslateMessage(&msg);
     DispatchMessage(&msg);
    }
    return msg.wParam;
}
采用循环方式查询各种消息,并实时处理消息,如果此时接收到和定时器有关的WM_TIMER消息,则转去执行相应处理程序,其程序设计如下:
    case WM_TIMER:                        定时器信息来
         switch(wParam)                    判断是定时器几
       {
         case IDM_TIME1:    //time1 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(hWnd,&rect,FALSE);
        }
      if(sionumb!=0)
 {
      yuan[0]=outsio[sionumb-1];
      sionumb=sionumb-1;
PurgeComm(idComDev,PURGE_TXABORT|PURGE_RXABORT|PURGE_TXCLEAR|PURGE_RXCLEAR
);                                                     //清除输出缓冲区
      WriteFile(idComDev,yuan,1,xnumb,NULL);//写串口,即送出功能码130(程序初始化时定义
                                                 //功能码,每个功能的功能码各不相同),请求设备
                                                 //送线路状态信息
   }
       }
    break;                //time1 end
      case IDM_TIME2:                    是定时器2则读串口
      {
PurgeComm(idComDev,PURGE_TXABORT|PURGE_RXABORT|PURGE_TXCLEAR|PURGE_RXCLEAR
);                                               //清除输入缓冲区
       if(ReadFile(idComDev,bin,1,dnumb,NULL)==1)
switch(bz)                                   对读入的信息进行分析
{
    case 1:                       //线路状态,约定设备回送一字节内容,其中D7 D6 D5线路状态
                                   //D4D3D2D1D0线路号应小于30*/
 {
   if(beginb<8)break;                 取数据、分析数据
   y=(bin[0]>>5)&7;                 并控制画笔对改动部份进行状态更新
    i=bin[0]&0x1f;
     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;      //应答工作量加1
         if(mlst[i]==0)
         hrnumb=hrnumb+1;
         }
         pcmst[i]=y;           //更新线路状态变量数据
        x=i;y=0;
        while(x>9)              //在对应位置更新屏幕显示
     {x=x-10;y++;}
       rect.left=x*54+39;
       rect.right=rect.left+57;
       rect.top=y*66+84+20;
       rect.bottom=rect.top+76;
       InvalidateRect(hWnd,&rect,FALSE);
      }
    }
         break;
    case  2                      //如果送回的是坐席信息(一字节),,约定D7~D4为坐席状态
                                     //信息,D3~D0为坐席号
        y=(bin[0]>>4)&15;    //根据接收状态信息,更新屏幕显示
        zxst[y]=bin[0]&15;
          If(y>7)
        {
          y=(y&7)+1;x=0;
          While(y>1)
             {y=y-2;x=x+1;}
             Rect.left=y*223+192;
             Rect.right=rect.left+100;
             Rect.top=x*45+147;
             Rect.bottom=rect.top+23;
             InvalidateRECT(hWnd,&rect,FALSE);
      Break;
       }
    }
  }
Return 0;
    }        //switch bz end
    break;               //time2 end
  }
是定时器3来消息,处理方式同上,请求设备送工作量信息。读取工作量。工作量信息,如总呼入量信息,在传送过程中采用四字节完成,其数据约定如下:
第3字节D7D6=11     D5~D0  工作量低六位
第2字节D7D6=10     D5~D0  工作量中六位
第1字节D7D6=01     D5  工作量高一位D4~D0地址高五位
第0字节D7D6=00     D5~D0  地址低6位
对工作量进行存储,其实现程序如下:
hFile=OpenFile(″c:\″work.dat″,&ofs,OF_WRITE);
_llseek(hFile,((timework[i][2]-1)*24+timework[i][3]*32,0);
for(j=1;j<17′j++)
{
   _write(hFile,&g2lwork1[i][j],2);
   _Iclose(hFile);
}
③退出处理
对消息的处理完成后,结束退出时,删除定时器1、2、3......,退出消息循环。其实现语句如下:
 case ESC:                       按下子按纽退出则
 for(i=0;i<10;i++)            使主功能键可选
 EnableWindow(hbutton[i],TRUE);
 Delebitmap(bz);                 删除字位图、画笔
 bzl=0;
 zl=FALSE;
 CloseHandle(idComDev);          关串口
 InvalidateRect(hWnd,NULL,FALSE);
 return 0;
 }
break;
}
 case WM_DESTROY:                 退出主窗口时处理
      DeleteObject(HBJ);          1.删背景位图
      if(!bz)
      Delebitmap(bz);             2.删当前位图
      KillTimer(hWnd,IDM_TIME1); 3.删定时器1、2、3
      KillTimer(hWnd,IDM_TIME2);
      KillTimer(hWnd,IDM_TIME3);
      PostQuitMessage(0);         4.发退出消息置主程序
      return 0;                   消息循环
4、监控显示及管理程序设计
●其程序流程图如图4所示。
●它所使用的函数有
1).Bool Port Init(Handle hw,intbp1,int bp2);
用于设置串行工作状态,初始化串行口,初始化不正确给出错误提示。
2).Clea button(void)
用于清除与之相对应在退出功能时的按纽
3).Bool LB(int bit1)
画笔在进入某个子功能时,用于装入某个位图
4).BoolDele bitmap()
在退出某个子功能时,删除每个子功能画笔位图
5).Void setupButton(void)
在进入某项功能所需要的按纽
●它所使用的对话框有:
1).MLF2DLGPROC   模拟用户线分组对话框
2).2XF2DLGPROC   座席分组对话框
3).XF2DLGPROC    线路分组对话框
用于分组功能时,通过对话框选择相应分组路数,分组类型
4).BSHELPDLGPROC    提示闭塞功能时的帮助信息
5).2XBSDLGPROC      用户模拟线闭塞功能,选择时弹出的对话框
6).2XBSDLGPROC      座席线闭塞功能,选择时弹出的对话框
7).XLBSDLGPROC      数字线路闭塞功能,选择时弹出的对话框
在闭塞设置时,通过对话框选择相应闭塞或开放线路
●它所处理的消息类型有:
1)case WM_CREATE:     //在创建窗口时创建10个功能按纽
2)case WM_COMMAND:    //收到命令信息分析信息
3)case WM_TIMER:      //定时器信息来的处理
4)case WM_PAINT:      //画笔处理
5)case WM_DESTROY:    //退出主窗口时处理

Claims (5)

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~D0  工作量低六位
第2字节D7D6=10     D5~D0  工作量中六位
第1字节D7D6=01     D5      工作量高一位D4~D0地址高五位
第0字节D7D6=00     D5~D0  地址低6位
④线路控制信息
约定监控机送一字节内容给通信特服终端设备,00代表开放线路,55代表闭锁线路。
⑤坐席控制信息
约定监控机送一字节内容给通信特服终端设备,00代表开放坐席,55代表闭锁坐席。
3)主要功能码设计
①130  请求设备发送线路状态。
②131  请求设备发送坐席状态信息。 
③132  请求设备发送工作量信息。
④133  发送PCM设置信息给通信设备。00代表开放线路,55代表闭锁线路。
⑤134  发送坐席设置信息给通信设备。00代表开放坐席,55代表闭锁坐席。
……
3.根据权利要求1所述的对通信特服终端设备进行实时监控的实现方法,其特征是所述步骤2)中,设计串口通信程序实现串口通信,具体实施步骤如下:
①打开串口
HANDLE CreateFile(
LPCTSTR lpFileName,           //lpFileName:将要打开的串口逻辑名,如“COM1”;
DWORD dwDesiredAccess,    //dwDesiredAccess:指定串口访问的类型,可以是读取、写//
                           入或二者并列;
DWORD dwShareMode,        //dwShareMode:指定共享属性,由于串口不能共享,该参数
                           //必须置为0;
LPSECURITY_ATTRIBUTES      lpSecurityAttributes,//lpSecurityAttributes:引用安全性属性
                                                 //结构,缺省值为NULL;
DWORD dwCreationDistribution,  //dwCreationDistribution:创建标志,对串口操作该参数
                                //必须置为OPEN_EXISTING;
DWORD dwFlagsAndAttributes,    //dwFlagsAndAttributes:属性描述,用于指定该串口是
                                //否进行异步操作,该值为FILE_FLAG_OVERLAPPED
                                //表示使用异步的I/O;该值为0,表示同步I/O操作;
HANDLE hTemplateFile)           //hTemplateFile:对串口而言该参数必须置为NULL;
②配置串口 
BuildCommDCB(“COM2:9600,N,8,1”,&dcb);
③设置通信口状态
BOOL SetCommState(
HANDLE hFile,    //通信设备句柄
LPDCB lpDCB       //指针指向DCB结构块
);
④清除通信接收或发送缓冲区
BOOLPurgeComm(
HANDLEhFile,  //串口句柄
DWORD dwFlags)    //需要完成的操作参数dwFlags指定要完成的操作,可以是下列值的
                  组合:PURGE_TXABORT中断所有写操作并立即返回,即使写操
                  作还没有完成;PURGE_RXABORT中断所有读操作并立即返回,
                  即使读操作还没有完成;PURGE_TXCLEAR清除输出缓冲区
                  PURGE_RXCLEAR清除输入缓冲区
⑤恢复或取得通信口状态
BOOL ClearCommError(
HANDLE hFile,               //通信设备句柄
LPDWORD lpErrors,        //指针指向接收错误代码
LPCOMSTAT lpStat         //指针指向通信状态数据缓存区
);
⑥从通信接收缓冲区读字符
BOOL ReadFile(
HANDLE hFile,    //串口的句柄 
LPVOID lpBuffer,              //保存读入数据的指针
DWORD nNumberOfBytesToRead,      //要读入的数据的字节数
LPDWORD lpNumberOfBytesRead,     //实际读入的字节数
LPOVERLAPPED lpOverlapped)        //OVERLAPPED,同步为NULL
⑦向通信发送缓冲区写字符
BOOL WriteFile(
HANDLE hFile,                 //串口的句柄
LPCVOIDlpBuffer,            //要写入数据的地址
DWORD nNumberOfBytesToWrite,//要写入数据的字节数
LPDWORD lpNumberOfBytesWritten,//实际写入的字节数
LPOVERLAPPEDlpOverlapped)       //OVERLAPPED,同步为NULL。
⑧关闭通信串口CloseHandle(hComm)。
4.根据权利要求1所述的对通信特服终端设备进行实时监控的实现方法,其特征是所述步骤3)中,设计定时器,实现串口控制,其具体实施步骤如下:
①设置定时器1,如设置不成功则弹出出错对话框,提示定时器设置不成功,重新设置。
while(!SetTimer(hWnd,IDM_TIME1,500,NULL))
   {
    if(IDCANCEL==MessageBox(hWnd,
    ″Timer1 Error″,″return″,
      MB_RETRYCANCEL|MB_ICONEXCLAMATION))
     return FALSE;
   } 
②设置定时器2,如设置不成功则弹出出错对话框,提示定时器设置不成功,重新设置。
while(!SetTimer(hWnd,IDM_TIME2,100,NULL))
   {
    if(IDCANCEL==MessageBox(hWnd,
     ″Timer2 Error″,″RETURN″,
       MB_RETRYCANCEL|MB_ICONEXCLAMATION))
       return FALSE;
   }
③设置定时器3,如设置不成功则弹出出错对话框,提示定时器设置不成功,重新设置。
while(!SetTimer(hWnd,IDM_TIME3,50,NULL))
   {
    if(IDCANCEL==MessageBox(hWnd,
    ″Timer3 Error″,″RETURN″,
    MB_RETRYCANCEL|MB_ICONEXCLAMATION))
    return FALSE;
   }
定时器4、5的设置方式同上。不在赘述。
5.根据权利要求1所述的对通信特服终端设备进行实时监控的实现方法,其特征是所述步骤4)中,实时更新显示及控制管理程序,其具体实施步骤如下:
①其程序流程图如图4所示。 
②它所使用的函数有
a)Bool Port Init(Handle hw,intbp1,int bp2);
用于设置串行工作状态,初始化串行口,初始化不正确给出错误提示。
b)Clea button(void)
用于清除与之相对应在退出功能时的按纽。
c)Bool LB(int bit1)
画笔在进入某个子功能时,用于装入某个位图。
d)BoolDele bitmap()
在退出某个子功能时,删除每个子功能画笔位图。
e)Void setupButton(void)
在进入某项功能所需要的按纽。
③它所使用的对话框有
a)MLF2DLGPROC       模拟用户线分组对话框
b)2XF2DLGPROC       座席分组对话框
c)XF2DLGPROC        线路分组对话框,用于分组功能时,
                    通过对话框选择相应分组路数,分组类型
d)BSHELPDLGPROC     提示闭塞功能时的帮助信息
e)2XBSDLGPROC       用户模拟线闭塞功能,选择时弹出的对话框
f)2XBSDLGPROC       座席线闭塞功能,选择时弹出的对话框
g)XLBSDLGPROC       数字线路闭塞功能,选择时弹出的对话框
                    在闭塞设置时,通过对话框选择相应闭塞或开放线路
④它所处理的消息类型有
a)case WM_CREATE:    //在创建窗口时创建10个功能按纽 
b)case WM_COMMAND:    //收到命令信息分析信息
c)case WM_TIMER:      //定时器信息来的处理
d)case WM_PAINT:      //画笔处理
e)case WM_DESTROY:    //退出主窗口时处理 。
CN2010105346169A 2010-11-04 2010-11-04 采用串口通信对通信特服终端设备进行监控的实现方法 Pending CN102467432A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2010105346169A CN102467432A (zh) 2010-11-04 2010-11-04 采用串口通信对通信特服终端设备进行监控的实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2010105346169A CN102467432A (zh) 2010-11-04 2010-11-04 采用串口通信对通信特服终端设备进行监控的实现方法

Publications (1)

Publication Number Publication Date
CN102467432A true CN102467432A (zh) 2012-05-23

Family

ID=46071096

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2010105346169A Pending CN102467432A (zh) 2010-11-04 2010-11-04 采用串口通信对通信特服终端设备进行监控的实现方法

Country Status (1)

Country Link
CN (1) CN102467432A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104378682A (zh) * 2014-11-14 2015-02-25 乐视致新电子科技(天津)有限公司 一种基于安卓系统的按键统计方法和智能电视
CN108616372A (zh) * 2016-12-12 2018-10-02 中国航空工业集团公司西安航空计算技术研究所 基于串口的fc交换机状态查询与控制方法
CN111624909A (zh) * 2020-05-18 2020-09-04 淮安信息职业技术学院 一种新型陀螺仪传感器数据输出系统及其控制方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1298150A (zh) * 2000-12-26 2001-06-06 北京和利时系统工程股份有限公司 现场总线外围设备主站的软件实现方法
CN1983207A (zh) * 2005-12-12 2007-06-20 深圳艾科创新微电子有限公司 一种通过pc对i2c接口器件进行调试的系统及方法
CN101038681A (zh) * 2007-04-20 2007-09-19 哈尔滨工程大学 柴油机运行数据记录仪及记录方法
CN101264755A (zh) * 2008-03-06 2008-09-17 上海交通大学 车辆行驶安全智能监控装置
US20090083589A1 (en) * 2007-09-20 2009-03-26 Siemens Energy & Automation, Inc. Systems, devices, and/or methods for managing communications

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1298150A (zh) * 2000-12-26 2001-06-06 北京和利时系统工程股份有限公司 现场总线外围设备主站的软件实现方法
CN1983207A (zh) * 2005-12-12 2007-06-20 深圳艾科创新微电子有限公司 一种通过pc对i2c接口器件进行调试的系统及方法
CN101038681A (zh) * 2007-04-20 2007-09-19 哈尔滨工程大学 柴油机运行数据记录仪及记录方法
US20090083589A1 (en) * 2007-09-20 2009-03-26 Siemens Energy & Automation, Inc. Systems, devices, and/or methods for managing communications
CN101264755A (zh) * 2008-03-06 2008-09-17 上海交通大学 车辆行驶安全智能监控装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104378682A (zh) * 2014-11-14 2015-02-25 乐视致新电子科技(天津)有限公司 一种基于安卓系统的按键统计方法和智能电视
CN108616372A (zh) * 2016-12-12 2018-10-02 中国航空工业集团公司西安航空计算技术研究所 基于串口的fc交换机状态查询与控制方法
CN111624909A (zh) * 2020-05-18 2020-09-04 淮安信息职业技术学院 一种新型陀螺仪传感器数据输出系统及其控制方法

Similar Documents

Publication Publication Date Title
US5673190A (en) Multipurpose remote office machine management system
US4752950A (en) Remote control system for franking machines
CN108965044A (zh) 一种电动汽车充电设施通信数据链路健康状态测试装置、系统和方法
CN101079088B (zh) 一种密码保护系统和方法
CN209170419U (zh) 一种基于数字化双胞胎的设备远程维护系统
CN100546262C (zh) 一种宽带航空电子总线测试装置及其操作方法
CN107819323A (zh) 基于可视化展示的智能变电站二次设备在线运维方法及系统
CN102279827A (zh) 一种多功能通讯转接盒
CN107395773A (zh) 一种物联网管理方法及物联网管理平台
CN107706889A (zh) 基于智能比对的智能变电站二次设备在线运维方法及系统
CN102143458A (zh) 基于无线通信网络中gsm短消息传输的多协议转换器
CN102467432A (zh) 采用串口通信对通信特服终端设备进行监控的实现方法
CN109214040A (zh) 一种基于bim的装配式施工实时监控系统和方法
CN107491850A (zh) 一种生产质量监控系统
JPS6192069A (ja) 公衆電話機
JPS592418B2 (ja) 通信回線遠隔制御装置
CN206805257U (zh) 基于云技术的水泵控制监测系统
CN106059090A (zh) 一种基于调度自动化系统提示系统及其工作方法
CN103685612A (zh) 用于传输地址信息、诊断信息和/或配置信息的方法、基础设施设备以及诊断设备
CN201072431Y (zh) 一种宽带航空电子总线测试装置
CN101136756B (zh) 网络远程控制主机上电自检的方法、系统和bmc芯片
CN103747088B (zh) 一种用于全范围模拟机传输数据的方法及数据传输系统
JPH0277907A (ja) Mdi遠隔操作/表示システム
CN205847321U (zh) 一种基于linux系统的信息传输终端
CN110175817A (zh) 基于人工智能的人力资源管理系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: FANG BINGWU CHEN JIXIA

Effective date: 20140401

C41 Transfer of patent application or patent right or utility model
C53 Correction of patent of invention or patent application
CB03 Change of inventor or designer information

Inventor after: Zhou Lin

Inventor after: Fang Bingwu

Inventor after: Chen Jixia

Inventor before: Zhou Lin

COR Change of bibliographic data

Free format text: CORRECT: INVENTOR; FROM: ZHOU LIN TO: ZHOU LIN FANG BINGWU CHEN JIXIA

TA01 Transfer of patent application right

Effective date of registration: 20140401

Address after: 230601 Anhui Finance & Trade Vocational College, Anhui, Hefei, 900 emerald Road

Applicant after: Zhou Lin

Applicant after: Fang Bingwu

Applicant after: Chen Jixia

Address before: 230601 Anhui Finance & Trade Vocational College, Hefei, 900, Jade Road, University Town, Anhui

Applicant before: Zhou Lin

C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20120523