摘 è¦ï¼šæœ¬æ–‡ä»‹ç´¹äº†ä¸€ç¨®åœ¨é ç¨‹ç’°å¢ƒç›£æ¸¬ç³»çµ±ä¸æ‡‰ç”¨ç„¡ç·šæ•¸å‚³æ¨¡å¡Šå¯¦ç¾æ•¸æ“šå‚³è¼¸çš„æ–¹æ³•。å°è¨è¨ˆæ™‚需è¦è§£æ±ºçš„一些å•題進行了討論,并給出了無線數傳模塊與PCæ©Ÿä¸²è¡Œé€šä¿¡çš„è»Ÿä»¶å¯¦ç¾æ€è·¯ã€‚
é—œéµè©žï¼šç„¡ç·šæ•¸å‚³;å”è°;串行å£é€šä¿¡
  ç¾ä»£ä¸–界是一個信æ¯ä¸–界,信æ¯çš„ç²å–å‚³è¼¸ä¹Ÿé€æ¥å¾žæœ‰ç·šéŽæ¸¡åˆ°ç„¡ç·šã€‚隨著無線通信事æ¥çš„發展,無線傳輸這一技術越來越多的為人們所熟悉,相應的產å“也滲é€åˆ°ç¤¾æœƒç”Ÿæ´»çš„å„å€‹é ˜åŸŸï¼Œå¦‚ç„¡ç·šæŠ„è¡¨ã€æ•¸å—圖åƒå‚³è¼¸ã€å°å€å‚³å‘¼ã€å·¥æ¥æ•¸æ“šé‡‡é›†ã€éžæŽ¥è§¸RF 智能å¡ã€å®‰å…¨é˜²ç«ç³»çµ±ã€å€åŸŸå ±è¦ç³»çµ±çš„æ•¸å—信號傳輸ç‰ã€‚è€Œé€™ä¸€æŠ€è¡“çš„æœ€å¤§ä½œç”¨ä¾¿æ˜¯å„ªåŒ–æ•¸æ“šå‚³è¼¸ç³»çµ±çš„æ•ˆçŽ‡ã€‚æœ¬æ–‡å°‡æ¤æŠ€è¡“æ‡‰ç”¨äºŽç„¡ç·šé€šä¿¡çš„é 程環境監測系統ä¸ï¼Œä½¿è©²ç³»çµ±ä¸åƒ…æ•¸æ“šå‚³è¼¸æ•ˆçŽ‡é«˜ï¼Œè€Œä¸”çµæ§‹ç°¡å–®ï¼Œæ“作方便。
一ã€é 程環境監控系統組æˆ
  1ã€é 程環境監控系統概述
[align=center]

