www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 嵌入式 > 嵌入式軟件

在嵌入式WinCE系統(tǒng)下,利用GSM Modem和現(xiàn)有的GSM移動(dòng)通信網(wǎng),通過軟件編程手段,實(shí)現(xiàn)用普通電話(包括手機(jī))對(duì)遠(yuǎn)程工業(yè)現(xiàn)場(chǎng)的某些工作參數(shù)的監(jiān)測(cè)和控制。

其中的監(jiān)測(cè)數(shù)據(jù)以語音形式體現(xiàn)。文中給出了語音合成的具體實(shí)現(xiàn)方法。

引言

  許多時(shí)候,我們需要了解遠(yuǎn)距離的某個(gè)工作現(xiàn)場(chǎng)的某些工作參數(shù),或者對(duì)某些工作指標(biāo)進(jìn)行控制(開、關(guān)控制)。例如,需要了解遠(yuǎn)距離無人職守的發(fā)射機(jī)的功率情況,需要開啟或關(guān)閉高山上電視塔的燈光,等等。這些一般都是通過基于C/S或者B/S等的網(wǎng)絡(luò)手段來實(shí)現(xiàn)的,需要專門的網(wǎng)絡(luò)線路和監(jiān)控端軟硬件的支持,構(gòu)筑這樣的應(yīng)用系統(tǒng)投資一般都比較大,監(jiān)控方位置的靈活度也被局限于有監(jiān)控端軟硬件的環(huán)境中。這里介紹一種在嵌入式WinCE系統(tǒng)下利用GSM Modem,用普通電話(包括手機(jī),下同)就可以實(shí)現(xiàn)遠(yuǎn)程監(jiān)控的方法。不需要有專用的監(jiān)控端軟硬件的支持和其他專用的網(wǎng)絡(luò)線路,借助GSM的無線通信網(wǎng)絡(luò),投資大大縮??;監(jiān)控方的位置可以處在任何有電話的地方,方便靈活。監(jiān)控操作的選擇由電話的按鍵來實(shí)現(xiàn),監(jiān)測(cè)到的參數(shù)通過語音的方式反饋到監(jiān)控方的電話上;可以滿足大多數(shù)遠(yuǎn)程監(jiān)控應(yīng)用場(chǎng)合的要求。

1 應(yīng)用系統(tǒng)架構(gòu)

  本系統(tǒng)主要由GSM移動(dòng)通信網(wǎng)、GSM Modem、以S3C2410為核心的硬件和WinCE系統(tǒng)組成,如圖1所示。

500)this.width=500" border=0>

圖1 系統(tǒng)架構(gòu)

  需要監(jiān)測(cè)的參數(shù)或需要控制的指標(biāo)通過某種方式與嵌入式系統(tǒng)構(gòu)成上、下位采集與控制體系。嵌入式系統(tǒng)發(fā)出測(cè)控指令,可以實(shí)現(xiàn)對(duì)現(xiàn)場(chǎng)相應(yīng)數(shù)據(jù)的采集和控制。采集到的現(xiàn)場(chǎng)數(shù)據(jù)以數(shù)據(jù)文件形式保存在嵌入式系統(tǒng)上。目前,有關(guān)嵌入式系統(tǒng)對(duì)下位現(xiàn)場(chǎng)的具體采集與控制操作介紹的文獻(xiàn)很多,這里不再?gòu)?fù)述。

2 嵌入式系統(tǒng)受監(jiān)控端軟件設(shè)計(jì)

  嵌入式系統(tǒng)中受監(jiān)控端軟件是本監(jiān)控系統(tǒng)的核心。它一方面管理GSM Modem識(shí)別遠(yuǎn)程電話的控制指令(按鍵識(shí)別)、向電話反饋對(duì)應(yīng)的語音數(shù)據(jù),另一方面還要根據(jù)遠(yuǎn)程電話的指令完成對(duì)下位現(xiàn)場(chǎng)的測(cè)控。

2.1 串行口及GSM Modem的初始化

  根據(jù)GSM Modem連接的串行口,comID用hSerial=CreateFile(TEXT ("comID"),GENERIC_READ | GENERIC_WRITE,0, NULL, OPEN_EXISTING, 0, NULL);

