首頁 | 收藏本站 | 免費注冊|申請VIP會員|固定排名|廣告服務
中國電氣自動化網首頁
PLC | 電  機 | 變 頻 器 | 人機界面 | 運動伺服 | 控制傳動 | 自動化軟件
DCS | 傳感器 | 通信網絡 | 現場總線 | 數據采集 | 電氣開關 | 數傳測控
電源 | 嵌入式 | 儀器儀表 | 低壓電器 | 機器視覺 | 工業安全 | 工控機
模具 | 電線電纜 | 電子元件 | 成套設備 | 液壓氣動 | 制 冷
機床 | 電力能源 | 機械設備 | 石油化工 | 礦業冶金 | 水工業
物流 | 軌道交通 | 汽車電子 | 工程機械 | 輸 配 電 | 電 梯
產品 企業 供求 新聞
下載 視頻 招聘 期刊 會展 培訓 庫存 論壇 訪談 維修  
熱詞:嵌入式 傳感器 電源 主板 工控機 PLC 人機界面 變頻器

您現在的位置:中國電氣自動化網首頁 >> 文庫首頁>>詳細信息

基于FAX MODEM遠程通信程序設計 
(發布日期:2008-3-21 13:26:44) 來源:http://www.szmodem.com/news-id-45.asp
 
    摘 要 本文首先介紹了開發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\r″;
   參考代碼如下:
   void TMonitorWindow::InitFAX MODEM()
   { char *Str=″ATEOVO&C1&D2X4M1L1QOSO=OS7=10\r″;
   if (WriteComm(comdev,Str,strlen(Str))<0)
   { GetCommError(comdev,&comstat);
    MessageBox(HWindow,″初使化FAX MODEM失敗!″,″出錯″,MB_OK);
   }
  }
4.2.3 撥號
   如果用音頻撥號方式撥電話號碼88888888,撥號命令為:
   “ATDT 88888888\r”;
   如果用脈沖撥號方式撥電話號碼88888888,撥號命令為:
   “ATDP 88888888\r”;
   如果電話號碼暫存到字符串DialStr中,用Dial函數撥號,參考代碼如下:
   void TMonitorWindow::Dial(char *telphone)
   {char DialStr[50];
   sprintf(DialStr,″ATDP%s\r″,telphone);
   if(WriteComm(comdev,DialStr,strlen(DialStr))<0)
   {MessageBox(HWindow,″撥號FAX MODEM失敗!″,″出錯″,MB_OK);
   GetCommError(comdev,&comstat);
    }
   }
4.2.4 連接
   發送″ATA\r″命令可以實現連接。
   參考代碼如下:
   void TMonitorWindow::Conncct()
   { char* connstr=″ATA\r″;
   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]=′\0′;
    return(atoi(tempbuf));
    }
   }
