在线免费观看成年人视频-在线免费观看国产-在线免费观看国产精品-在线免费观看黄网站-在线免费观看精品

產品分類

當前位置: 首頁 > 工業電氣產品 > 工業開關 > 溫控開關

類型分類:
科普知識
數據分類:
溫控開關

基于FAX MODEM遠程通信程序設計

發布日期:2022-04-27 點擊率:144

    摘 要 本文首先介紹了開發Windows事件驅動的串行通信編程原理及方法,然后簡述了FAX MODEM的控制方式,接著詳細論述了一個遠程監視系統的編程例子。最后探討了技術的應用途徑。
1. 引 言

  FAX MODEM首先用于傳真業務,近幾年發展極為迅速,取得了極大成功。隨著技術的發展和人們認識的提高,人們拓寬了FAX MODEM的功能,把它用于廣域網絡通信中,FAX MODEM能從微機接受串行數據,直接傳給另一端的FAX機或另一臺FAX MODEM,所以使用微機通過程控電話網和FAX MODEM互聯起來可以組成一個廣域網絡系統,當兩臺微機撥號聯上后,它們就獨占了一條電話線路,它們之間就像本地通信一樣(光電傳輸速度108米/秒)方便[1]。

2. Windows事件驅動編程原理

  采用OWL開發應用程序。
2.1 WM_COMMNOTIFY消息
   WM_COMMNOTIFY是窗口管理類型消息,當COM端口有事件發生時Windows就向窗口發送這條消息。該消息指出了WINDOWS發送接收隊列的狀態,如果通告狀態是CN_EVENT,表明COM端口有通信事件發生,其消息TMessage結構的成員wParam標志發生事件的COM端口[2]。
2.2 對消息的響應
   定義一個窗口及一個消息響應成員函數如下:
   class TMonitorWindow:public Twindow
   {//私有成員
   public;
   //公有成員
   virtual void WMCommnotify(RTMessage Msg)
   =[WM_FIRST:WM_COMMNOTIFY];};
   在此例中,當TMonitorWindow對象接到一個WM_COMMNOTIFY消息,就立即自動喚起WMCOmmnotify成員函數,處理端口事件。其中Msg是消息RTMessage類型的變量,RTMessage是TMessage的引用。從WINDOWS發送的消息信息存放于Msg中。
   如果表達式(((Msg.LP.Lo& CN_EVENT)==CN_EVENT)&&(Msg.WParam==comm2))為真,則表明端口comm2有通信事件發生,可以從comm2中讀取接收報文。

3. FAX MODEM的控制

3.1 命令模式和在線模式
   FAX MODEM工作時處在本地命令狀態或在線狀態。處在本地命令時,用戶能夠通過計算機的串行接口向它發送命令,完成一定功能,FAX MODEM不傳送這些命令;一旦與遠程FAX MODEM建立連接后,FAX MODEM就進入在線狀態,這時它將直接傳送計算機發送的命令[1]。
3.2 命令和結果碼
   所有HayesFAX MODEM控制命令毫無例外一律使用AT開頭。當FAX MODEM接受一個命令,它就返回一個結果,這個結果可以是一個字符串或結果碼。因此可以編程與FAX MODEM交互,實現用軟件來控制FAX MODEM。

4.遠程監視編程

  假設2臺微機(稱A和B)通過電話網、FAX MODEM連接,用A機監視B機,實時接收B機發送的狀態報文(B機的發送是隨機的),那么A機的監視軟件模塊主要包括:定義監視窗口;初始化并建立與B機的連接;監視B機;掛斷關閉通信口結束程序運行。這里介紹功能模塊編程方法如下:
4.1 定義監視窗口
   class TMonitorWindow: public TWindow
   { COMSTAT comstat;
     char buffer[1024]; ∥緩沖區
     int bufnum;   ∥緩沖區實際字節數
     int comdev;   ∥串行口設備號
     int status;    ∥當前通信狀態
     void InitComm(); ∥初始化串行口
     void InitFAX MODEM();∥初始化FAX MODEM
     void Dial(char*);   ∥撥號
     void Connect();    ∥接聽電話
     void HangUp();   ∥掛斷電話
     void EndFAX MODEM(); ∥掛斷FAX MODEM
     void EndComm();    ∥結束通信
     int ReadFAX MODEMCode();∥讀取FAX MODEM返回碼public:
     TMonitorWindow(PTWindowsObject AParent,
     LPSTR ATitle);
     virtual void CloseWindow();
     virtual void WMClose(RTMessage Msg)
     =[CM_FIRST+WM_CLOSE];∥終止程序運行
     virtual void CommMessage(RTMessage Msg)
     =[WM_FIRST+WM_COMMNOTIFY;∥通信消息函數
   };
4.2 初始化并建立與B機的連接
4.2.1 計算機串口初始化
   串行口的初始化必須完成三項任務:一調用OpenComm函數打開串行口。一個重要的工作是檢查返回值,如果小于或等于0,則打開操作失敗,這時必須采取容錯措施;二調用SetCommState設置通信參數;三是調用函數setCommEventMask設定窗口只收CN_EVENT通告;調用函數
   EnableCommNotification屏蔽
   CN_RECEIVE和CN_TRANSMIT通告。參考代碼如下:
   void TMonitorWindow::InitComm()
   { DCB dcb;
   comdev=OpenComm(″COM3″,1024.1024);
   if(comdev<=0)
   { MessageBox(HWindow,″串行口打開失敗!″
        ,″出錯″,MB_OK);
   GetCommError(comdev,&comstat);
   }
   else
   { GetCommState(comdev,&dcb);
   dcb.BaudRate=4800;
   dcb.Parity=NOPARITY;
   dcb.ByteSize=8;
   dcb.StopBits=ONESTOPBIT;
   if (SetCommState(&dcb)<0)
   {McssagcBox(HWindow,″串行口打開失敗!″
        ,″出錯″,MB_OK);
   GetCommError(comdev,&comstat);
   return;
   }
   SetCommEventMask(comdev,EV_RXCHAR
         |EV_RING |EV_BREAK);
   EnableCommNotification(comdev,HWindow,-1,-1);
   }
  }
4.2.2 FAX MODEM初始化
   作如下工作:關掉屏幕回顯,設置數字顯示結果碼,打開載波信號,設置揚聲器值,打開結果碼,設置FAX MODEM值。組合命令為:
   ″ATEOVO&C1&D2X4M1L1QOSO=OS7=10 ″;
   參考代碼如下:
   void TMonitorWindow::InitFAX MODEM()
   { char *Str=″ATEOVO&C1&D2X4M1L1QOSO=OS7=10 ″;
   if (WriteComm(comdev,Str,strlen(Str))<0)
   { GetCommError(comdev,&comstat);
    MessageBox(HWindow,″初使化FAX MODEM失敗!″,″出錯″,MB_OK);
   }
  }
4.2.3 撥號
   如果用音頻撥號方式撥電話號碼88888888,撥號命令為:
   “ATDT 88888888 ”;
   如果用脈沖撥號方式撥電話號碼88888888,撥號命令為:
   “ATDP 88888888 ”;
   如果電話號碼暫存到字符串DialStr中,用Dial函數撥號,參考代碼如下:
   void TMonitorWindow::Dial(char *telphone)
   {char DialStr[50];
   sprintf(DialStr,″ATDP%s ″,telphone);
   if(WriteComm(comdev,DialStr,strlen(DialStr))<0)
   {MessageBox(HWindow,″撥號FAX MODEM失敗!″,″出錯″,MB_OK);
   GetCommError(comdev,&comstat);
    }
   }
4.2.4 連接
   發送″ATA ″命令可以實現連接。
   參考代碼如下:
   void TMonitorWindow::Conncct()
   { char* connstr=″ATA ″;
   if(WriteComm(comdev,connstr,strlen(connstr))<0)
   {MessageBox(HWindow,″撥號FAX MODEM失敗!″,″出錯″,MB_OK);
   GetCommError(comdev,&comstat);
    }
   }
4.3 監視B機
4.3.1 讀FAX MODEM返回碼
   計算機向FAX MODEM發送命令后,立即讀通信口的接送隊列,將讀出的字符串轉換成整數即得到FAX MODEM返回碼。參考代碼如下:
   int TMonitorWindow::ReadFAX MODEMCode()
    { char tempbuf[20]
    int readno;
    readno=ReadComm(comdev,tempbuf,3);
    if (readno<0)
    { MessageBox(HWindow,″Read FAX MODEM CodeError!″,″ERROR″,MB_OK);
     GetCommError(comdev,&comstat);
     return -1;
    }
    else
    { tempbuf[readno]=′

狠狠色丁香婷婷综合久久图片| 国产成人久久精品| 国产精品白浆无码流出| 激情综合色综合久久综合| 烂货我捏烂你的奶| 日本少妇自慰高清喷浆| 无码无套少妇毛多18PXXXX| 亚洲熟妇AV一区二区三区浪潮| 97色伦综合在线欧美视频| 高H闺蜜老公1V1| 久久国产亚洲AV无码麻豆| 人妻 中文 无码 JAVHD| 性CHINESE新婚VIDEO| 中国熟妇牲交视频| 国产V综合V亚洲欧| 久久久久久午夜成人影院| 日本熟妇色XXXXX日本妇奷| 亚洲AV无码一区二区三区乱码4| 在线观看4480私人影视| 丰满女教师中文字幕5| 精品久久久久久无码人妻蜜桃| 欧美视频一区二区图文| 亚洲 日韩 激情 无码 中出| 18禁纯肉高黄无码动漫| 国产精品XXX大片免费观看| 邻居少妇很紧毛多水多| 丝袜高潮流白浆潮喷在线播放| 亚洲中字幕日产2021草莓| 东北往事之黑道风云20年| 久久久精品国产SM调教网站| 色婷婷久久综合中文久久蜜桃AV| 亚洲色成人四虎在线观看| 波多野结衣AV黑人在线播放 | 让人一看就舒服的网名| 亚洲成AV人无码综合在线观看| JIZZJIZZ日本高潮喷水| 韩国三级L中文字幕无码| 人妻人人澡人人添人人爽人人玩| 亚洲国产成人无码AV在线影院L| ZEESEA在日本| 精品国产一区二区三区久久久狼| 人妻少妇精品视频无码综合| 亚洲日韩在线中文字幕综合| 成人无码精品无码社区| 久久久国产精品亚洲一区| 特大荫唇XX另类| 69综合精品国产二区无码| 国产在线 | 传媒麻豆| 人人做天天爱夜夜爽2020| 亚洲熟妇久久精品| 国产成人综合亚洲AV第一页| 欧美高潮抽搐喷水大叫| 亚洲精品无码激情AV| 国产ⅩXXX推油按摩BBBB| 免费直播视频在线观看| 亚洲AV综合AV成人网在线观看 | 日本乱人伦AⅤ精品| 亚洲中文字幕成人无码| 国产精品三级一区二区| 人妻AV中文字幕一区二区三区| 亚洲中文久久精品无码WW16| 国产精品99精品无码视亚| 欧美性XXXXX极品娇小| 亚洲熟妇色XXXXX中国少妇Y| 国产精品无码一区二区在线 | 小雪要撑破了黑人好大| 被多男摁住灌浓精| 蜜芽亚洲AV无码精品国产| 亚洲成a人片在线观看无码关注| 粉嫩呦福利视频导航大全| 欧美国产日本高清不卡| 亚洲一区二区三区自拍公司| 国产三级久久精品三级| 色偷偷AV男人的天堂京东热| ASIAN高潮.颤抖.抽搐BL| 久久久久99精品成人片试看 | 色噜噜狠狠成人中文综合| 91夜色精品偷窥熟女精品网站| 精品亚洲AⅤ无码午夜在线| 无码人妻精品一区二区蜜桃天美 | 丰满熟妇人妻AV无码区| 欧美精品xxxxx| 曰韩亚洲AV人人夜夜澡人人爽| 激情欧美成人小说在线视频| 无码精品人妻一区二区三区免费看 | 饭桌上故意张开腿让公在线观看| 欧美黑人乱猛交xX 乂500| 岳把腿扒开让我添| 久久精品国产亚洲AV大全| 亚洲AV成人精品网站在线播放| 国产AV天堂亚洲国产AV麻豆| 人妻熟妇与黑人HDXⅩXX| 7777788888管家婆中特| 久久亚洲AV无码精品色午夜麻豆| 亚洲精品乱码久久久久久蜜桃| 国产未成女YOUNV仙踪林| 我趁老师睡觉摸她奶脱她内裤 | JIZZJIZZ中国18大学生| 蜜桃视频在线观看| 尤物娇妻被NP高H| 久久久无码精品国产一区 | 警察被两个混混脱裤玩J视频| 亚洲AV成人综合网伊人APP| 国产精品99久久精品| 体验区试看120秒十八禁| 高H禁伦餐桌上的肉伦| 色狠狠熟女AV一区二区三区| 边摸边吃奶又黄又激烈视频| 青青草视频 成人| FREE东北熟女HD自拍| 女同学浮乱系列合集| 99久久免费只有精品国产| 欧美粗大猛烈老熟妇| CHINA熟妇老熟女HD| 欧美日韩视频一区二区| 99国内精品久久久久久久| 欧美成人午夜视频| IJZZIJZZIJ亚洲大全| 人妻AVAV中文系列久久| 把人妻日出白浆人妻视频| 日本工口里番全彩色| 波多野结衣高清一区二区三区| 日本精品成人一区二区三区视频| 车上震动A级作爱视频| 日产精品卡2卡三卡乱码网址| 成人网站在线进入爽爽爽| 色婷婷亚洲婷婷七月中文字幕| 丰满人爽人妻AXXXXHD| 天码AV无码一区二区三区四区| 国产粗语刺激对白ⅩXX| 五月丁香国产在线视频| 好爽…又高潮了毛片喷水| 亚洲欧洲中文日韩AV乱码| 久久伊人精品青青草原APP| 中文字幕人妻一区二区在线视频| 女厕脱裤撒尿大全视频| YSL千人千色T9T9T90| 色综合久久久久无码专区| 国产精品日本亚洲欧美| 亚洲国产欧美在线人成AAAA| 久久人妻无码一区二区三区AV| 中文字幕亚洲综合久久| 漂亮人妻洗澡被公强BD| 公么大龟弄得我好舒服秀婷视频| 无码少妇一区二区三区芒果| 妓女爽爽爽爽爽妓女8888| 一二三四免费观看高清视频| 欧美成人性生活视频| 饭桌上故意张开腿让公H视频| 性饥渴的少妇AV无码影片| 久久国产成人午夜AV影院 | 尤物蜜芽国产成人精品区| 免费中国帅气体育生GARY| 锕锕锕锕锕锕锕好疼免费看网站| 他的白月光H1∨1笔趣阁| 狠狠色噜噜狠狠狠狠色综合久AV| 一区二区三区无码免费看| 欧美日韩中文国产一区发布| 国产AⅤ无码专区亚洲AV综合网 | 免费拗女网站1300部| 把腿张开让老子臊烂你的视频| 特黄AAAAAAAAA毛片免费| 狠狠色丁香久久综合婷婷| 中国熟妇色XXXXX中国老妇| 人人人爽人人澡人人高潮| 国产美女被遭强高潮网站免费| 艳妇乳肉豪妇荡乳ⅩXX| 人妻巨大乳HD免费看| 国产美女裸体丝袜喷水视频| 一个添下面两个吃奶| 人妻精品久久久久中文字幕一冢本 | 国内美女推油按摩在线播放| 中文有无人妻VS无码人妻激烈| 日产乱码一二三区别免费必看| 国产精品亚洲一区二区三区| 夜鲁鲁鲁夜夜综合视频欧美 | 一区无码在线观看的| 日本工口里番H彩色无遮挡全彩| 国产自偷自偷免费一区| 重口老太大和小伙乱| 天干天干天啪啪夜爽爽AV| 久久久久亚洲AV无码专区喷水| 餐桌下他深深顶撞H| 亚洲AV无码专区在线播放| 女人下面被舔视频免费播放电影 | 偷拍东北熟女BBWW| 巨胸狂喷奶水WWW自慰网站| 丁香五月婷激情综合第九色| 亚洲精品无码专区久久| 日本A级作爱免费观看在线| 加勒比一本HEYZO高清视频| S货叫大点声C烂你的SB视频| 亚洲AV毛茸茸av成熟女人| 欧美成人精品一区二区三区| 国产拍揄自揄免费观看| AV免费网址在线观看| 亚洲AV永久无码精品古装片 | 成码无人AV片在线电影无下载| 亚洲国产欧美在线人成大黄瓜| 人妻一本久道久久综合久久鬼色|