圖1 é 程環境監測系統框圖[/align]
  é ç¨‹ç’°å¢ƒç›£æ¸¬ç³»çµ±ä¸»è¦æ˜¯å°é…¸é›¨ï¼Œæ°´è³ªï¼Œç…™éœ§æ¿ƒåº¦ç‰ç’°å¢ƒåƒæ•¸é€²è¡Œé›†ä¸æ¸¬é‡ï¼Œå®ƒæ˜¯ä¸€ç¨®ç”±ä¸å¿ƒç«™PC機ã€ç„¡ç·šæ•¸å‚³æ¨¡å¡Šèˆ‡åç«™PC機ã€ç„¡ç·šæ•¸å‚³æ¨¡å¡Šã€æ•¸æ“šé‡‡é›†å™¨ã€ç’°å¢ƒæ¸¬å®šå„€æ‰€çµ„æˆçš„主從å¼ç³»çµ±ã€‚ç³»çµ±çµæ§‹å¦‚圖1所示。
  ä¸å¿ƒç«™ä¸»è¦ä½äºŽåŸŽå¸‚或地å€çš„環境監測總站,å站則在城市或地å€çš„周邊。環境測定儀有碳氫化åˆç‰©æ¸¬å®šå„€MODEL-745ã€å¤§æ°£æ¸¬å®šå„€AFC-125ã€é…¸é›¨æ¸¬å®šå„€AR-107SNAã€COD測定儀VS-3951ç‰,他們收集的å„ç¨®ç’°å¢ƒåƒæ•¸é€šéŽæ•¸æ“šé‡‡é›†å™¨é€å…¥åç«™PC機ä¸ï¼Œé€²è¡Œæ•¸æ“šè™•ç†ã€åƒæ•¸é¡¯ç¤ºå’Œä¿å˜ï¼Œå¹¶éš¨æ™‚準備接å—ä¸å¿ƒç«™çš„æŸ¥è©¢å’Œå®šæ™‚發é€ã€‚æ¯ä¸€å站與ä¸å¿ƒç«™ä¹‹é–“çš„é ç¨‹é€šä¿¡æ˜¯é‡‡ç”¨åŒ—äº¬æ± æ½¤é”å…¬å¸çš„W21DM無線數傳全雙工通信模塊來實ç¾çš„。
  ä¸å¿ƒç«™ã€å站與無線數傳模塊間的通信是通éŽç•°æ¥ä¸²å£ä¾†å®Œæˆçš„。異æ¥ä¸²å£é‡‡ç”¨æ¨™æº–çš„ä¸²å£æ ¼å¼å³ï¼šä¸€å€‹èµ·å§‹ä½ã€å…«å€‹æ•¸æ“šä½ã€ä¸€å€‹åœæ¢ä½ã€‚傳輸速率為1200bit/s。
  2〠無線數傳模塊工作éŽç¨‹
[align=center]

圖2ç„¡ç·šæ•¸å‚³æ¨¡å¡Šçµæ§‹åœ–[/align]
  圖2æ˜¯ç„¡ç·šæ•¸å‚³æ¨¡å¡Šçµæ§‹æ¡†åœ–ã€‚ç„¡ç·šæ•¸å‚³æ¨¡å¡Šçš„å·¥ä½œæ–¹å¼æœ‰å…¨é›™å·¥å’ŒåŠé›™å·¥å…©ç¨®ï¼Œç‚ºäº†èƒ½å……分測試系統傳輸數據的å¯é 性,本系統采用全雙工模å¼ã€‚åŒæ™‚注æ„在è¨ç½®é€šä¿¡æ™‚ï¼Œå¿…é ˆä¿è‰é€šéŽä¸²è¡Œå£å°‡ç„¡ç·šæ•¸å‚³æ¨¡å¡Šçš„æ”¶ç™¼é »çއè¨ç½®ç›¸åŒã€‚
  2.1模塊發é€éŽç¨‹ï¼š
  當模塊收到PCæ©Ÿçš„ä¸²è¡Œå£æ•¸æ“šåŽï¼Œæ¨¡å¡Šå…ˆé€šéŽDTRç·šåˆ¤æ–·æ”¶åˆ°çš„æ•¸æ“šæ˜¯å‘½ä»¤é‚„æ˜¯ç™¼é€æ•¸æ“šï¼Œè‹¥æ˜¯å‘½ä»¤å‰‡åŸ·è¡Œç›¸æ‡‰çš„å‘½ä»¤ï¼Œè‹¥æ˜¯ç™¼é€æ•¸æ“šå‰‡å…ˆå°‡è¦ç™¼é€çš„æ•¸æ“šé€åˆ°ç™¼é€ç·©æ²–å€EERAMä¸ï¼Œå¹¶åŒæ™‚å°‡æ¨¡å¡Šçš„ç‹€æ…‹ç”±æŽ¥æ”¶ç‹€æ…‹è½‰æ›æˆç™¼å°„狀態,狀態轉æ›å®ŒæˆåŽå•Ÿå‹•ç™¼é€æ‰“包程åºï¼Œå¹¶å°‡é€™å€‹æ•¸æ“šåŒ…的數據é€åˆ°æ¨¡å¡Šä¸çš„æ•¸æ“šèª¿åˆ¶å£ä»¥FSK的方å¼èª¿åˆ¶æˆæ¨¡æ“¬ä¿¡è™Ÿ, 與鎖相環ä¸çš„æŒ¯è•©ä¿¡è™Ÿä¸€èµ·é€æ··é »å™¨ï¼Œå‡é »åŽçš„å°„é »ä¿¡è™Ÿå†ç¶“發射放大器ã€åŠŸçŽ‡æ”¾å¤§å™¨æ”¾å¤§åŽé€šéŽå¤©ç·šç™¼é€å‡ºåŽ»ã€‚é€™é‡Œçš„æ•¸æ“šæ‰“åŒ…è¦éµå¾žäº‹å…ˆå®šç¾©å¥½çš„傳輸å”è°ï¼Œé€™æ¨£æ‰å¯ä»¥ä½¿æŽ¥æ”¶é›™æ–¹æœ‰è¦å¯å¾ªï¼Œè€Œä¸”é¿å…其他信號干擾。具體è¨å®šä¸‹é¢è©³ç´°èªªæ˜Žã€‚
  2.2模塊的接收éŽç¨‹ï¼š
  在接收狀態下,通éŽå¤©ç·šæŽ¥æ”¶é€²ä¾†çš„å°„é »ä¿¡è™Ÿç¶“å°„é »ç™¼å¤§å™¨åŽï¼Œèˆ‡éŽ–ç›¸ç’°ä¸çš„æŒ¯è•©ä¿¡è™Ÿä¸€èµ·é€åˆ°æ··é »å™¨ï¼Œé™é »åŽçš„ä¸é »ä¿¡è™Ÿï¼Œé€šéŽä¸é »æ¿¾æ³¢å™¨ã€ä¸é »æ”¾å¤§å™¨æ”¾å¤§åŽé€åˆ°èª¿åˆ¶è§£èª¿å™¨ï¼Œä»¥FSK解調åŽçš„æ•¸å—信號按照å”è°å°‡æœ‰æ•ˆæ•¸æ“šé€åˆ°å˜å„²å™¨ä¸ï¼Œå†ç¶“串行å£é€åˆ°è¨ˆç®—機。
二ã€è¨è¨ˆç³»çµ±æ™‚需è¦è€ƒæ…®çš„一些å•題
  1ã€å‚³è¼¸å”è°
ã€€ã€€å› ç‚ºç„¡ç·šé€šä¿¡æ¨¡å¡Šè¦å°æŽ¥æ”¶é€²ä¾†çš„æ•¸æ“šé€²è¡Œè™•ç†ï¼Œå°±å¿…é ˆèƒ½å¤ é‘’åˆ¥æ•¸æ“šçš„çœŸå½ï¼Œæ‰€ä»¥è¦æ±‚傳輸數據的雙方建立一種有效å”è°ä½¿å¾—èƒ½å¤ è˜åˆ¥å™ªè²å’Œæœ‰æ•ˆæ•¸æ¤ã€‚å› ç‚ºå™ªè²æ˜¯ä»¥éš¨æ©Ÿå—節出ç¾çš„,沒有明顯的çµåˆæ–¹å¼ï¼Œå™ªè²æºå¯èƒ½ç”¢ç”Ÿä»»æ„å—節的組åˆï¼Œæ‰€ä»¥ç ”究在無線通信的éŽç¨‹ä¸æœ€å¥½èƒ½é€šéŽä¸€ç¨®å”è°èƒ½æœ‰æ•ˆçš„æŠ‘制噪è²çš„產生。
ã€€ã€€ç¶“éŽæ¯”è¼ƒé¸æ“‡ï¼Œé‡‡ç”¨äº†ä»¥ä¸‹çš„æ•¸æ“šå‚³è¼¸å”è°æ ¼å¼ï¼š

  Radom ä»»æ„內容的å—節
  Data 使•¸æ“šåŒ…å—節
  Length 為數據包包å«çš„Headerå—節之åŽçš„æ‰€æœ‰å—節的長度
  Checksum æ ¡é©—å’Œå—節
