摘 è¦ï¼šç‚ºè§£æ±ºæ©Ÿå™¨äººé™æ“作的通信å•題,本文è¨è¨ˆäº†ä¸€ç¨®å¯ä»¥å¯¦ç¾é 程客戶機與本地æœå‹™å™¨ç›¸äº’收發信æ¯çš„網絡通信平臺。該平臺基于TCP/IPå”è°ï¼Œé‹ç”¨Windows Sockets套接å—在VC++6.0環境下編寫。與以往TCP通信的命令行輸出ä¸åŒï¼Œè©²ç¶²çµ¡é€šä¿¡å¹³è‡ºå¯¦ç¾äº†ç•Œé¢è¼¸å‡ºã€‚å¯¦é©—çµæžœè¡¨æ˜Žï¼Œè©²ç¶²çµ¡é€šä¿¡å¹³è‡ºèƒ½å¤ æº–ç¢ºæ–¹ä¾¿åœ°å¯¦ç¾æœå‹™å™¨å’Œå®¢æˆ¶ç«¯ä¹‹é–“å¯¦æ™‚æ”¶ç™¼æ–‡ä»¶å’Œäº’ç›¸é€šä¿¡ï¼Œæ»¿è¶³æ©Ÿå™¨äººé™æ“作的通訊任務。
é—œéµè©žï¼šTCP通信;é 程客戶機;套接å—;陿“作
[b][align=center]The Design of Robot Network Communication Platform
Pan Bin,Jiang Zhijian,Zhang Lei,Wang Chengcheng[/align][/b]
Abstract: To solve the communication problem of robot teleoperation , a new kind of network communication platform which realizes receiving and sending messages mutually between the remote client and local server is presented in this paper.The platform is discussed using Windows Sockets based on TCP/IP protocol on the condition of VC++6.0.It achieved the interface output different from former TCP correspondence‘s command-line output.The results of the experiment show that the platform realized sending and receiving the messages and documents in real-time between local server and remote client.So the platform can meet the communication needs for robot teleoperation better.
Key words: TCP communication;Remote Client;Socket;Teleoperation
  目å‰ï¼Œæ©Ÿå™¨äººé™æ“作系統已æˆç‚ºæ©Ÿå™¨äººç ”ç©¶çš„ä¸€å€‹ç†±é»žã€‚åœ¨æ©Ÿå™¨äººé™æ“作的éŽç¨‹ä¸ï¼Œæœ¬åœ°æœå‹™å™¨èˆ‡é 程客戶機之間的網絡通信å•é¡Œæ˜¯é™æ“作的關éµç’°ç¯€ã€‚é‡å°æ©Ÿå™¨äººé™æ“作的通信å•題,本文è¨è¨ˆäº†ä¸€ç¨®åœ¨Windows XP環境下,é‹ç”¨Socket實ç¾çš„基于TCP/IPå”è°çš„網絡通信平臺。
