課程設(shè)計--智能交通燈_第1頁
已閱讀1頁,還剩29頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、<p><b>  《嵌入式》</b></p><p>  課 程 設(shè) 計 報 告</p><p>  題目: 智能交通燈 </p><p>  專 業(yè):計算機 </p><p>  班 級: </p><p

2、>  學 號: </p><p>  姓 名: </p><p>  指導教師: </p><p><b>  完成日期: 2 </b></p><p><b>  目 錄

3、</b></p><p><b>  一、前言2</b></p><p>  1.1 課題研究背景2</p><p>  1.2 課程研究目的和意義2</p><p><b>  二 、需求分析3</b></p><p>  三、開發(fā)環(huán)境及系統(tǒng)結(jié)構(gòu)4&l

4、t;/p><p>  3.1 開發(fā)環(huán)境4</p><p>  3.2 系統(tǒng)結(jié)構(gòu)5</p><p><b>  四、詳細設(shè)計5</b></p><p>  4.1 程序框架設(shè)計5</p><p>  4.2 3秒程序的控制6</p><p>  4.2 8秒程序的控

5、制7</p><p><b>  五、 結(jié)論8</b></p><p><b>  5.1實驗截圖9</b></p><p><b>  附件112</b></p><p><b>  一、前言</b></p><p>  

6、1.1 課題研究背景</p><p>  交通是城市經(jīng)濟活動的命脈,對城市經(jīng)濟發(fā)展、人民生活水平的提高起著十分重要的作用。城市交通問題自人類進入21世紀以來,道路交通一直是困擾城市發(fā)展、制約城市經(jīng)濟建設(shè)的重要因素。而使用合理的交通燈可以合理的規(guī)劃城市交通,從而為城市的快速運輸和發(fā)展提供最優(yōu)化的交通解決方案。</p><p>  可以肯定的說,城市道路增長的有限與車輛增加的無限這一對矛盾是導

7、致城市交通擁擠的根本原因。對于減輕交通擁塞及其副作用特別是對于大的交通網(wǎng)絡(luò)而言,仍然缺乏一種真正的交通響應(yīng)控制策略。計算機硬件能力與控制軟件能力很不相符,由此造成的影響是很多交通控制策略根本不能實現(xiàn)。在少數(shù)幾個例子中,一些新的控制策略確實能得以實現(xiàn),但他們卻沒能對早期的控制策略進行改進。由于缺乏能提高交通狀況、特別是缺乏擁塞網(wǎng)絡(luò)交通狀況的實時控制策略,幾乎可以說真正成熟的控制策略仍然不存在.智能化和集成化是城市交通信號控制系統(tǒng)的發(fā)展趨勢

8、和研究前沿,而針對交通系統(tǒng)規(guī)模復雜性特征的控制結(jié)構(gòu)和針對城市交通瓶頸問題并代表智能決策的阻塞處理則是智能交通控制優(yōu)化管理的關(guān)鍵和突破口。</p><p>  1.2 課程研究目的和意義</p><p>  車輛的不斷增多,表明車輛對道路容量的要求仍然很高,短期內(nèi)還不可能改變。自從開始使用計算機控制系統(tǒng)后,不管在控制硬件里取得什么樣的實際進展,交通控制領(lǐng)域的控制邏輯方面始終沒能取得重大突破。

9、</p><p>  因此,研究基于智能集成的城市交通信號控制系統(tǒng)具有相當?shù)膶W術(shù)價值和實用價值。把智能控制引入到城市交通控制系統(tǒng)中,未來的城市交通控制系統(tǒng)才能適應(yīng)城市交通的發(fā)展。從長遠來看該研究具有巨大的現(xiàn)實意義。</p><p><b>  二 、需求分析</b></p><p>  城市交通信號控制系統(tǒng)的管理是保障城市交通高效有序運行的一個

10、重要組成部分,如何實時有效的對交通信號進行控制,優(yōu)化城市交通車流是目前國內(nèi)外學者研究的熱點。對交通信號控制系統(tǒng)的優(yōu)化,現(xiàn)階段主要體現(xiàn)在對城市交叉路口相位中的綠信比的調(diào)節(jié),通過調(diào)節(jié)綠信比來形成各個車道的路阻,改變交通車流量。隨著數(shù)字智能技術(shù)與通信和控制領(lǐng)域的結(jié)合,交通信號控制系統(tǒng)的優(yōu)化逐漸的由孤立路口的控制向大規(guī)模區(qū)域網(wǎng)絡(luò)控制、定時控制向自適應(yīng)控制、集中控制向分布式協(xié)同控制的方向發(fā)展,傳統(tǒng)城市交通網(wǎng)也將被智能交通網(wǎng)絡(luò)所取代。</p&