ã€€ã€€ç¶“éŽæ¸¬è©¦å’Œè©¦é©—,發ç¾0xFF åŽè·Ÿ0XAA,0x55 在噪è²ä¸ä¸å®¹æ˜“發生,所以è¨ç½®å‚³è¼¸å”è°åœ¨æ•¸æ“šåŒ…å‰åŠ é–‹å§‹å—節0xFF åŽè·Ÿ0xAA,0x55發é€ã€‚å› ç‚ºç¬¬ä¸€å€‹å—節的數æ¤åœ¨ç™¼é€æ™‚容易丟失,所以在å”è°çš„é–‹å§‹åŠ ä¸€å€‹ä»»æ„內容的å—節,ç„¶åŽæ˜¯0xFF åŽè·Ÿä¸€å€‹0xAA,0x55;接收å”è°è¦å®šåªæŽ¥æ”¶ä»¥0xFF åŽè·Ÿ0xAA,0x55 開始的包.于是就å¯ä»¥å¾ˆæ–¹ä¾¿çš„æŠŠä»¥ä¸Šç³»çµ±çš„æ•¸æ“šåŒ…æ ¼å¼å®šç‚ºä»¥ä¸Šæ ¼å¼ã€‚
  2ã€å‚³è¼¸é »çއ
  在無線通信系統ä¸å‚³è¼¸é »çŽ‡ä¹Ÿæ˜¯è‡³é—œé‡è¦çš„,在為劃分和åˆç†ä½¿ç”¨é »çŽ‡ï¼Œåœ‹éš›é›»ä¿¡è¯ç›Ÿï¼ˆITU)將世界分為三個å€ï¼Œä¸åœ‹å±¬äºŽç¬¬ä¸‰å€ã€‚ITUå°æˆ‘國的æ¥ä½™æ¥å‹™é »çŽ‡æœ‰å°ˆé–€çš„åˆ†åˆ—ã€‚è€Œé€™é‡Œè¨å®šçš„é »æ®µç‚º227.00~223.00MHz,æ¤ç‚ºåœ‹å®¶æ¥ä½™é »æ®µï¼Œä¹Ÿå°±æ˜¯èªªå¯ä»¥è‡ªç”±ä½¿ç”¨,當然如果希望長期專用,則需è¦ç”³è«‹é »èœè¨±å¯è‰ï¼Œå°ˆç”¨è©²é »æ®µã€‚
ã€€ã€€ç³»çµ±ä¸æ•¸æ“šçš„é è·é›¢å‚³è¼¸æ˜¯æ ¹æ“šæŽ¥å—é›™æ–¹çš„é »çŽ‡ä¾†åˆ¤æ–·æ˜¯å¦æŽ¥å—的。所以需è¦ç·¨å¯«ä¸€å®šçš„程åºå®Œæˆé »çއè¨ç½®ã€‚å¦‚å¯«é »æ™‚ï¼ŒæŠŠDTRç½®ä½Žï¼ŒæŒ‡ä»¤æ ¼å¼ç‚ºï¼šD7H:FFH:AAH:AAH:AAH:BBH:BBH:BBH,AAH:AAH:AAHè¡¨ç¤ºç™¼å°„é »çŽ‡ï¼Œå¦‚229.100MHz表示為22H:91H:00H三å—節,åŒç†BBH:BBH:BBHè¡¨ç¤ºæŽ¥æ”¶é »çŽ‡ã€‚è€Œå‚³é€æ•¸æ“šæ™‚ï¼ŒDTR置高或懸空。
  3ã€ä¸²è¡Œæ•¸æ“šçš„傳逿–¹å¼
  由于è¨è¨ˆé‡‡ç”¨çš„æ˜¯ç„¡ç·šå‚³è¼¸ï¼Œæ‰€ä»¥ç•¶é€šéŽä¸²è¡Œå£å°‡æ•¸æ“šé€åˆ°ç„¡ç·šæ•¸å‚³æ¨¡å¡Šçš„æ™‚候需è¦è€ƒæ…®æ•¸æ“šçš„å‚³è¼¸æ ¼å¼ã€‚一般來說,通常我們發é€çš„æ˜¯å—符或者數å—,這時我們就需è¦åœ¨è»Ÿä»¶ä¸æ ¹æ“šASCII碼的è¦å‰‡å°‡ä»–們轉化為åå…進制數形å¼ï¼Œä»¥å—節方å¼å‚³é€ã€‚åŒæ™‚也需考慮發é€èˆ‡æŽ¥æ”¶ä¸²å£ä¹‹é–“的延é²ã€‚