1 Socket編程原ç†
  1.1 Socket簡介
  Socket(套接å—ï¼‰æœ€åˆæ˜¯åŠ å·žå¤§å¸ä¼¯å…‹åˆ©åˆ†æ ¡ç‚ºUNIXæ“作系統開發的網絡通信接å£ã€‚åŽä¾†Intel, Microsoft, Sunç‰ç¶²çµ¡å» 商將其移æ¤åˆ°Windowsä¸ï¼Œå½¢æˆäº†Windows Socketsè¦èŒƒï¼Œå®ƒå®šç¾©äº†ä¸€å¥—Windows環境下網絡編程的接å£ã€‚利用Windows Socket開發的網絡通信程åºçš„å±¤æ¬¡çµæ§‹å¦‚圖1示。
[align=center]

圖1 Socketsç·¨ç¨‹çš„çµæ§‹[/align]
ã€€ã€€æ ¹æ“šå‚³è¼¸æ•¸æ“šé¡žåž‹çš„ä¸åŒï¼ŒSocketså¯åˆ†ç‚ºæµå¼å¥—接å—(SOCK_STREAMï¼‰å’Œæ•¸æ“šå ±å¼å¥—接å—(SOCK_DGRAM)兩類。æµå¼å¥—æŽ¥å—æä¾›é¢å‘連接ã€å¯é 的數據傳輸æœå‹™ï¼Œæ•¸æ“šç„¡å·®éŒ¯ã€ç„¡é‡å¾©çš„發é€ï¼Œä¸”按發é€é †åºæŽ¥å—。æµå¼å¥—接å—實際上是基于TCPå”è°å¯¦ç¾çš„ã€‚æ•¸æ“šå ±å¼å¥—æŽ¥å—æä¾›ç„¡é€£æŽ¥æœå‹™ã€‚æ•¸æ“šå ±ä»¥ç¨ç«‹åŒ…å½¢å¼ç™¼é€ï¼Œä¸æä¾›ç„¡éŒ¯ä¿è‰ï¼Œæ•¸æ“šå¯èƒ½ä¸Ÿå¤±æˆ–é‡å¾©ï¼Œå¹¶ä¸”接å—é †åºæ··äº‚ã€‚æ•¸æ“šå ±å¥—æŽ¥å—實際上是基于UDPå”è°å¯¦ç¾çš„。
  按照套接å—在客戶機/æœå‹™å™¨ï¼ˆClient/ Server)模å¼ä¸çš„功能å¯å°‡å…¶åˆ†ç‚ºå…©é¡žï¼š
  監è½å¥—接å—:該套接å—ä½äºŽæœå‹™å™¨ç«¯ï¼Œå®ƒçš„主è¦åŠŸèƒ½å°±æ˜¯å°ç‰¹å®šçš„端å£é€²è¡Œä¸æ–·çš„監è½ï¼Œç•¶æª¢æ¸¬åˆ°æœ‰é€£æŽ¥è«‹æ±‚時,接å—ç”³è«‹ï¼Œå¹¶æ§‹é€ ä¸€å€‹æ–°çš„å®¢æˆ¶ç«¯å¥—æŽ¥å—,與連接申請方的客戶端套接å—建立連接,從而為雙方的通信åšå¥½æº–備。
  客戶端套接å—ï¼šè©²å¥—æŽ¥å—æ˜¯ç”¨ä¾†é€²è¡Œç¶²çµ¡é€šä¿¡çš„實體。它ä½äºŽå®¢æˆ¶æ©Ÿå’Œæœå‹™å™¨ä¸Šï¼Œæœå‹™å™¨å¿…é ˆç¶æŒå®ƒç‚ºä¹‹æœå‹™çš„客戶一樣數é‡çš„這種套接å—,形æˆä¸€å€‹ä»¥æœå‹™å™¨ç‚ºä¸å¿ƒçš„æ˜Ÿåž‹çµæ§‹ã€‚
  1.2 TCP網絡通信平臺è¨è¨ˆæ¥é©Ÿ
  基于Internetçš„æ©Ÿå™¨äººé™æ“作技術是ç¾ä»£ç¶²çµ¡æŠ€è¡“和機器人控制技術的çµåˆï¼ŒInternet使用網際分組交æ›å”è°TCP/IP作為通信è¦èŒƒï¼Œå®ƒåŒ…括TCP, UDPå’ŒICMPç‰å”è°ã€‚å…¶ä¸TCPå”è°æ˜¯é¢å‘連接的å”è°ï¼Œè¦æ±‚在數據交æ›ä»¥å‰å¿…é ˆèˆ‡é€šä¿¡æ–¹å»ºç«‹ä¸€æ¢é€£æŽ¥ã€å®ƒå…·æœ‰åˆ†æ®µå’Œé‡çµ„åŠŸèƒ½ï¼Œèƒ½å¤ ç¢ºä¿æ•¸æ“šå¯é ã€æœ‰åºåœ°å‚³è¼¸ã€‚
  TCP通信整個éŽç¨‹å¯ä»¥åˆ†æˆä¸‰å€‹éšŽæ®µ:é€£æŽ¥å»ºç«‹ã€æ•¸æ“šå‚³è¼¸å’Œæ‹†é™¤é€£æŽ¥ã€‚
 ?。?)連接建立階段:首先æœå‹™å™¨ä¸çš„監è½å¥—接å—å°æ–·å£é€²è¡Œåµè½ï¼Œå®¢æˆ¶ç«¯çš„套接å—呿œå‹™å™¨ç«¯çš„ç‰¹å®šæ–·å£æå‡ºé€£æŽ¥ç”³è«‹ã€‚
  (2)通信階段:這是整個éŽç¨‹çš„æ ¸å¿ƒéƒ¨åˆ†ï¼Œä»»å‹™å°±æ˜¯è² 責數據的收發。
 ?。?)拆除連接階段:在傳完數據之åŽï¼Œé—œé–‰å¥—接å—,釋放所分é…的資æºã€‚
  使用Soeket編寫TCP通信程åºçš„ä¸»è¦æ¥é©Ÿå¦‚下:
  1) æ§‹é€ Soeketå°è±¡ ;
  2) 使用該å°è±¡æ§‹é€ 基本的Socket奿Ÿ„ã€‚ç”±äºŽé™æ“ä½œçš„æ•¸æ“šé€šä¿¡è¦æ±‚å¯é ,準確,故采用TCPå”è°ï¼Œå¥—接å—使用æµå¼å¥—接å—;
  3) 建立客戶機CSocket,調用Connect()建立與æœå‹™å™¨å¥—接å—的連接.æœå‹™å™¨èª¿ç”¨Listen()監è½è«‹æ±‚連接情æ³ï¼Œå¹¶åœ¨æ”¶åˆ°å®¢æˆ¶ç«¯è«‹æ±‚åŽèª¿ç”¨Accept()接收客戶端連接.
  4) æ§‹é€ CSocketFileå°è±¡ï¼Œå¹¶ä½¿ç”¨CSocketå°è±¡èˆ‡ä¹‹é—œè¯.
  5) æ§‹é€ CArchiveå°è±¡ ,用于接å—å’Œç™¼é€æ•¸æ“šã€‚使用CArchiveå°è±¡ä¾†é€²è¡Œå®¢æˆ¶ç«¯èˆ‡æœå‹™å™¨ç«¯ä¹‹é–“çš„Socket通信
  6) é€šä¿¡çµæŸï¼Œé—œé–‰å¥—接å—,退出程åºã€‚