11、gt;<p>  1、城市交通信號控制系統(tǒng)的優(yōu)化</p><p>  交通信號燈的控制是城市交通網(wǎng)絡(luò)中一個最主要的控制手段。通過優(yōu)化交通岔路口交通燈的紅綠燈配時方案,設(shè)計有效的交通信號優(yōu)化控制策略,可提高城市交通資源的利用率,緩解道路擁堵。</p><p>  目前,設(shè)計一個實時可靠并且實際可行的交通信號控制系統(tǒng)仍然有諸多的問題需要解決。這些問題集中在以下幾個方面:a)綠燈轉(zhuǎn)

12、換是一個離散變化過程,其優(yōu)化組合往往是一個NP困難問題;b)城市交通規(guī)模巨大,除了要處理大量交通數(shù)據(jù)外,一定范圍內(nèi)相鄰路口交通車流量存在相關(guān)性,故相鄰路口應(yīng)有一定的協(xié)調(diào)特性才能達到整體優(yōu)化;c)交通中面臨著許多的不可知以及難以測量的擾動因素(如:交通事故,非法停車,行人穿行等);d)交通狀態(tài)的測量信息往往是局部信息,并且測量的準確度受許多因素的影響。針對以上問題,國內(nèi)外研究學者提出了交通信號控制系統(tǒng)的解決方案,按幾何拓撲可分為交叉路口

13、控制、城市主干道控制和網(wǎng)絡(luò)控制三類。</p><p>  2、智能交通系統(tǒng)與分布式協(xié)同優(yōu)化控制</p><p>  智能交通系統(tǒng)的提出為全面解決城市交通運輸問題提供了一個有效的路徑。智能交通系統(tǒng)涵蓋了交通領(lǐng)域中的許多方面,包括信息服務(wù)系統(tǒng)、交通管理系統(tǒng)、電子收費系統(tǒng)等,是高度綜合化、智能化的交通控制系統(tǒng)。在交通管理方面,智能交通系統(tǒng)采用先進的車輛檢測技術(shù)和計算機信息處理技術(shù),獲取實時交通路

14、況信息,并根據(jù)收集到的信息對交通進行控制,信息的收集一方面提高了交通控制的準確性,但同時大量的數(shù)據(jù)也增加了消息處理的復雜性。</p><p>  三、開發(fā)環(huán)境及系統(tǒng)結(jié)構(gòu)</p><p><b>  3.1 開發(fā)環(huán)境</b></p><p>  Linux操作系統(tǒng) 從 1991 年問世到現(xiàn)在,短短十幾年的時間已經(jīng)發(fā)展成為功能強大、設(shè)計完善的操作系

15、統(tǒng)之一。作為最能體現(xiàn)互聯(lián)網(wǎng)自由和開放精神的代表,Linux 自誕生以來就以軟件源代碼開放、可自主開發(fā)和高效靈活等特點迅速得到眾多軟件開發(fā)者的推崇。并且,隨著互聯(lián)網(wǎng)的迅猛發(fā)展,Linux 正取代 Windows 成為全球增長最快的操作系統(tǒng)。隨著 Linux 應(yīng)用的普及,Linux 下的軟件開發(fā)無疑會成為 IT業(yè)發(fā)展的又一次高潮。Linux 操作系統(tǒng)主要有以下特點:</p><p><b>  自由軟件;&

16、lt;/b></p><p>  完全兼容 POSIX1.0 標準;</p><p>  支持多用戶和多任務(wù);</p><p><b>  良好的用戶界面;</b></p><p><b>  支持多種文件系統(tǒng);</b></p><p><b>  豐富的網(wǎng)絡(luò)

17、功能;</b></p><p><b>  可靠的系統(tǒng)安全;</b></p><p><b>  良好的可移植性;</b></p><p>  正是由于以上特點,Linux 在短時間內(nèi)獲得了飛速的發(fā)展,已在各個行業(yè)得到了廣泛的應(yīng)用。同時,Linux 嵌入式系統(tǒng)具有優(yōu)秀的可移植性,利用 Linux 系統(tǒng)來進行軟件

18、開發(fā)已經(jīng)成為一種趨勢[12]??梢韵胂?,Linux 的發(fā)展前景非常可觀。</p><p><b>  3.2 系統(tǒng)結(jié)構(gòu)</b></p><p>  本系統(tǒng)以單片機為核心,系統(tǒng)硬件電路由狀態(tài)燈,LED顯示,按鍵,組成。其具體的硬件電路總圖如圖3.1所示。  其中P0用于送顯兩片LED數(shù)碼管,P1用于控制紅綠黃發(fā)光二極管,XTAL1和XTAL2接入晶振時鐘電路,

19、REST引腳接上復位電路,P2.6P2.7對數(shù)碼管進行片選,P3.2即INT0緊急情況處理按鍵,P3.3即INT1接時間調(diào)整中斷按鍵。</p><p><b>  四、詳細設(shè)計</b></p><p>  4.1 程序框架設(shè)計</p><p>  本文介紹的智能交通燈有普通交通燈的功能(此處設(shè)置時間為3秒)和監(jiān)測到震動后調(diào)整時間(本文設(shè)置為8秒

20、)的功能。程序流程圖如圖4.1所示:</p><p><b>  圖1程序流程圖</b></p><p>  4.2 3秒程序的控制</p><p>  3秒中的程序是在車流量較少時即未檢測到震動時執(zhí)行的程序,其流程圖如圖4.2所示:</p><p>  圖2 3秒程序流程圖</p><p> 

21、 4.2 8秒程序的控制</p><p>  8秒中的程序是在車流量較多時即檢測到震動時執(zhí)行的程序,其流程圖如圖4.3所示</p><p>  圖3 8秒程序流程圖</p><p><b>  五、 結(jié)論</b></p><p><b>  5.1實驗截圖</b></p><p

22、>  (1)程序剛啟動時,執(zhí)行3秒中的紅燈。終端上顯示的結(jié)果如圖5-1所示:</p><p>  圖4 3秒紅燈實驗截圖</p><p> ?。?)紅燈過后執(zhí)行3秒的綠燈,終端顯示結(jié)果如圖5-2所示:</p><p>  圖5 3秒綠燈實驗截圖</p><p> ?。?)監(jiān)測到震動,交通燈切換到8秒的時間,終端執(zhí)行結(jié)果如圖5-3所示:&

23、lt;/p><p>  圖6 8秒綠燈實驗截圖</p><p><b>  附件1</b></p><p>  #include <sys/types.h></p><p>  #include <sys/stat.h></p><p>  #include <sys/t

24、ime.h></p><p>  #include <signal.h></p><p>  #include <fcntl.h></p><p>  #include <termios.h></p><p>  #include <errno.h></p><p>

25、;  #include <ctype.h></p><p>  #include <stdio.h></p><p>  #include <stdlib.h></p><p>  #include <string.h></p><p>  #include <time.h><

26、/p><p>  #include <unistd.h></p><p>  #include"pthread.h"</p><p>  #include <stddef.h></p><p>  #include "wsnserial.h"</p><p>

27、  #define LED 1</p><p>  #define PWM 1</p><p>  #define SEG 1</p><p>  #define STEPPER_START 0</p><p>  #define STEPPER_STOP 1</p><p>  #define DCMOTOR_STA

28、RT0</p><p>  #define DCMOTOR_STOP 0</p><p>  int nread=0;</p><p>  char Recbuff[1024];</p><p>  int sRecDataLen = 0;</p><p>  char save_byte4;</p>

29、<p>  char save_byte5;</p><p>  pthread_mutex_t mutex;</p><p>  int buffer_has_item =0;</p><p>  int buffer_has_send =0;</p><p>  int SendNum = 0;</p><p

30、>  struct serial_config serialread;</p><p>  static int serial_fd;</p><p>  int speed_arr[] = {B230400, B115200, B57600, B38400, B19200, B9600, B4800, B2400, B1200, B300,</p><p>

31、  B38400, B19200, B9600, B4800, B2400, B1200, B300};</p><p>  int name_arr[] = {230400, 115200, 57600, 38400, 19200, 9600, 4800, 2400, 1200, 300,</p><p>  38400, 19200, 9600, 4800, 2400, 1200, 3

32、00};</p><p>  //-----------------------------------------------</p><p>  void set_speed(int fd,int speed)</p><p><b>  {</b></p><p><b>  int i;</b&g

33、t;</p><p>  int status;</p><p>  struct termios Opt;</p><p>  //struct termios oldOpt;</p><p>  tcgetattr(fd, &Opt);</p><p>  //printf("serialrea

34、d.speed is %d\n",serialread.serial_speed);</p><p>  for( i = 0; i < sizeof(speed_arr)/sizeof(int); i++)</p><p><b>  {</b></p><p>  if(speed == name_arr[i])</p

35、><p><b>  {</b></p><p>  tcflush(fd, TCIOFLUSH);</p><p>  cfsetispeed(&Opt, speed_arr[i]);</p><p>  cfsetospeed(&Opt, speed_arr[i]);</p><p&g

36、t;  status = tcsetattr(fd, TCSANOW, &Opt);</p><p>  if(status != 0)</p><p>  perror("tcsetattr fd1");</p><p><b>  return;</b></p><p><b>

37、  }</b></p><p>  tcflush(fd, TCIOFLUSH);</p><p><b>  }</b></p><p><b>  }</b></p><p>  int set_Parity(int fd,int databits,int stopbits,int

38、parity)</p><p><b>  {</b></p><p>  struct termios options;</p><p>  //struct termios oldoptions;</p><p>  if(tcgetattr(fd, &options) != 0)</p>&l

39、t;p><b>  {</b></p><p>  perror("SetupSerial 1");</p><p>  return(FALSE);</p><p><b>  }</b></p><p>  //options.c_cflag |= (CLOCAL|CR

40、EAD);</p><p>  options.c_cflag &=~CSIZE;</p><p>  //printf("serialread.databits is %d\n",serialread.databits);</p><p>  switch(databits)</p><p><b>

41、  {</b></p><p><b>  case 7:</b></p><p>  options.c_cflag |= CS7;</p><p><b>  break;</b></p><p><b>  case 8:</b></p><

42、;p>  options.c_cflag |= CS8;</p><p><b>  break;</b></p><p><b>  default:</b></p><p>  fprintf(stderr,"Unsupported data size\n");</p><

43、p>  return(FALSE);</p><p><b>  }</b></p><p>  //printf("serialread.parity is %c\n",serialread.parity);</p><p>  switch(parity)</p><p><b>

44、;  {</b></p><p><b>  case 'n':</b></p><p><b>  case 'N':</b></p><p>  options.c_cflag &= ~PARENB;</p><p>  options.c_i

45、flag &= ~INPCK;</p><p><b>  break;</b></p><p><b>  case 'o':</b></p><p><b>  case 'O':</b></p><p>  options.c_cf

46、lag |= (PARODD | PARENB);</p><p>  options.c_iflag |= INPCK;</p><p><b>  break;</b></p><p><b>  case 'e':</b></p><p><b>  case 

47、9;E':</b></p><p>  options.c_cflag |= PARENB;</p><p>  options.c_cflag &= ~PARODD;</p><p>  options.c_iflag |= INPCK;</p><p><b>  break;</b>&l

48、t;/p><p><b>  case 'S':</b></p><p>  case 's': /*as no parity*/</p><p>  options.c_cflag &= ~PARENB;</p><p>  options.c_cflag &= ~CSTO

49、PB;</p><p><b>  break;</b></p><p><b>  default:</b></p><p>  fprintf(stderr, "Unsupported parity\n");</p><p>  return(FALSE);</p>

50、;<p><b>  }</b></p><p>  //printf("serialread.stopbits is %d\n",serialread.stopbits);</p><p>  switch(stopbits)</p><p><b>  {</b></p>

51、<p><b>  case 1:</b></p><p>  options.c_cflag &= ~CSTOPB;</p><p><b>  break;</b></p><p><b>  case 2:</b></p><p>  options

52、.c_cflag |= CSTOPB;</p><p><b>  break;</b></p><p><b>  default:</b></p><p>  fprintf(stderr,"Unsupported stop bits\n");</p><p>  retur

53、n(FALSE);</p><p><b>  }</b></p><p>  if(parity != 'n'&& parity != 'N')</p><p>  options.c_iflag |= INPCK;</p><p>  options.c_cflag &

54、amp;= ~CRTSCTS;</p><p>  options.c_iflag &= ~IXOFF;</p><p>  options.c_iflag &= ~IXON;</p><p>  if(parity != 'n'&& parity != 'N')</p><p>

55、;  options.c_iflag |= INPCK;</p><p>  tcflush(fd, TCIOFLUSH);</p><p>  //options.c_iflag |= IGNPAR|ICRNL;</p><p>  options.c_lflag &= ~(ICANON|ECHO|ECHOE|ISIG);</p><

56、p>  //options.c_oflag |= OPOST; </p><p>  options.c_oflag &= ~OPOST;</p><p>  options.c_iflag &= ~(ICRNL|IGNCR); </p><p>  //options.c_iflag &= ~(IXON|IXOFF|IXANY);

57、</p><p>  options.c_cc[VTIME] = 0; //150; //15 seconds</p><p>  options.c_cc[VMIN] = 0;</p><p>  tcflush(fd, TCIFLUSH);</p><p>  if(tcsetattr(fd

58、, TCSANOW, &options) != 0)</p><p><b>  {</b></p><p>  perror("SetupSerial 3");</p><p>  return(FALSE);</p><p><b>  }</b></p>

59、<p>  return(TRUE);</p><p><b>  }</b></p><p>  int OpenDev(char *Dev)</p><p><b>  {</b></p><p>  int fd = open(Dev, O_RDWR);</p>&

60、lt;p>  if(-1 == fd)</p><p><b>  {</b></p><p>  perror("Can't Open Serial Port");</p><p>  return -1;</p><p><b>  }</b></p>

61、;<p><b>  else</b></p><p>  return fd;</p><p><b>  }</b></p><p>  int serial_init(void)</p><p><b>  {</b></p><p>

62、;  char *Dev = "/dev/s3c2410_serial1";</p><p><b>  int i;</b></p><p>  serial_fd = OpenDev(Dev);</p><p>  if(serial_fd > 0)</p><p>  set_speed(

63、serial_fd,115200);</p><p><b>  else</b></p><p><b>  {</b></p><p>  printf("Can't Open Serial Port!\n");</p><p><b>  exit(0);

64、</b></p><p><b>  }</b></p><p>  if(set_Parity(serial_fd,8,1,'N') == FALSE)</p><p><b>  {</b></p><p>  printf("Set parity Erro

65、r\n");</p><p><b>  exit(1);</b></p><p><b>  }</b></p><p><b>  return 0;</b></p><p><b>  }</b></p><p> 

66、 float ScanADdata(char byte9)</p><p><b>  {</b></p><p>  float ADdata;</p><p>  if(byte9 > 0xf0)</p><p>  ADdata = 0;</p><p>  else if(byte9

67、 > 0x80)</p><p>  ADdata = 3.3;</p><p><b>  else </b></p><p>  ADdata = (3.3/127)*byte9;</p><p>  return ADdata;</p><p><b>  }</b&g

68、t;</p><p>  int PressData(char byte)</p><p><b>  {</b></p><p>  int temp = 0;</p><p>  if(byte > 36)</p><p>  temp = (byte-34)*200/18;</p

69、><p><b>  else</b></p><p><b>  temp = 0;</b></p><p>  return temp;</p><p><b>  }</b></p><p>  int RainData(char byte)</

70、p><p><b>  {</b></p><p>  if(byte > 11)</p><p><b>  return 1;</b></p><p><b>  else</b></p><p><b>  return 0;</

71、b></p><p><b>  }</b></p><p>  float WaterData(char byte13)</p><p><b>  {</b></p><p>  float WaterData;</p><p>  if(byte13 >0

72、)</p><p>  WaterData = (byte13+3)/7.5;</p><p><b>  else</b></p><p>  WaterData = 0;</p><p>  return WaterData;</p><p><b>  }</b>&l

73、t;/p><p>  float ultrasonicData(char byte11)</p><p><b>  {</b></p><p>  float ultrasonicData;</p><p>  ultrasonicData = 0.0544*byte11;</p><p>  re

74、turn ultrasonicData;</p><p><b>  }</b></p><p>  void * fbl_malloc(int len, char * str)</p><p><b>  {</b></p><p>  void * ptr = malloc(len);</

75、p><p>  if(ptr == 0)</p><p>  printf("%s Failed (len = %d)!!!\n", str, len);</p><p>  return ptr;</p><p><b>  }</b></p><p>  char XorVer

76、ify(char BytesCMD[])</p><p><b>  {</b></p><p>  char checksum = BytesCMD[1];</p><p><b>  int i;</b></p><p>  for (i = 1; i < BytesCMD[1]+1; i

77、++)</p><p><b>  {</b></p><p>  checksum ^= BytesCMD[i+1];</p><p><b>  }</b></p><p>  return checksum;</p><p><b>  }</b>

78、</p><p>  void js();</p><p>  void ting();</p><p>  void zou();</p><p>  void fmq();</p><p>  void scan()</p><p><b>  {</b></p

79、><p>  int source_addr,father_addr;</p><p>  char byte4,byte5,byte6,byte7,byte8,byte9,byte10,byte11,byte12,byte13,byte14,byte15,byte16,byte17,byte18,byte19;</p><p>  char test,byteChec

80、k;</p><p>  char PacketBuff[50];</p><p>  int PacketLen;</p><p><b>  int j;</b></p><p>  struct wsn_comm_pkg *pkt = 0;</p><p>  if(sRecDataLen

81、> 0)</p><p><b>  {</b></p><p>  //printf("sRecDataLen : %d\n",sRecDataLen);</p><p>  int sFirstPosition = 0;</p><p>  while(sFirstPosition <

82、 sRecDataLen)</p><p><b>  {</b></p><p>  //printf("sFirstPosition: %d\n",sFirstPosition);</p><p>  if(Recbuff[sFirstPosition] == 0x2)</p><p><b

83、>  {</b></p><p>  PacketLen = Recbuff[sFirstPosition + 1]+3;</p><p>  //printf("PacketLen : %d\n",PacketLen);</p><p>  if(PacketLen <= sRecDataLen -sFirstPosit

84、ion)</p><p><b>  {</b></p><p>  //printf("PacketBuff=");</p><p><b>  int i;</b></p><p>  for(i = 0; i < PacketLen; i++){</p>

85、<p>  PacketBuff[i] = Recbuff[sFirstPosition + i];</p><p>  //printf("%02x ",PacketBuff[i]);</p><p><b>  }</b></p><p>  printf("\n");</p>

86、<p>  if(PacketBuff[7]==0x1){</p><p>  byte10 = PacketBuff[10];</p><p>  byte11 = PacketBuff[11];</p><p>  byte12 = PacketBuff[12];</p><p>  byte13 = PacketBuf

87、f[13];</p><p>  byte14 = PacketBuff[14];</p><p>  byte15 = PacketBuff[15];</p><p>  byte16 = PacketBuff[16];</p><p>  byte17 = PacketBuff[17];</p><p>  byt

88、e18 = PacketBuff[18];</p><p>  if((byte10 & 0x7)==0x0)</p><p><b>  {</b></p><p>  /*printf(" A/Dµçѹ: %.2f V \n 2530ζÈ

89、: %d ¡æ\n °åζÈ: %d ¡æ\n ÎÂʪ¶ÈζÈ: %d ¡æ\n ÎÂʪ¶Èʪ¶È: %d

90、 %\n ¹âÕÕ¶È: %d\n",ScanADdata(byte11),byte12,byte13,byte14,byte15,byte16);*/</p><p>  if(byte17 == 0x00)</p><p><b>  {</b></p><p>  pr

91、intf(" Vibration sensors: NO vibration\n");</p><p>  for(j=3;j>=0;j--)</p><p><b>  {</b></p><p>  if(byte17==0x01)break;</p><p><b>  slee

92、p(3);</b></p><p><b>  js(j);</b></p><p><b>  sleep(1);</b></p><p><b>  ting();</b></p><p>  //sleep(1);</p><p>&l

93、t;b>  }</b></p><p><b>  fmq();</b></p><p>  for(j=3;j>=0;j--)</p><p>  {if(byte17==0x01)break;</p><p><b>  sleep(3);</b></p>

94、<p><b>  js(j);</b></p><p><b>  sleep(1);</b></p><p>  zou();//if(byte17==0x01)break;</p><p><b>  }</b></p><p><b>  fmq()

95、;</b></p><p><b>  }</b></p><p>  if(byte17 == 0x01)</p><p><b>  {</b></p><p>  printf(" Vibration sensors, vibration, traffic lights

96、to start!!!!!!!!!!!\n");</p><p>  for(j=8;j>=0;j--)</p><p><b>  {</b></p><p><b>  sleep(3);</b></p><p><b>  js(j);</b></p

97、><p><b>  sleep(1);</b></p><p><b>  ting();</b></p><p>  //sleep(1);</p><p><b>  }</b></p><p><b>  fmq();</b>&

98、lt;/p><p>  for(j=8;j>=0;j--)</p><p><b>  {</b></p><p><b>  sleep(3);</b></p><p><b>  js(j);</b></p><p><b>  slee

99、p(1);</b></p><p><b>  zou();</b></p><p><b>  }</b></p><p><b>  fmq();</b></p><p><b>  }</b></p><p>  

100、/*if(byte18 == 0x00)</p><p><b>  {</b></p><p>  printf(" ÈËÌå?ÐÓ?:ÎÞÈËÌå?ÐÓ?\n");</p><p>

101、<b>  }</b></p><p>  if(byte18 == 0x01)</p><p><b>  {</b></p><p>  printf(" ÈËÌå?ÐÓ?:ÓÐÈËÌå?&

102、#208;Ó?\n");</p><p><b>  }*/</b></p><p><b>  }</b></p><p>  /*if((byte10 & 0x7)==0x1)</p><p><b>  {</b></p><

103、;p>  printf(" A/Dµçѹ: %.2f V\n 2530ζÈ: %d ¡æ\n ¿ÉÈ?ÆøÌå: %d\n ?Æ?«: %d\n ѹÁ?: %d ¿Ë\n &#

104、198;øѹ: %d\n ",ScanADdata(byte11),byte12,byte13,byte14,PressData(byte15),byte16);</p><p><b>  }</b></p><p>  if((byte10 & 0x7)==0x2)</p><p><

105、b>  {</b></p><p>  printf(" A/Dµçѹ: %.2f V\n 2530ζÈ: %d ¡æ\n ³¬Éù²?: %.4f Ã×\n XÖá?ÓË

106、Ù¶È: %d\n YÖá?ÓËÙ¶È: %d\n ZÖá?ÓËÙ¶È: %d\n ",ScanADdata(byte11),byte12,ultrasonicData(byte13),byte14,byte15,byte16);</p><

107、;p><b>  }</b></p><p>  if((byte10 & 0x7)==0x3)</p><p><b>  {</b></p><p>  printf(" A/Dµçѹ: %.2f V\n 2530ζ&#

108、200;: %d ¡æ\n",ScanADdata(byte11),byte12);</p><p>  if(byte13== 0)</p><p><b>  {</b></p><p>  printf(" »ô¶û?ÐÓ?:Î&

109、#222;?ų¡\n");</p><p><b>  }</b></p><p>  if(byte13 == 1)</p><p><b>  {</b></p><p>  printf(" »ô¶û?

110、ÐÓ?:ÓÐ?ų¡\n");</p><p><b>  }</b></p><p>  if(RainData(byte14) == 0)</p><p><b>  {</b></p><p>  printf(&

111、quot; ÓêµÎ:ÎÞÓêµÎ\n");</p><p><b>  }</b></p><p>  if(RainData(byte14) == 1)</p><p><b>  {</b></p>

112、;<p>  printf(" ÓêµÎ:ÓÐÓêµÎ\n");</p><p><b>  }</b></p><p>  printf(" Ë®Á÷Á¿:%.1f

113、 Éý/·Ö\n ?ų¡:%d\n",WaterData(byte15),byte16);</p><p><b>  }</b></p><p>  if((byte10 & 0x7)==0x4)</p><p><b>  {</b&

114、gt;</p><p>  printf(" A/Dµçѹ: %.2f V\n 2530ζÈ: %d ¡æ\n",ScanADdata(byte11),byte12);</p><p>  //printf(" ÓÐÎ

115、2;¿?: %02x %02x \n",byte11, byte12);</p><p>  if(byte13 == 0x05 && byte14 == 0x00)</p><p><b>  {</b></p><p>  printf(" Óп?\n"

116、;);</p><p>  printf(" ¿?ºÅ: %02x %02x %02x %02x\n",byte13,byte14,byte15,byte16);</p><p><b>  }</b></p><p><b>  else</b></p>&

117、lt;p>  printf(" ÎÞ¿? \n");</p><p>  //if(byte11==0x01 && byte12 == 0x01)</p><p><b>  }*/</b></p><p>  /*if((byte10 & 0x7)==0x6)&l

118、t;/p><p><b>  {</b></p><p>  save_byte4 = byte4;</p><p>  save_byte5 = byte5;</p><p>  //printf("save_stepbyte4: %02x\n save_stepbyte5: %02x\n",save_

119、byte4,save_byte5);</p><p>  buffer_has_item = 1;</p><p>  buffer_has_send = 0;</p><p>  printf(" ¿ØÖÆÄ£¿é1\n");</p><p>

120、;  printf(" A/Dµçѹ: %.2f V\n 2530ζÈ: %d ¡æ\n",ScanADdata(byte11),byte12);</p><p><b>  }</b></p><p>  if((byte10 &a

121、mp; 0x7)==0x7)</p><p><b>  {</b></p><p>  save_byte4 = byte4;</p><p>  save_byte5 = byte5;</p><p>  //printf("save_ledbyte4: %02x\n save_ledbyte5: %02x

122、\n",save_byte4,save_byte5);</p><p>  buffer_has_item = 2;</p><p>  buffer_has_send = 0;</p><p>  printf(" ¿ØÖÆÄ£¿é2\n");</p

123、><p>  printf(" A/Dµçѹ: %.2f V\n 2530ζÈ: %d ¡æ\n",ScanADdata(byte11),byte12);</p><p><b>  }</b></p><p> 

124、 printf("\n");</p><p><b>  }*/</b></p><p><b>  }</b></p><p>  for(i = 0; i < sRecDataLen - sFirstPosition - PacketLen; i++)</p><p>

125、<b>  {</b></p><p>  Recbuff[i] = Recbuff[sFirstPosition + PacketLen+i];</p><p><b>  }</b></p><p>  sRecDataLen -= PacketLen + sFirstPosition;</p><

126、p><b>  }</b></p><p><b>  return;</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p>

127、<p>  sFirstPosition++;</p><p><b>  }</b></p><p><b>  }</b></p><p>  sRecDataLen = 0;</p><p><b>  }</b></p><p><

128、;b>  }</b></p><p>  void serial_rw()</p><p><b>  {</b></p><p><b>  int i;</b></p><p>  char buff[1024];</p><p><b>  

129、while(1)</b></p><p><b>  {</b></p><p>  pthread_mutex_lock(&mutex);</p><p>  if((nread = read(serial_fd,buff,1024))>0)</p><p><b>  {</

130、b></p><p>  buff[nread] = '\0';</p><p>  //printf("\nrecv:%d\n",nread);</p><p>  //printf("nread=");</p><p>  for(i=0;i<nread;i++)&

131、lt;/p><p><b>  {</b></p><p>  //printf("0x%02x ",buff[i]);</p><p>  Recbuff[sRecDataLen + i] = buff[i];</p><p><b>  }</b></p><

132、p>  //printf("\n");</p><p>  //printf("Recbuffread_last=");</p><p>  for(i=0;i<sRecDataLen;i++)</p><p><b>  {</b></p><p>  //prin

133、tf("%02x",Recbuff[i]);</p><p><b>  }</b></p><p>  //printf("\n");</p><p>  //printf("Recbuffread_new=");</p><p>  for(i=0;i<

134、;nread;i++)</p><p><b>  {</b></p><p>  //printf("%02x",Recbuff[sRecDataLen + i]);</p><p><b>  }</b></p><p>  //printf("\n");

135、</p><p>  sRecDataLen = sRecDataLen + nread;</p><p><b>  scan();</b></p><p><b>  }</b></p><p>  pthread_mutex_unlock(&mutex);</p><

136、;p><b>  }</b></p><p>  //close(serial_fd);</p><p><b>  }</b></p><p>  unsigned char XorVerifySend(unsigned char BytesCMD[])</p><p><b> 

137、 {</b></p><p>  unsigned char checksum = BytesCMD[1];</p><p><b>  int i;</b></p><p>  for (i = 1; i < BytesCMD[1]+1; i++)</p><p><b>  {</b

138、></p><p>  checksum ^= BytesCMD[i+1];</p><p><b>  }</b></p><p>  return checksum;</p><p><b>  }</b></p><p>  void js(i){if(SEG)&

139、lt;/p><p><b>  {</b></p><p>  int nwrite;</p><p>  //????êy??1ü</p><p>  printf(" The remaining%ds\n",i);</p><p>  printf(&quo

140、t;\n");</p><p>  unsigned char SBuff[21];</p><p>  SBuff[0] = 0x02;</p><p>  SBuff[1] = 0x12;</p><p>  SBuff[2] = 0xB9;</p><p>  SBuff[3] = 0x46;</

141、p><p>  SBuff[4] = 0xF1;</p><p>  SBuff[5] = save_byte4;</p><p>  SBuff[6] = save_byte5;</p><p>  SBuff[7] = 0x01;</p><p>  SBuff[8] = 0x07;</p><p&

142、gt;  SBuff[9] = 0x01;</p><p>  SBuff[10] = 0x0+i;</p><p>  SBuff[11] = 0x0;</p><p>  SBuff[12] = 0x0;</p><p>  SBuff[13] = 0x0;</p><p>  SBuff[14] = 0x0;&l

143、t;/p><p>  SBuff[15] = 0x0;</p><p>  SBuff[16] = 0x0;</p><p>  SBuff[17] = 0x0;</p><p>  SBuff[18] = 0x0;</p><p>  SBuff[19] = 0x0;</p><p>  SBuf

144、f[20] = 0x0;</p><p>  SBuff[20] = XorVerifySend(SBuff);</p><p>  nwrite = write(serial_fd,SBuff,sizeof(SBuff));</p><p>  //printf("nwrite1=%d\n",nwrite);</p><p&

145、gt;  buffer_has_send = 1;//sleep(2);</p><p><b>  /*i++;</b></p><p><b>  if(i==4)</b></p><p><b>  {i=0;}*/</b></p><p><b>  }}&l

146、t;/b></p><p>  void ting(){if(LED)</p><p>  {int nwrite;</p><p>  printf(" It's a red light,nothroughfare!!!\n");</p><p>  printf("\n");</

147、p><p>  //????LED???ó</p><p>  unsigned char SBuff[21];</p><p>  SBuff[0] = 0x02;</p><p>  SBuff[1] = 0x12;</p><p>  SBuff[2] = 0xB9;</p><p>

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論