三ã€ä¸²è¡Œå£é€šä¿¡çš„軟件è¨è¨ˆ
ã€€ã€€ä¸²è¡Œå£æ˜¯å¸¸ç”¨çš„計算機與外部串行è¨å‚™ä¹‹é–“的數據傳輸通é“,而Visual C++6.0是一種功能強大的å¯è¦–化的é¢å‘å°è±¡çš„Windows編程開發平臺,利用其進行串行通信方便易行,應用廣泛。通常情æ³ä¸‹VC++䏿œ‰ä¸‰ç¨®å¯¦ç¾ä¸²è¡Œé€šä¿¡çš„編程技術:1)利用控件MSComm實ç¾ä¸²è¡Œé€šä¿¡ï¼šåœ¨å°è©±æ¡†ä¸å‰µå»ºé€šä¿¡æŽ§ä»¶MSCommï¼Œé€™ç¨®æ–¹æ³•ç°¡å–®æ˜“ç”¨ï¼Œä½†å¿…é ˆæ‹¿åˆ°å°è©±æ¡†ä¸ä½¿ç”¨ï¼Œéˆæ´»æ€§è¼ƒå·®;2)多線程實ç¾ä¸²è¡Œé€šä¿¡ï¼šåœ¨è‡ªå®šç¾©çš„串行通信類ä¸å‰µå»ºç«¯å£ç›£è¦–線程,進行多線程控制,并在指定的事件發生時å‘相關的窗å£ç™¼é€é€šçŸ¥æ¶ˆæ¯ã€‚該方法實時性強,但是系統復雜;3)在單線程ä¸å»ºç«‹è‡ªå®šç¾©çš„通信類實ç¾ä¸²è¡Œé€šä¿¡;利用VC++çš„MFC類庫實ç¾ã€‚èˆ‡æŽ§ä»¶æ–¹æ³•ç›¸æ¯”ï¼Œéˆæ´»æ€§å¼·ï¼Œå¯æŒ‰ä¸åŒéœ€è¦å®šåˆ¶éˆæ´»çš„串å£é€šä¿¡é¡žä¾†å¯¦ç¾ï¼ŒåŒæ™‚ä¹Ÿæ¯”å¤šç·šç¨‹é€šä¿¡çµæ§‹ç°¡å–®ã€‚
  çµåˆæœ¬è¨è¨ˆæ‰€é‡‡ç”¨çš„硬件的特點,以åŠå¯¦éš›çš„é‹è¡Œç’°å¢ƒï¼Œæœ€çµ‚鏿“‡ç¬¬ä¸‰ç¨®æ–¹å¼å®Œæˆä¸²è¡Œå£é€šä¿¡ã€‚
ã€€ã€€ç¨‹åºæµç¨‹åœ–如下:
[align=center]

圖3 ç¨‹åºæµç¨‹åœ–[/align]
  在程åºä¸åˆ©ç”¨é¡žCserialPort實ç¾è² 責串å£çš„é…置,數據傳輸的延é²è™•ç†ä»¥åŠè®€å¯«ã€‚çµæ§‹å¦‚下:
  class CSerialPort : public CWnd
  {
  public:
  CSerialPort();//åˆå§‹åŒ–
  void ClosePort();
  BOOL ReadByte(char* buff);//讀串å£
  BOOL WriteByte(BYTE bybyte[100],int length);
  //寫串å£
  BOOL OpenPort(CString portname);
  BOOL SetCommunicationTimeouts();
  //è¨ç½®é€šä¿¡å»¶æ™‚
  BOOL ConfigurePort(DWORD BaudRate,
  BYTE ByteSize,DWORD fParity,
  BYTE Parity, BYTE StopBits);
  HANDLE hComm;// 用來標è˜ä¸²è¡Œå£å¥æŸ„
  DCB m_dcb;
  COMMTIMEOUTS m_CommTimeouts;
  BOOL m_bPortReady;// 䏲壿˜¯å¦æº–備好
  BOOL bWriteRC;
  BOOL bReadRC;
  DWORD iBytesWritten;
  DWORD iBytesRead;
  virtual ~CSerialPort();//釋放資æº
  BOOL OpenPort(CString portname);
  BOOL ConfigurePort()
  ï½
  其ä¸é…置串行å£é‡‡ç”¨DCBçµæ§‹ï¼ŒBOOL ReadByte(char* buff) å’ŒBOOL WriteByte(BYTE,int)函數為讀寫串行å£ï¼Œç‚ºäº†è˜åˆ¥æ“ä½œæ˜¯å¦æ£ç¢ºï¼Œåˆ©ç”¨BOOL bWriteRC, bReadRCè¨ç½®æˆåŠŸæ¨™å¿—ã€‚åŒæ™‚è¨å®šDWORD iBytesWritten,iBytesRead確定å—節的個數。在收發數據時需è¦ç›£æ¸¬ä¸²è¡Œå£æ˜¯ä¸æ˜¯æº–備好,這時就å¯ä»¥æª¢æ¸¬m_bPortReady的狀態。
  整個程åºçš„編制也就相應的分為以下幾個部分:
  é…置串å£;é…置數傳模塊;讀寫串行å£;通信延時處ç†ç‰ã€‚
å››ã€ç¸½çµ
  環境監測系統具有采樣數據é‡å¤§ï¼Œå‚³è¼¸è·é›¢é ,以åŠç’°å¢ƒæ¢ä»¶å·®åˆ¥å¤§çš„特點,長期以來數據傳輸部分一直是人們關注的焦點。以往系統主è¦é‡‡ç”¨MODEM和電話機實ç¾é 程通信,但由于電話線具有通信速度慢,質é‡å·®çš„缺點,已ä¸èƒ½æ»¿è¶³ç¾ä»£ç’°å¢ƒç›£æ¸¬çš„è¦æ±‚。這里應用無線數傳模塊完æˆé 程數據通信,ä¸åƒ…å…‹æœäº†é€™äº›ç¼ºé»žï¼Œè€Œä¸”大大改善了該系統的數據傳輸性能。經最終測試該系統ä¸åƒ…å¯ä»¥åœ¨æ¢ä»¶æƒ¡åŠ£å¹²æ“¾å¤§çš„ç’°å¢ƒä¸‹é€²è¡Œé è·é›¢å‚³è¼¸ï¼Œè€Œä¸”æ•¸æ“šæº–ç¢ºçŽ‡é«˜ï¼Œå‚³è¼¸é€Ÿåº¦å¿«ã€‚å¯æ ¹æ“šä¸åŒéœ€è¦æ‡‰ç”¨äºŽé›»åŠ›ã€æ°´åˆ©ã€çŸ³æ²¹ã€æž—æ¥ã€å‹˜æŽ¢ç‰é ˜åŸŸã€‚
åƒè€ƒæ–‡ç»ï¼š
  1ã€ä¸Šæµ·æ¡‘åšé›»å科技有é™å…¬å¸æŠ€è¡“文檔 2003
  2ã€æŽç¾å‹‡ Visual C++串å£é€šä¿¡æŠ€è¡“與工程實è¸
  人民郵店出版社 2002年5月
  3〠王å®å‰ å³å»ºè¨ 基于VC++6.0的串行通信è¨è¨ˆèˆ‡å¯¦ç¾ 黃石高ç‰å°ˆç§‘叿 ¡å¸å ± 2003(4)