2 TCP網絡通信平臺程åºçš„實ç¾
ã€€ã€€æœ¬ç¨‹åºæ˜¯ç‚ºæ©Ÿå™¨äººé™æ“作的通信所æå»ºçš„一個網絡通信平臺,該平臺實ç¾äº†æœ¬åœ°æœå‹™å™¨èˆ‡é ç¨‹å®¢æˆ¶æ©Ÿä¹‹é–“çš„æ•¸æ“šç¶²çµ¡é€šä¿¡ï¼Œç³»çµ±çµæ§‹åœ–如圖2所示。
[align=center]

圖2 陿“ä½œç³»çµ±çµæ§‹åœ–[/align]
  本文的程åºè¨è¨ˆæ˜¯åŸºäºŽTCP/IPå”è°çš„,使用客戶機/æœå‹™å™¨æ¨¡å¼ã€‚本程åºè¨è¨ˆèª¿è©¦çš„網絡環境為采用Windows XPä¸çš„ TCP/IPå”è°é…置的局域網,æœå‹™å™¨çš„çš„IPåœ°å€æ˜¯â€œ192.168.0.104â€ï¼Œé€šä¿¡ç«¯å£å¯ä»»æ„è¨ç½®ï¼Œæœ¬æ–‡è¨ç‚º4231。
  2.1 通信平臺程åºçš„å¯¦ç¾æµç¨‹
  æœå‹™å™¨æ˜¯æŽ§åˆ¶æ©Ÿå™¨äººçš„ä¸»æŽ§åˆ¶è‡ºï¼Œé€šéŽæœå‹™å™¨å¯ä»¥æŽ§åˆ¶æ©Ÿå™¨äººçš„çˆ¬è¡Œã€æª¢æ¸¬ä»¥åŠè½‰å‘ç‰ã€‚æœ¬æ–‡ä¸æœå‹™å™¨ç«¯ç¨‹åºï¼Œä¸»è¦æ˜¯å»ºç«‹ä¸€å€‹èƒ½å¤ 讓客戶端連接的端å£ï¼Œå¹¶é€šéŽç›£è½ï¼Œèˆ‡éœ€è¦é€£æŽ¥çš„客戶端建立連接,并與其進行數據信æ¯é€šä¿¡ï¼Œå°‡æ©Ÿå™¨äººå‚³æ„Ÿå™¨ç²å–的機器人的狀態信æ¯ç™¼é€çµ¦å®¢æˆ¶ç«¯ä¾†å¯¦ç¾é 程信號處ç†ï¼Œå¹¶æŽ¥æ”¶ä¾†è‡ªçš„客戶端的控制信æ¯ä»¥å¯¦ç¾å°æ©Ÿå™¨äººçš„æ“æŽ§ã€‚
