少妇爽到喷白浆AV无码-亚洲av无码专区亚洲av桃-白丝校花的逼好热好紧好想操-午夜精品久久久久久久69蜜桃

關(guān)注官方微信

EN

EN.

串口轉(zhuǎn)TCP/IP模塊的上位機TCP編程方法指南

發(fā)布時間:2010-12-26 作者:上海卓嵐 瀏覽量:7245
1.概述

使用上海卓嵐的ZLSN系列串口轉(zhuǎn)TCP/IP模塊可以方便的實現(xiàn)在下位機端的TCP聯(lián)網(wǎng)。即只要通過串口收發(fā)數(shù)據(jù)即可實現(xiàn)TCP/IP數(shù)據(jù)的收發(fā)。那么對于上位機,即PC機、服務(wù)器等如何通過TCP實現(xiàn)和串口轉(zhuǎn)TCP/IP模塊的通信呢?基本上來說有三種方式:

(1)使用虛擬串口:此時用戶在上位機通過zlvircom虛擬一個com口,這個com口會在驅(qū)動底層和TCP/IP轉(zhuǎn)串口模塊建立網(wǎng)絡(luò)連接。上位機還是通過串口(COM口)和TCP/IP模塊通信。更多詳情參考:虛擬串口介紹。

(2)使用Modbus TCP協(xié)議:采用ZLAN5142、ZLSN2140、ZLSN3140等具備Modbus TCP轉(zhuǎn)Modbus RTU的TCP/IP模塊可以實現(xiàn)將Modbus TCP協(xié)議直接轉(zhuǎn)化為RTU協(xié)議。這樣用戶上位機可以使用通用的Modbus TCP協(xié)議,比如組態(tài)軟件、OPC軟件等。這些軟件都是支持Modbus TCP的,這樣用戶可以借助這些工控軟件進行開發(fā)。更多詳情參考:Modbus TCP轉(zhuǎn)RTU介紹。

(3)TCP網(wǎng)絡(luò)軟件編寫:第三種方法是本文介紹的主要方法,用戶通過VC、VB、Delphi、C++Builder等開發(fā)環(huán)境開發(fā)出TCP軟件和TCP/IP轉(zhuǎn)串口模塊通信。幾乎所有的通用操作系統(tǒng)都支持TCP/IP協(xié)議棧,操作系統(tǒng)提供了一種稱之為socket接口的通用的編程規(guī)范來調(diào)用操作系統(tǒng)的TCP/IP協(xié)議棧。實際中,在windows上此socket接口就是一個API接口,最終用戶函數(shù)的執(zhí)行,直接調(diào)用了操作系統(tǒng)提供的DLL庫的TCP/IP功能。

另外如果用戶需要實現(xiàn)ZLSN模塊特有的一些管理。比如在局域網(wǎng)中搜索模塊、讀取模塊的參數(shù)、修改模塊的參數(shù),卓嵐也提供專用的設(shè)備管理函數(shù)庫DLL。

2. TCP/IP基礎(chǔ)

我們知道TCP/IP轉(zhuǎn)串口模塊ZLSN2002基本上有TCP服務(wù)器、TCP客戶端、UDP這幾種工作模式,對于不同的工作模式,上位機軟件也需要選擇不同的TCP/IP工作模式和他對應(yīng):即模塊為TCP服務(wù)器時上位機應(yīng)該為TCP客戶端、模塊為TCP客戶端時上位機應(yīng)該為TCP服務(wù)器、模塊為UDP時上位機也是UDP模式。請參考:TCP的工作模式的選擇介紹。

3. socket函數(shù)和TCP/UDP

socket是通用的TCP/UDP調(diào)用接口,含有的主要主要函數(shù)如表所示:

我們通過socket函數(shù)的不同調(diào)用。來實現(xiàn)上位機工作在不同的模式:
(1)TCP客戶端模式:上位機調(diào)用connect這個socket函數(shù)實現(xiàn)向TCP/IP轉(zhuǎn)串口模塊發(fā)起連接,實現(xiàn)TCP客戶端的功能。
(2)TCP服務(wù)器模式:上位機調(diào)用listen這個socket函數(shù)實現(xiàn)TCP服務(wù)器功能,即在一個特定端口等待ZLSN2002模塊的連接。
(3)UDP模式:無需監(jiān)聽和發(fā)起連接,直接調(diào)用send和recv函數(shù)發(fā)送和接收即可。

4. socket編程例子

這里提供了免費了socket通信的源代碼程序《計算機端socket編程例子》。在該代碼中使用了非常簡潔的代碼,實現(xiàn)了上位機作為TCP客戶端時的數(shù)據(jù)收發(fā)。讓用戶對socket編程馬上有一個初步的印象。

5. VC的CSocket編程例子

在Microsoft Visula C++中已經(jīng)對底層的socket接口再進行一次封裝,即更加高級的CAsyncSocket、CSocket類。使用這兩個類可以實現(xiàn)更加容易的編程。在此提供免費的代碼《SocketTest的CSocket編程源代碼》。

6. 網(wǎng)絡(luò)編程的注意事項

發(fā)送大量數(shù)據(jù)不丟失的方法:一些用戶通過計算機向ZLSN模塊發(fā)送大批量數(shù)據(jù),此時由于網(wǎng)絡(luò)發(fā)送的數(shù)據(jù)過快,而串口的輸出速度有限,經(jīng)過一段時間肯定會導(dǎo)致發(fā)送不成功。所以一般情況下,用戶需要檢查send()的返回值,只有返回值和期望發(fā)送的數(shù)據(jù)量一樣時,才算發(fā)送完畢。否則一定要繼續(xù)調(diào)用send()發(fā)送未發(fā)送完畢的數(shù)據(jù)。通過這種檢測,可以保證發(fā)送的數(shù)據(jù)不丟失。