<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 用VC++6.0實(shí)現(xiàn)PC機(jī)與單片機(jī)之間的數(shù)據(jù)交換

          用VC++6.0實(shí)現(xiàn)PC機(jī)與單片機(jī)之間的數(shù)據(jù)交換

          作者: 時(shí)間:2013-02-20 來源:網(wǎng)絡(luò) 收藏

            2. 通信程序設(shè)計(jì)

            部分上位機(jī)程序

           ?。?)發(fā)送命令字程序,代碼如下

            void CCommDlg::OnSend()

            {

            CSerial Serial;

            //構(gòu)造串口類,初始化串行口

            if (Serial.Open(2,9600)) //if-1

            //打開串行口2,波特率為9600bps

            {

            static char szMessage[]="0";

            //命令碼(可定義各種命令碼)

            int nBytesSent;

            int count=0;

            resend:

            nBytesSent=Serial.SendData(szMessage,strlen(szMessage));

            //發(fā)送命令碼

            char rdMessage [20];

            if (Serial.ReadDataWaiting()) //if-2

            {

            Serial.ReadData(rdMessage,88);

            //rdMessage 定義接收字節(jié)存儲區(qū),為全局變量//

            if ((rdMessage[0]!=0x7f)(count3))

            {

            count++;

            goto resend

            }

            if(count>=3)

            MessageBox(“發(fā)送命令字失敗”);

            }

            else //if-2

            MessageBox("接收數(shù)據(jù)錯(cuò)誤");

            }

            else //if-1

            MessageBox("串行口打開失敗");

            }

            下位機(jī)通信程序:

            #includereg51.h>

            #includestdlib.h>

            #includestdio.h>

            #define count 9

            #define com_code 0x00

            #define com_code1 0xff

            unsigned char buffer[count];

            int po,year,month,date,hour;

            int minute,second,recordID ;

            int sum;

            main()

            {

            …

            /*初始化串口和定時(shí)器*/

            TMOD=0×20;

            TH1=0×fd;

            TR1=0×01;

            ET1=0×00;

            ES=1;

            EA=1;

            /*待發(fā)送數(shù)據(jù)送緩沖區(qū)*/

            buffer[0] = 0×ff; //數(shù)據(jù)特征碼

            buffer[1] = count+1; //數(shù)據(jù)長度

            buffer[2] = year; //年

            buffer[3] = month; //月

            buffer[4] = date; //日

            buffer[5] = hour; //時(shí)

            buffer[6] = minute; //分

            buffer[7] = second; //秒

            buffer[8] = recordID; //事件號

            for(po=0;pocount;po++)

            sum+=buffer[po];

            buffer[9]=sum; //校驗(yàn)和

            …

            }

            /*發(fā)送中斷服務(wù)程序*/

            void send(void) interrupt 4 using 1

            {

            int i;

            RI=0;

            EA=0;

            do

            {

            for(i=0;i=count;i++)

            {

            SBUF=buffer[i]; //發(fā)送數(shù)據(jù)和校驗(yàn)和//

            while(TI==0);

            TI=0;

            }

            while(RI==0);

            RI=0;

            } while(SBUF!=0); //主機(jī)接收不正確,重新發(fā)送//

            EA=1;

            Return;

            }

            5 應(yīng)用總結(jié)

            根據(jù)不同需要,選擇合適的方法。我們選用的用VC++類實(shí)現(xiàn)的上位機(jī)和下位機(jī)的串行通信方法具有使用簡單、編寫程序方便的特點(diǎn)。經(jīng)過半年多應(yīng)用于EBM滅火系統(tǒng)的情況來看,該方法實(shí)現(xiàn)的系統(tǒng)運(yùn)行穩(wěn)定可靠,是一種值得推廣的簡單易行的通信方法。

          c語言相關(guān)文章:c語言教程


          單片機(jī)相關(guān)文章:單片機(jī)教程


          c++相關(guān)文章:c++教程


          單片機(jī)相關(guān)文章:單片機(jī)視頻教程


          單片機(jī)相關(guān)文章:單片機(jī)工作原理



          上一頁 1 2 3 下一頁

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();