ã€€ã€€å®¢æˆ¶æ©Ÿç«¯æ˜¯å°æ©Ÿå™¨äººé€²è¡Œé 程控制的計算機,它通éŽè«‹æ±‚與æœå‹™å™¨å»ºç«‹é€£æŽ¥ä¹‹åŽï¼Œå°‡æŽ§åˆ¶ä¿¡æ¯å‚³é€çµ¦æœå‹™å™¨ç«¯ï¼Œæœå‹™å™¨ç«¯æ ¹æ“šæŽ§åˆ¶ä¿¡æ¯å¯¦ç¾å°æ©Ÿå™¨äººæŽ§åˆ¶ã€‚è€Œä¸”ï¼Œå®¢æˆ¶æ©Ÿç«¯é‚„èƒ½å¤ æŽ¥å—æœå‹™å™¨å‚³é€éŽä¾†çš„æ©Ÿå™¨äººç‹€æ…‹ä¿¡æ¯ï¼Œä»¥ä¾¿å°æ©Ÿå™¨äººç²å–的信æ¯é€²è¡Œè™•ç†ã€‚本文的客戶機端程åºé€šéŽConnect()與æœå‹™å™¨å»ºç«‹é€£æŽ¥ï¼Œä¾†é”到相互通信的目的。
  網絡通信平臺實ç¾çš„æµç¨‹åœ–å¦‚åœ–3所示。æœå‹™å™¨ç«¯ç¨‹åºæ˜¯é€šä¿¡å¹³è‡ºçš„æ ¸å¿ƒéƒ¨åˆ†ï¼Œæœ¬æ–‡çš„æœå‹™å™¨ç«¯ç¨‹åºä¸åƒ…å¯ä»¥å¯¦ç¾èˆ‡ä¸€å€‹é 程客戶機端的單å°å–®é€šä¿¡ï¼Œè€Œä¸”å¯ä»¥èˆ‡å¤šå€‹å®¢æˆ¶æ©Ÿç«¯åŒæ™‚進行通信??蛻é´C端程åºç›¸å°äºŽæœå‹™å™¨ç«¯ç¨‹åºæ¯”較簡單,沒有了æœå‹™å™¨ç«¯ç¨‹åºçš„監è½ç¨‹åºå’ŒæŽ¥å—連接程åºï¼Œä½†æ˜¯æ¯”æœå‹™å™¨ç«¯å¢žåŠ äº†é€£æŽ¥ç¨‹åºã€‚連接程åºå’Œç›£è½ç¨‹åºæ˜¯å€åˆ¥äºŽæœå‹™å™¨ç«¯ç¨‹åºå’Œå®¢æˆ¶æ©Ÿç«¯ç¨‹åºçš„æ¨™å¿—。
[align=center]