打開該串行口。根據(jù)返回句柄hSerial的值,可以判斷打開是否成功。由“GetCommState(hSerial,&dcb);”獲得comID的狀態(tài),同時(shí)自動(dòng)填入不用的DCB結(jié)構(gòu)成員。再用“SetCommState(hSerial,&dcb);”就可以初始化該串口了。之前,&dcb要設(shè)置自己的參數(shù),如:

  dcb.BaudRate=115200;
  dcb.ByteSize=8;
  dcb.Parity=NOPARITY;
  dcb.StopBits=ONESTOPBIT;//依次為波特率、數(shù)據(jù)位、奇偶校驗(yàn)位和停止位
  SetupComm(hSerial,1024,1024);//設(shè)置收發(fā)緩沖區(qū)大小//超時(shí)控制設(shè)置
  Timeouts.ReadIntervalTimeout=1;
  Timeouts.ReadTotalTimeoutMultiplier=1;
  Timeouts.ReadTotalTimeoutConstant=10;
  Timeouts.WriteTotalTimeoutMultiplier=1;
  Timeouts.WriteTotalTimeoutConstant=10;
  SetCommTimeouts(hSerial,&Timeouts);
  SetCommMask(hSerial,EV_RXCHAR);//掛接接收事件

  最后用“ WriteFile(hSerial,szBuffer,strlen(szBuffer),&dwBytesWritten,&os_w);” 向串口寫入GSM Modem的初始化數(shù)據(jù)(AT命令)。不同的GSM Modem其AT命令可能有所不同(可以從GSM Modem的用戶手冊(cè)中獲得)。筆者使用的GSM Modem的初始化數(shù)據(jù)為“ats0=1+fclass=8”、“at+vsm=128,11025”。

2.2 按鍵識(shí)別

  因?yàn)楸O(jiān)控指令是由遠(yuǎn)程電話通過電話上的按鍵發(fā)出的,所以在受監(jiān)控端,正確識(shí)別電話的按鍵是非常關(guān)鍵的。在一個(gè)處理線程中,可以用如下程序進(jìn)行識(shí)別:

while(flag){//flag為控制值
  WaitCommEvent(hSerial,&dwEvtMask,0);
    if ((dwEvtMask&EV_RXCHAR)==EV_RXCHAR){
      ClearCommError(hSerial,&dwErrorFlags,&ComStat );
        dwLength = ComStat.cbInQue ; //輸入緩沖區(qū)有多少數(shù)據(jù)
        if(dwLength>0){
        ReadFile(hSerial,buff,dwLength,&ln,&os_r);
        buff[dwLength]=0;
        if(buff[0]==0x10&&buff[1]==0x52)
        Puts(h,MEMO1,"電話撥入...");
        if(buff[1]==0x52&&buff[4]==‘O‘&&buff[5]==‘K‘)
        Puts(h,MEMO1,"線路接通");
        if(buff[1]==0x2f&&buff[2]==0x10&&buff[3]==0x31)
        Puts(h,MEMO1,"1");//1鍵
        if(buff[1]==0x2f&&buff[2]==0x10&&buff[3]==0x32)
        Puts(h,MEMO1,"2");//2鍵
        if(buff[1]==0x2f&&buff[2]==0x10&&buff[3]==0x33)
        Puts(h,MEMO1,"3");//3鍵
        if(buff[1]==0x2f&&buff[2]==0x10&&buff[3]==0x34)
        Puts(h,MEMO1,"4");//4鍵
        if(buff[1]==0x2f&&buff[2]==0x10&&buff[3]==0x35)
        Puts(h,MEMO1,"5");//5鍵
        if(buff[1]==0x2f&&buff[2]==0x10&&buff[3]==0x36)
        Puts(h,MEMO1,"6");//6鍵
        if(buff[1]==0x2f&&buff[2]==0x10&&buff[3]==0x37)
        Puts(h,MEMO1,"7");//7鍵
        if(buff[1]==0x2f&&buff[2]==0x10&&buff[3]==0x38)
        Puts(h,MEMO1,"8");//8鍵
        if(buff[1]==0x2f&&buff[2]==0x10&&buff[3]==0x39)
        Puts(h,MEMO1,"9");//9鍵
        if(buff[1]==0x2f&&buff[2]==0x10&&buff[3]==0x30)
        Puts(h,MEMO1,"0");//0鍵
        if(buff[1]==0x2f&&buff[2]==0x10&&buff[3]==0x23)
        Puts(h,MEMO1,"#");//#鍵
        if(buff[1]==0x2f&&buff[2]==0x10&&buff[3]==0x2a)
        Puts(h,MEMO1,"*");//*鍵
        if(buff[0]==0x10&&buff[1]==0x62)
        Puts(h,MEMO1,"撥入方已掛機(jī)");
      }
    }
  }

  運(yùn)行后,有電話撥入并按下567890,執(zhí)行結(jié)果如圖2所示。

