新聞中心

EEPW首頁(yè) > 嵌入式系統(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 來(lái)源:網(wǎng)絡(luò) 收藏

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

  部分上位機(jī)程序

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

  void CCommDlg::OnSend()

  {

  CSerial Serial;

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

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

  //打開(kāi)串行口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é)存儲(chǔ)區(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("串行口打開(kāi)失敗");

  }

  下位機(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ù)長(zhǎng)度

  buffer[2] = year; //年

  buffer[3] = month; //月

  buffer[4] = date; //日

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

  buffer[6] = minute; //分

  buffer[7] = second; //秒

  buffer[8] = recordID; //事件號(hào)

  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ī)的串行通信方法具有使用簡(jiǎn)單、編寫(xiě)程序方便的特點(diǎn)。經(jīng)過(guò)半年多應(yīng)用于EBM滅火系統(tǒng)的情況來(lái)看,該方法實(shí)現(xiàn)的系統(tǒng)運(yùn)行穩(wěn)定可靠,是一種值得推廣的簡(jiǎn)單易行的通信方法。

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


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


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


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


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



上一頁(yè) 1 2 3 下一頁(yè)

評(píng)論


相關(guān)推薦

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

關(guān)閉