圖3 通信平臺æµç¨‹åœ–[/align]
 ?。?) 監è½ç¨‹åº
  Listen()(監è½ç¨‹åºï¼‰æ˜¯æœå‹™å™¨ç¨‹åºå€åˆ¥äºŽå®¢æˆ¶æ©Ÿç«¯ç¨‹åºæœ€ä¸»è¦çš„æ¨™å¿—,æœå‹™å™¨ç«¯é€šéŽç›£è½ç¨‹åºä¾†ç›£è½æœ‰æ²’有客戶機端請求連接。當有客戶機æå‡ºé€£æŽ¥è«‹æ±‚,通éŽç›£è½ç¨‹åºå°‡é€£æŽ¥è«‹æ±‚發至æœå‹™å™¨ä¾†å»ºç«‹å…©è€…之間的連接,æœå‹™å™¨èˆ‡å®¢æˆ¶æ©Ÿæ‰èƒ½å¯¦ç¾é€šä¿¡ã€‚監è½ç¨‹åºé‚„是å€åˆ¥ä½¿ç”¨äº†æµå¼å¥—æŽ¥å—æˆ–æ•¸æ“šå ±å¼å¥—接å—的標志。監è½ç¨‹åºçš„å˜åœ¨ç‚ºç¶²çµ¡é€šä¿¡æä¾›äº†å¯é ã€ç„¡å·®éŒ¯çš„連接。
  (2)連接程åº
  Connect()(連接程åºï¼‰æ˜¯å®¢æˆ¶ç«¯ä¸æ‰€ç¨æœ‰çš„程åºï¼Œæ˜¯å‘æœå‹™å™¨ç«¯ç™¼é€é€£æŽ¥è«‹æ±‚所編寫的。連接程åºåœ¨æ”¶åˆ°å®¢æˆ¶æ©Ÿç«¯éœ€è¦é€£æŽ¥æœå‹™å™¨çš„請求之åŽï¼Œå°±æœƒç™¼é€æ‰€éœ€è¦é€£æŽ¥çš„æœå‹™å™¨IP地å€å’Œæœå‹™å™¨ç«¯å£ã€‚發é€ä¹‹åŽæœƒç‰å¾…連接消æ¯çš„å饋消æ¯ï¼Œä¾†ç¢ºèªå®¢æˆ¶æ©Ÿç«¯æ˜¯å¦é€£æŽ¥æˆåŠŸã€‚
 ?。?) 接å—連接程åº
  Accept()(接收連接程åºï¼‰æ˜¯å®¢æˆ¶æ©Ÿç«¯å°æ‡‰äºŽå®¢æˆ¶æ©Ÿç«¯é€£æŽ¥ç¨‹åºè€Œç·¨å¯«çš„,該程åºå¯ä»¥å¯¦ç¾å°é€£æŽ¥ç¨‹åºçš„åé¥‹ã€‚ç•¶ç¨‹åºæŽ¥æ”¶åˆ°å®¢æˆ¶æ©Ÿç«¯ç¨‹åºç™¼ä¾†çš„連接請求時,會å°å®¢æˆ¶æ©Ÿåé¥‹å›žé€£æŽ¥æ˜¯å¦æˆåŠŸçš„æ¶ˆæ¯ï¼Œè€Œä¸”該程åºå¯ä»¥ç²å–è¦æ±‚連接的客戶機端的IP地å€å’Œç«¯å£ï¼Œä»¥ä¾¿æœå‹™å™¨ç«¯å¯ä»¥è¨˜éŒ„客戶機端的連接狀態信æ¯ã€‚
 ?。?ï¼‰ç™¼é€æ¶ˆæ¯ç¨‹åº
  Sendï¼ˆï¼‰ï¼ˆç™¼é€æ¶ˆæ¯ç¨‹åºï¼‰å¯ä»¥å¯¦ç¾æŽ§åˆ¶ä¿¡æ¯å¯¦æ™‚地從é 程æ“ä½œè€…ä¸€æ–¹ç™¼å‘æœå‹™å™¨ï¼Œè€Œæ©Ÿå™¨äººçš„狀態信æ¯åˆé€šéŽå„種傳感器(如視覺傳感器ã€åŠ›è¦ºå‚³æ„Ÿå™¨ç‰ï¼‰ç²å–åŽï¼Œç”±æœå‹™å™¨å饋給é 程客戶端。
  (5)接收消æ¯ç¨‹åº
  Receive()(接收消æ¯ç¨‹åºï¼‰å¯ä»¥å¯¦ç¾å®¢æˆ¶æ©Ÿæˆ–者æœå‹™å™¨ç«¯æŽ¥æ”¶ä¾†è‡ªå°æ–¹ç™¼é€çš„æ•¸æ“šæ¶ˆæ¯ã€‚該程åºåœ¨æœå‹™å™¨å’Œå®¢æˆ¶æ©Ÿä¸éƒ½æ˜¯ä¸€è‡´çš„,é…åˆç™¼é€æ¶ˆæ¯ç¨‹åºå¯¦ç¾äº†å®¢æˆ¶æ©Ÿå’Œæœå‹™å™¨ä¹‹é–“的數據消æ¯é€šä¿¡ã€‚
  2.2 å¯¦é©—çµæžœ
  本文的網絡通信平臺é‹è¡Œä¹‹åŽçš„界é¢è¼¸å‡ºåœ–åƒå¦‚圖4所示。
  圖4(a)顯示的是æœå‹™å™¨ç«¯é‹è¡Œä¹‹åŽçš„界é¢ã€‚æœå‹™å™¨ç«¯æ˜¯è©²ç¨‹åºçš„æ ¸å¿ƒç«¯ï¼Œæ‰€æœ‰å®¢æˆ¶ç«¯çš„æ•¸æ“šéƒ½å°‡å‚³è¼¸åˆ°æœå‹™å™¨ç«¯ï¼Œå®¢æˆ¶ç«¯ä¹‹é–“通信需è¦é€šéŽæœå‹™å™¨ç«¯é€²è¡Œä¸è½‰ã€‚而本文所è¨è¨ˆçš„程åºä¸çš„æœå‹™å™¨ç«¯ä¸åƒ…å¯ä»¥å¯¦ç¾ä»¥å»£æ’的形å¼å‘所有連接到該æœå‹™å™¨çš„客戶端發é€ä¿¡æ¯ï¼Œé‚„å¯ä»¥ä»¥å–®å°å–®é€šä¿¡çš„æ–¹å¼å‘單個的客戶端進行通信。在圖4(a)ä¸å°±é¡¯ç¤ºäº†æœå‹™å™¨ç«¯åˆ†åˆ¥åˆ©ç”¨é€™å…©ç¨®æ–¹å¼é€²è¡Œäº†é€šä¿¡ã€‚點擊界é¢ä¸çš„ç™¼é€æŒ‰éˆ•就采å–廣æ’å¼ç™¼é€ä¿¡æ¯ï¼Œè€Œé»žæ“Šç•Œé¢ä¸çš„1å’Œ2兩個按鈕則是å°ç‰¹å®šå®¢æˆ¶ç«¯ç™¼é€æ•¸æ“šã€‚
  本文è¨è¨ˆçš„程åºå¯ä»¥æ”¯æŒå¤šå€‹ä¸åŒçš„
[align=center]

(a)

(b)

(c)[/align]
  圖4 通信平臺é‹è¡Œç•Œé¢
  客戶端和æœå‹™å™¨é€²è¡Œé€£æŽ¥å¹¶é€šä¿¡ã€‚圖4(b)顯示的是IP為“192.168.0.106â€çš„客戶端和æœå‹™å™¨å»ºç«‹é€£æŽ¥ä¹‹åŽçš„通信,而圖4(c)則是IP為“192.168.0.110â€çš„客戶端和æœå‹™å™¨é€šä¿¡çš„界é¢ã€‚
3 實驗性能分æž
  1.時延和數據的丟失å•題
ã€€ã€€æ©Ÿå™¨äººé™æ“ä½œè¦æ±‚數據傳輸è¦å…·å‚™å¯é æ€§å’Œæ¬¡åºæ€§ï¼ŒTCPå”è°æä¾›äº†å¯é 而有åºçš„傳輸,基于這一特性,å¯ä»¥åœ¨å‚³è¼¸éŽç¨‹ä¸ä½¿ç”¨è¶…時é‡å‚³ã€åˆ†æ®µã€é‡çµ„ç‰æª¢éŒ¯ç³¾éŒ¯ç–略,通éŽé€™äº›æª¢éŒ¯ç³¾éŒ¯ç–ç•¥å¯ä»¥ä¿è‰åœ¨æ•¸æ“šå‚³è¼¸éŽç¨‹ä¸çš„å¯é æ€§å’Œæœ‰åºæ€§ï¼Œå¯ä»¥æœ‰æ•ˆçš„é˜²æ¢æ•¸æ“šçš„丟失。
  機器人é ç«¯é™æ“ä½œæŽ§åˆ¶çš„é‡‡ç”¨å¹¶ä¸æ„味著實時控制作用被上移到網絡,實時控制ä¾ç„¶ç”±ç¾å ´çš„æŽ§åˆ¶å–®å…ƒä¾†å®Œæˆï¼Œè€Œç¶²çµ¡é™æ“作更關注的是å°ç¾å ´ä¿¡æ¯çš„監視和管ç†ä»¥åŠå°æ©Ÿå™¨äººçš„éžå¯¦æ™‚控制,所以TCP通信在傳輸éŽç¨‹ä¸å˜åœ¨çš„æ™‚å»¶å•題也就顯得影響ä¸å¤§ã€‚
  2.數據共享å•題åŠå…¶è§£æ±ºæ–¹æ¡ˆ
  由于本文ä¸ç¨‹åºæ˜¯å¤šä»»å‹™å¤šç·šç¨‹çš„ï¼Œç•¶å¤šå€‹å®¢æˆ¶ç«¯åŒæ™‚連接到æœå‹™å™¨æ™‚,多任務ã€å¤šç·šç¨‹å°±æ¥µæ˜“é€ æˆæ•¸æ“šå…±äº«å•題。數據共享å•題å¯ä»¥è§£é‡‹å¦‚下:å‡å®šæœ‰å¤šå€‹å‡½æ•¸ï¼ˆæˆ–者ISRã€ä»»å‹™ï¼‰å…±äº«ä¸€å€‹è®Šé‡ï¼Œå¦‚果在æŸä¸€æ™‚刻å˜åœ¨å°è©²è®Šé‡çš„æ•¸å€¼çš„æ“ä½œï¼Œå¹¶ä¸”åœ¨å°å…¶æ–½åŠ æ“作的的éŽç¨‹ä¸ï¼Œåƒ…有部分æ“作完æˆï¼Œé‚„有一部分沒有完æˆï¼Œè‹¥åœ¨æ¤æ™‚ç”¢ç”Ÿä¸€å€‹ä¸æ–·ï¼Œå¦‚æžœæ¤æ™‚還有å¦ä¸€å€‹å‡½æ•¸ä¹Ÿåœ¨å…±äº«è©²è®Šé‡ï¼Œä¸”å‰é¢çš„æ“ä½œå·²ç¶“å®Œæˆï¼Œè©²è®Šé‡çš„æ•¸å€¼å¯èƒ½èˆ‡é 期的ä¸åŒã€‚å› æ¤ï¼Œç•¶ä¸€å€‹å‡½æ•¸èˆ‡å¦ä¸€å€‹å‡½æ•¸å…±äº«æŸè®Šé‡æ™‚,所調用的ISR或者å¦ä¸€å€‹å‡½æ•¸éƒ½æœ‰å¯èƒ½æ”¹è®Šæ¤è®Šé‡ï¼Œæ˜¯è®Šé‡çš„æ•¸å€¼ç™¼ç”Ÿè®ŠåŒ–,在返回時æ¤è®Šé‡çš„æ–°æ•¸å€¼å°‡å¾žå †æ£§è½‰è¼‰åˆ°å››å€‹å¯„å˜å™¨ä¸ï¼Œæœªå®Œæˆçš„æ“ä½œå°‡æŒ‰ç…§å¯„å˜å™¨ä¸çš„æ–°æ•¸å€¼åŸ·è¡Œï¼Œç¨‹åºå°±æœƒç™¼ç”ŸéŒ¯èª¤ã€‚
  在本文ä¸ï¼Œåˆ©ç”¨äº†ä»¥ä¸‹æŽªæ–½æ¶ˆé™¤äº†ç¨‹åºä¸ç”±å…±äº«æ•¸æ“šå•題所導致的錯誤。
  1) å°äºŽå¾žä¸æ–·è¿”回的變é‡ï¼Œåœ¨è²æ˜Žä¸ä½¿ç”¨äº†volatile。æ¤è²æ˜Žå¯ä»¥è¦å‘Šç·¨è¯å™¨ï¼Œé€™äº›è®Šé‡æ˜¯å¯æ›´æ”¹çš„。
  2ï¼‰åœ¨ä¸æ–·ä¹‹å‰å°‡å®Œå…¨åŸ·è¡Œçš„部分ä¸å°åŽŸåæŒ‡ä»¤ä½¿ç”¨å¯å†ç”Ÿå‡½æ•¸ï¼Œæ¤éƒ¨åˆ†å«è‡¨ç•Œæ®µã€‚
  3) å°‡å…±äº«çš„è®Šé‡æ”¾å…¥å¾ªç’°éšŠåˆ—ä¸ã€‚需è¦ä½¿ç”¨è©²è®Šé‡æ•¸å€¼çš„函數總是從隊列的å‰ç«¯å°‡å…¶åˆªé™¤ã€‚而å¦ä¸€äº›å¯«å…¥è©²è®Šé‡çš„æ•¸å€¼çš„函數總是從隊列的末端進行æ“作。
  4)在臨界段開始執行之å‰é€šéŽä½¿ç”¨ä¿¡è™Ÿé‡ä¾†é—œé–‰ä¸æ–·ï¼Œåœ¨å…¶å®Œæˆä¹‹æ™‚æ‰“é–‹ä¸æ–·ã€‚
4 çµè«–
  本文è¨è¨ˆäº†ä¸€ç¨®åŸºäºŽTCPå”è°çš„網絡通信平臺,通éŽè©²å¹³è‡ºå¯ä»¥å¯¦ç¾é 程客戶機與本地æœå‹™å™¨ä¹‹é–“的信æ¯é€šä¿¡ï¼Œè€Œä¸”ä¿è‰äº†æ•¸æ“šå‚³è¼¸çš„å¯é æ€§å’Œæ¬¡åºæ€§ï¼Œå°æ©Ÿå™¨äººçš„陿“作æä¾›äº†å¯é 的網絡通信æ¢ä»¶ã€‚
ã€€ã€€ç¶²çµ¡é€šä¿¡å¹³è‡ºçš„å»ºç«‹ï¼Œæ“´å¤§äº†å°æ©Ÿå™¨äººæ“作的é 程化è·é›¢ï¼Œè€Œä¸”è©²å¹³è‡ºå…·æœ‰æž¶æ§‹å®¹æ˜“ï¼Œä½Žæˆæœ¬ï¼Œç¶è·ä¾¿åˆ©ç‰å„ªé»žï¼Œå°æ©Ÿå™¨äººé™æ“ä½œé ˜åŸŸçš„æŠ€è¡“é€²æ¥å°‡æœƒèµ·åˆ°å¹«åŠ©ä½œç”¨ã€‚
åƒè€ƒæ–‡ç»
  [1] Brady K,Tzyh—Jong. Intemet—based remote teleoperation[A].In International Conference on Robotics and Automation[C].Leuven Belgium,1998,65.
  [2] 陳寧,王慶鵬,談大é¾.基于 Internetçš„æ©Ÿå™¨äººé™æ“作實驗平臺的è¨è¨ˆèˆ‡å¯¦ç¾[J].機器人.2000,22(7):211-214.
  [3] éƒå»ºå…‰ï¼Œç¬¦ç§€è¼.ç¶²çµ¡æ©Ÿå™¨äººé™æ“ä½œå¯¦é©—ç ”ç©¶[J].儀器儀表å¸å ±.2005,25(8):477-478.
  [4] æ‰¶å¿ è¸.基于 MFC的網絡通信程åºè¨è¨ˆ[J].æ¹–å—:長沙電力å¸é™¢å¸å ±.1999,14(4):325-327.