4.3.2 監控FAX MODEM
   WM_COMMNOTIFY消息響應函數參考代碼如下,其中必須調用函數GetCommEventMask將標志復位以便能繼續收到通知,調用ReadComm讀接收字符串,并將收到的字符串組合起來,以字符′\0′為結束符。
   void TMonitorWindow::CommMessage(RTMessage Msg)
   { int result;  ∥記錄FAX MODEM返回碼
   int event;
   HDC hdc;
   MSG msg;
   if ( ((Msg.LP.Lo & CN_EVENT)==CN_EVENT)&&
   (Msg.WParam==comdev))∥是通信事件
    { event=GetCommEventMask(comdev,EV_RXCHAR);
     switch (status)
     {
     case strdialing: ∥字符串發送撥號
       result=ReadFAX MODEMCode();
     if (result==10)
     {status=strsending;
     MessageBox(HWindow,″result=CONNECT″,″SEND″,MB_OK);
     writcComm(comdcv,buffor,bufnum);
     }
     else
     {
     if (result)
     {MessageBox(HWindow,Message[result],″出錯″,MB_OK);
     status=ready;
     }
   }
    break;
    case strconnecting; ∥字符串電話接聽
      result=ReadFAX MODEMCode();
     if (result==1)status=strconnecting;
    else
    {
    if(result)
    {MessageBox(HWindow,Message[re

 
深圳市隆星科技有限公司
所在區域: 廣東.深圳 郵編: 518055
公司地址: 深圳市南山區西麗新光路新源工業區24棟四樓 聯系人:陳志 先生 (產品經理)
辦公電話: 0755-33201582 傳真: 空
移動電話: 電郵: 登錄查看或通過本網留言
公司主頁: http://www.szmodem.com
通過中國電氣自動化網在線聯系該用戶:
關于:
需求意向:
* 驗證碼: 點擊可刷新
 
用戶: 密碼:  
如果您還不是中國電氣自動化網(www.xn524.cn)的注冊用戶,立刻免費注冊!

   企業新聞 更多
· 皮爾磁亮相南京智造大會,展示未來...
· 皮爾磁:機械安全與網絡安全必須一...
· 皮爾磁:你的未來,值得一次“安全...
· 皮爾磁:法規和標準同步升級,AG...
· 皮爾磁:安全掃描儀PSENsca...
· 皮爾磁:PSENmgate安全門...
· 皮爾磁:工業機器人安全的核心標準...
· 皮爾磁:強強聯合,共話氫能安全...
  產品新聞 更多
· 皮爾磁:構筑工業數字時代的“雙子...
· 皮爾磁:CRA全面解析:您的產品...
· 皮爾磁:PNOZmulti軟件V...
· 皮爾磁:硬核物流“黑科技”,無懼...
· 皮爾磁:靈活安裝,操作升級...
· 皮爾磁產品斬獲CEC年度最佳產品...
· 皮爾磁即將亮相SPS2025:助...
· 皮爾磁:IO-Link Safe...

廣告服務 | 關于我們 | 網站地圖 | 分類索引 | 服務條款 | VIP會員服務 |《電氣自動化企業大全》| 版權聲明

客服專線:0898-68552405     媒體合作QQ:910167442
中國電子商務服務聯盟成員單位 瓊ICP備17003754號
中國電氣自動化網 版權所有 © Copyright By Electric Automation of China

欧美日韩一级片在线观看| 亚洲精品写真福利| 欧美tickling挠脚心丨vk| a一区二区三区| 精品一区二区三区在线观看| 欧美日韩欧美一区二区| 免费看男女www网站入口在线 | 波多野结衣精品| 精品一区二区三区av| 97福利电影| 欧美人与拘性视交免费看| 亚洲精品国产视频| 先锋成人av| 国产91精品露脸国语对白| 欧美5-7sexvideos处| 91成人国产| 欧美日本在线观看| 999精品嫩草久久久久久99| 制服诱惑一区二区| 欧美日韩国产一区二区| 韩漫成人漫画| 国产精品久久久久久久久果冻传媒| 亚洲第一偷拍网| 小嫩嫩12欧美| 欧美性猛交xxxxxxxx| 123区在线| 久久嫩草精品久久久久| 国产黄色片在线观看| 蜜乳av一区二区| 桃花色综合影院| 久久av老司机精品网站导航| 精品一区二区三区三区| 欧美+日本+国产+在线a∨观看| 日韩欧美电影一二三| jvid福利在线一区二区| 狠狠躁夜夜躁人人躁婷婷91| 99综合99| 亚洲黄色在线视频| 亚洲精品555| 亚洲超丰满肉感bbw| 香蕉免费一区二区三区在线观看| 亚洲激情在线激情| 北条麻妃一区二区三区在线| 欧美日韩一级黄| 欧美日韩一二三四| 亚洲成人av片在线观看| 亚洲国产一成人久久精品| 毛片毛片毛片毛片| 国产精品一区在线观看乱码| 国产激情视频在线观看| 久久精品一级爱片| 国产免费不卡| 国产午夜亚洲精品理论片色戒| 国产在线观看a| 韩国一区二区视频| 免费在线中文字幕| 国产精品女同互慰在线看| 国产精品久久久久久妇女| 亚洲免费在线播放| 国产传媒欧美日韩成人精品大片| 日韩大陆欧美高清视频区| 美国毛片一区二区三区| 中文字幕中文字幕在线十八区 | 日韩av大片| 国产中文字幕在线视频| 国产精品福利影院| 视频精品一区二区三区| 亚洲第一男人av| 粉嫩13p一区二区三区| 成人激情视屏| 国产视频精品久久久| 乱人伦精品视频在线观看| 爱看av在线入口| 色婷婷精品大在线视频| 国产永久精品大片wwwapp| 国产丝袜精品第一页| 99久久99久久综合| 亚洲人成777| 日本aⅴ写真网站免费| 91色porny蝌蚪| 亚洲亚洲免费| 免费**毛片在线| 欧美日韩黄色影视| 国产一区在线观看麻豆| 久久国际精品| 青青草视频免费在线观看| 午夜视黄欧洲亚洲| 欧美日韩久久| 成人在线高清| 亚洲人成电影网站色| 亚洲免费资源在线播放| 成人在线免费视频观看| 丁香花在线观看完整版电影| 欧美性猛交xxxx免费看漫画| 最新国产乱人伦偷精品免费网站| 一区二区精品伦理...| 黄色av网站在线观看| 中文字幕乱码一区二区免费| 日韩一级电影| 国产探花视频在线观看| 欧美精三区欧美精三区 | 久久综合中文| 你微笑时很美电视剧整集高清不卡| 影音先锋在线播放| 传媒在线观看| 精品久久久久久久久久久久包黑料| 不卡的av中国片| 销魂美女一区二区三区视频在线| 9l亚洲国产成人精品一区二三 | 国产亚洲久久| 999福利在线视频| 欧美成人免费| 亚洲免费视频网站| 欧美男女性生活在线直播观看| 国产精品久久久久一区二区三区| 久久av老司机精品网站导航| 国语精品一区| 久久高清精品| 成人看片毛片免费播放器| 好久没做在线观看| 秋霞午夜在线观看| 欧美精品久久久久久久久久丰满| 亚洲成人网av| 日韩一区二区在线看片| 国产精品护士白丝一区av| zzijzzij亚洲日本少妇熟睡| 亚洲专区一区| 一区二区三区在线观看免费| 欧洲专线二区三区| 欧美猛男做受videos| 日韩成人一级| 日本欧美高清| 亚洲永久精品唐人导航网址| 欧美电影在线观看完整版| 日韩中文一区二区| 精品国产18久久久久久二百| 久久久久久久性潮| 国模套图日韩精品一区二区| 中文在线а√在线8| 亚洲精品国产嫩草在线观看| 一广人看www在线观看免费视频| 亚洲国产精彩中文乱码av| 在线免费观看日本一区| 亚洲一区二区精品久久av| 午夜精品久久久久久久久久久| 亚洲精品中文在线影院| 亚洲成人一二三| 午夜伦欧美伦电影理论片| 精品久久久久久久久久久久| 欧美最猛黑人xxxxx猛交| 欧美日韩一级黄| 亚洲国产小视频在线观看| 有码av在线| 欧美孕妇性xxxⅹ精品hd| 黄网站视频在线观看| av超碰免费在线| 国产91在线精品| 精品精品久久| 久久中文在线| 国产精品永久| 日韩福利电影在线| 日韩电影在线免费看| 国产宾馆实践打屁股91| 国产精品 日产精品 欧美精品| 99国产精品视频免费观看| 亚洲欧美另类在线| 欧美日韩在线播放三区四区| 77777在线| 九色在线播放| 日韩电影毛片| 国内黄色精品| 久久精品久久综合| 国产精品高潮久久久久无| 欧美片网站yy| 巨骚激情综合| www.久久爱.com| 国产精品草草| av午夜精品一区二区三区| 一本到一区二区三区| 日韩一级黄色大片| 1769在线观看| 日韩一级特黄| 欧美久久九九| 国产精品传媒入口麻豆| 亚洲高清免费观看高清完整版| 日本大片在线观看| 一区二区在线视频观看| 免费在线一区观看| 色综合久久88色综合天天免费| 欧美精品一区二区不卡| 男女在线观看视频| a看欧美黄色女同性恋| 精品成人国产| 国产亚洲美州欧州综合国| 色综合 综合色| 国模吧精品人体gogo| **国产精品| 精品一区二区在线免费观看| 亚洲免费大片在线观看| 亚洲欧美中文日韩在线|