500)this.width=500" border=0>

圖2 按鍵識(shí)別測(cè)試

  對(duì)于按鍵組合,可以將單個(gè)鍵的值依次存放到緩沖區(qū)。在程序中控制好flag的值就可以實(shí)現(xiàn)對(duì)按鍵組合的識(shí)別。

2.3 語音傳送

  將語音數(shù)據(jù)寫入GSM Modem,撥入的電話一端就可以聽到相應(yīng)的語音。在寫入語音數(shù)據(jù)之前,要先用“at+vtx”通知GSM Modem,此后的數(shù)據(jù)是語音數(shù)據(jù)。

  hf=_lopen(wavFileName,0);
  bitSize=GetFileSize((HANDLE)hf,NULL);
  _lclose(hf);
  hf=_lopen(wavFileName,0);
  _lread(hf,aa,bitSize);
  _lclose(hf);
  wsprintf(buffer,"at+vtx");
  buffer[6]=0x0d;
  WriteFile(hSerial,buffer,7,&dwBytesWritten,&os_w);
    for(i=0;i<bitSize;i++){
    buffer[0]=aa[i];
    if(flag) i=bitSize;
    WriteFile(hSerial,buffer,1,&dwBytesWritten,&os_w);
  }

  其中,wavFileName為所傳送的語音數(shù)據(jù)文件。

2.4 嵌入式系統(tǒng)受控端整體程序描述

  嵌入式系統(tǒng)受控端整體程序框圖如圖3所示。

500)this.width=500" border=0>

圖3 嵌入式系統(tǒng)受控端整體程序框圖

3 語音合成技術(shù)(TTS)

  將保存在嵌入式系統(tǒng)上從現(xiàn)場(chǎng)采集來的數(shù)據(jù)轉(zhuǎn)換成對(duì)應(yīng)的語音數(shù)據(jù),需要進(jìn)行語音合成。在語音數(shù)據(jù)庫(kù)中存有“l(fā)ing”、“yi”、“er”、 “san”……“dian”和單位名稱發(fā)音的數(shù)據(jù)文件。假設(shè)要監(jiān)測(cè)的是現(xiàn)場(chǎng)的電流數(shù)據(jù),例如,下位采集來的保存到嵌入式系統(tǒng)上的某電流數(shù)據(jù)為5.12 A,那么就需要將“wu”、“dian”、“yi”、“er”和“an”的語音數(shù)據(jù)文件合成一個(gè)語音數(shù)據(jù)文件,以便于傳送。

  BitSize位現(xiàn)場(chǎng)數(shù)據(jù)(包括小數(shù)點(diǎn))語音合成的具體程序描述如下:

  hf=_lopen(DataFileName,0);//打開現(xiàn)場(chǎng)數(shù)據(jù)文件
  _lread(hf,szBuff,bitSize);//讀入到緩沖區(qū)szBuff(數(shù)據(jù)是以ASCII形式存放的)
  _lclose(hf);
  for(I=0;I<bitSize;I++){
    switch (szBuff[I]){
      case 0x2e:
        …//將“dian”的語音數(shù)據(jù)寫入目標(biāo)語音文件
        break;
      case 0:
        …//將“l(fā)ing”的語音數(shù)據(jù)寫入目標(biāo)語音文件
        break;
      case 1:
        …//將“yi”的語音數(shù)據(jù)寫入目標(biāo)語音文件
        break;?
    }//調(diào)整目標(biāo)語音文件指針
  }//將單位名稱的語音數(shù)據(jù)寫入目標(biāo)語音文件

  需要強(qiáng)調(diào)的是,這里用到的語音數(shù)據(jù)必須是“裸”數(shù)據(jù),也就是去掉有關(guān)文件頭的純粹的語音數(shù)據(jù)(可以在錄制單個(gè)語音文件后處理掉)。各個(gè)語音數(shù)據(jù)的大小也要記錄在一個(gè)表列中,以便在調(diào)整目標(biāo)語音文件指針時(shí)用到。最后生成的目標(biāo)語音文件也是一個(gè)只含有“裸”數(shù)據(jù)的文件,在進(jìn)行語音傳送時(shí)可以直接使用。

結(jié)語

  本文介紹的在嵌入式WinCE系統(tǒng)下利用GSM Modem所實(shí)現(xiàn)的遠(yuǎn)程監(jiān)測(cè)與控制的方法,以較小的投資實(shí)現(xiàn)了對(duì)遠(yuǎn)程工業(yè)現(xiàn)場(chǎng)的測(cè)控,充分地利用了現(xiàn)有的GSM移動(dòng)通信網(wǎng)絡(luò)資源。在測(cè)控距離遠(yuǎn)、實(shí)時(shí)性要求不高的場(chǎng)合都可以選擇使用。

參考文獻(xiàn)

  [1] 陳堅(jiān),孫志月. MODEM通信編程技術(shù)[M]. 西安:西安電子科技大學(xué)出版社,1998.
  [2] 曾志民. 調(diào)制解調(diào)器原理及其應(yīng)用[M]. 北京:人民郵電出版社,1995.
  [3] 田澤. ARM9嵌入式開發(fā)實(shí)驗(yàn)與實(shí)踐[M]北京:北京航空航天大學(xué)出版社,2006.
  [4] 周毓林,寧楊,陸貴強(qiáng). Windows CE.net內(nèi)核定制及應(yīng)用開發(fā)[M]. 北京:電子工業(yè)出版社, 2005.

  武斌(工程師),主要研究方向?yàn)閺V播電視技術(shù)及嵌入式系統(tǒng);
  李建軍(工程師)。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動(dòng)電源

在工業(yè)自動(dòng)化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動(dòng)力設(shè)備,其驅(qū)動(dòng)電源的性能直接關(guān)系到整個(gè)系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動(dòng)勢(shì)抑制與過流保護(hù)是驅(qū)動(dòng)電源設(shè)計(jì)中至關(guān)重要的兩個(gè)環(huán)節(jié),集成化方案的設(shè)計(jì)成為提升電機(jī)驅(qū)動(dòng)性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動(dòng)電源

LED 驅(qū)動(dòng)電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個(gè)照明設(shè)備的使用壽命。然而,在實(shí)際應(yīng)用中,LED 驅(qū)動(dòng)電源易損壞的問題卻十分常見,不僅增加了維護(hù)成本,還影響了用戶體驗(yàn)。要解決這一問題,需從設(shè)計(jì)、生...

關(guān)鍵字: 驅(qū)動(dòng)電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動(dòng)電源的公式,電感內(nèi)電流波動(dòng)大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計(jì) 驅(qū)動(dòng)電源

電動(dòng)汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動(dòng)汽車的核心技術(shù)之一是電機(jī)驅(qū)動(dòng)控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動(dòng)系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動(dòng)汽車的動(dòng)力性能和...

關(guān)鍵字: 電動(dòng)汽車 新能源 驅(qū)動(dòng)電源

在現(xiàn)代城市建設(shè)中,街道及停車場(chǎng)照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨(dú)特的優(yōu)勢(shì)逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動(dòng)電源 LED

LED通用照明設(shè)計(jì)工程師會(huì)遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動(dòng)電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動(dòng)電源的電磁干擾(EMI)問題成為了一個(gè)不可忽視的挑戰(zhàn)。電磁干擾不僅會(huì)影響LED燈具的正常工作,還可能對(duì)周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動(dòng)電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動(dòng)電源

關(guān)鍵字: LED 驅(qū)動(dòng)電源 開關(guān)電源

LED驅(qū)動(dòng)電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動(dòng)LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動(dòng)電源
關(guān)閉