tft每日頭條

 > 科技

 > 編程如何讓小車動起來

編程如何讓小車動起來

科技 更新时间:2024-11-25 09:36:26

編程如何讓小車動起來(如何編程實現電腦與智能小車通信)1

51智能小車編程

最近在做智能小車,需要實現編寫上位機控制智能小車行駛方向與運行速度。因此首先需要解決的問題就是需要考慮如何實現計算機與智能小車進行通信。所使用硬件設備主要包括51單片機開發闆、ESP8266 WIFI無線模塊。

編程如何讓小車動起來(如何編程實現電腦與智能小車通信)2

ESP8266 WIFI模塊

本文主要介紹上位機端開發,通過使用PC端開發軟件實現電腦端創建TCP連接服務器,為下一步ESP8266作為TCP客戶端實現客戶端與服務器端通信。為測試服務器端與客戶端通信,客戶端使用網絡調試助手模拟客戶端測試TCP連接與通信情況。其中網絡調試工具如下:

編程如何讓小車動起來(如何編程實現電腦與智能小車通信)3

網絡調試工具


PC端軟件界面設計

本項目開發設計使用PC端實現對智能小車進行控制,主要設計實現功能包括小車實時信息顯示,視頻數據傳輸與小車行駛與方向控制,除此之外設置軟件TCP連接相關信息。PC端軟件界面設計如下所示:

編程如何讓小車動起來(如何編程實現電腦與智能小車通信)4

智能小車PC端軟件設計

PC端軟件界面設計如上圖所示,通信狀态信息部分主要用于輸出顯示客戶端與服務器端通信情況,服務器設置主要實現TCP服務器端設計,指令操作區主要用于控制小車方向與速度,視頻顯示區主要接收小車攝像頭拍攝信息,小車信息主要用于顯示實時小車信息,信息收發區主要實現PC端與小車進行文字信息發送。這篇文章主要介紹服務器設置及TCP連接功能實現。


Socket連接創建與測試

本例使用C#程序設計語言開發服務器端,通過使用Socket類創建TCP連接服務器端,由網絡調試助手模拟客戶端測試服務器與客戶端連接及信息收發。

編程如何讓小車動起來(如何編程實現電腦與智能小車通信)5

服務器設置及通信狀态顯示

編程如何讓小車動起來(如何編程實現電腦與智能小車通信)6

信息收發功能區域

本文所介紹需要實現的兩個基本功能如上圖所示,部分核心代碼描述如下:

1、創建通信端口

try { socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); ip = "127.0.0.1"; port = 8080; this.listBox1.Items.Insert(listBox1.Items.Count, "創建通信接口成功!!! " DateTime.Now.ToString()); } catch(Exception ex) { MessageBox.Show(ex.ToString()); }

點擊啟動按鈕将執行創建通信端口代碼,在服務器信息顯示端會顯示端口創建成功提示信息,如下圖所示:

編程如何讓小車動起來(如何編程實現電腦與智能小車通信)7

創建通信端口

2、綁定端口并監聽端口

private void button10_Click(object sender, EventArgs e) { socket.Bind(new IPEndPoint(IPAddress.Parse(ip), port)); this.listBox1.Items.Insert(listBox1.Items.Count, "綁定端口成功,正在監聽!!! " DateTime.Now.ToString()); socket.Listen(1); lThread = new Thread(listenClient); lThread.Start(); } private static void listenClient() { while (true) { client = socket.Accept(); usocket = client; Thread recvThread = new Thread(recvData); recvThread.Start(client); Form1.MainForm.sendMsg(0,"客戶端連接成功"); } }

以上代碼實現端口監聽,客戶端通過使用TCP連接服務器端時會創建listenClient線程處理客戶端連接,在listenClient中創建recvData處理數據的發送與接收。

編程如何讓小車動起來(如何編程實現電腦與智能小車通信)8

客戶端與服務器端連接成功

3、收發數據

private static void recvData(object client) { uclient = (Socket)client; while (true) { try { int recvCount = uclient.Receive(recv); if (recvCount == 0) { uclient.Shutdown(SocketShutdown.Both); uclient.Close(); return; } string recvData = Encoding.UTF8.GetString(recv, 0, recvCount); Form1.MainForm.sendMsg(1, recvData); } catch(Exception ex) { Form1.MainForm.sendMsg(0,ex.Message); } } } private void button2_Click(object sender, EventArgs e) { if(usocket!=null) { string str = this.sendBox.Text; string sendStr = str; byte[] bs = Encoding.UTF8.GetBytes(sendStr); try { usocket.Send(bs, bs.Length, 0); } catch (Exception ex) { Form1.MainForm.sendMsg(0, ex.Message); } } else { Form1.MainForm.sendMsg(0, "無法連接客戶端"); } }

實現數據收發代碼描述如上所示,最終顯示效果如下圖:

編程如何讓小車動起來(如何編程實現電腦與智能小車通信)9

服務器端與客戶端收發數據


以上給出使用C#編寫智能小車服務器端設計思路及TCP服務器端編程實現,下一步就需要考慮ESP8266 WIFI模塊與PC端服務器建立TCP連接實現數據與操作指令的收發,單片機獲取傳遞數據之後實現對小車方向及速度控制等。更多内容後期文章将持續發布,歡迎大家關注、評論。

本頭條号長期關注編程資訊分享;編程課程、素材、代碼分享及編程培訓。如果您對以上方面有興趣或代碼錯誤、建議與意見,可在評論區回複。更多程序設計相關教程及實例分享,期待大家關注與閱讀!

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved