新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 用VC++6.0實現PC機與單片機之間的數據交換

        用VC++6.0實現PC機與單片機之間的數據交換

        作者: 時間:2013-02-20 來源:網絡 收藏

          2. 通信程序設計

          部分上位機程序

          (1)發送命令字程序,代碼如下

          void CCommDlg::OnSend()

          {

          CSerial Serial;

          //構造串口類,初始化串行口

          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));

          //發送命令碼

          char rdMessage [20];

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

          {

          Serial.ReadData(rdMessage,88);

          //rdMessage 定義接收字節存儲區,為全局變量//

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

          {

          count++;

          goto resend

          }

          if(count>=3)

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

          }

          else //if-2

          MessageBox("接收數據錯誤");

          }

          else //if-1

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

          }

          下位機通信程序:

          #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()

          {

          …

          /*初始化串口和定時器*/

          TMOD=0×20;

          TH1=0×fd;

          TR1=0×01;

          ET1=0×00;

          ES=1;

          EA=1;

          /*待發送數據送緩沖區*/

          buffer[0] = 0×ff; //數據特征碼

          buffer[1] = count+1; //數據長度

          buffer[2] = year; //年

          buffer[3] = month; //月

          buffer[4] = date; //日

          buffer[5] = hour; //時

          buffer[6] = minute; //分

          buffer[7] = second; //秒

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

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

          sum+=buffer[po];

          buffer[9]=sum; //校驗和

          …

          }

          /*發送中斷服務程序*/

          void send(void) interrupt 4 using 1

          {

          int i;

          RI=0;

          EA=0;

          do

          {

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

          {

          SBUF=buffer[i]; //發送數據和校驗和//

          while(TI==0);

          TI=0;

          }

          while(RI==0);

          RI=0;

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

          EA=1;

          Return;

          }

          5 應用總結

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

        c語言相關文章:c語言教程


        單片機相關文章:單片機教程


        c++相關文章:c++教程


        單片機相關文章:單片機視頻教程


        單片機相關文章:單片機工作原理



        上一頁 1 2 3 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 渝北区| 高雄县| 乌兰县| 晴隆县| 阿拉善盟| 连山| 金坛市| 嵩明县| 神池县| 定远县| 西昌市| 留坝县| 正镶白旗| 扶绥县| 剑河县| 罗甸县| 广西| 楚雄市| 永胜县| 岑溪市| 高青县| 忻州市| 西宁市| 东兴市| 巴彦淖尔市| 芜湖县| 藁城市| 廉江市| 榆树市| 尖扎县| 东台市| 石河子市| 洛宁县| 延长县| 南汇区| 新乡县| 山丹县| 阿拉尔市| 沈阳市| 瑞安市| 仙居县|