GPRS无线数传模块编程方法(VB)


接。
仅适用于 TCP 服务器应用程序。在处理 ConnectionRequest 事件时用这个方法接受新连接。
在 ConnectionRequest 事件中使用 Accept 方法。ConnectionRequest 事件有一个对应的参数,即 RequestID 参数(新连接请求标识),该参数应该传给 Accept 方法。
b、Bind 方法
指定用于 TCP 连接的 LocalPort(端口号) 和 LocalIP。(IP 地址)
在调用 Listen 方法之前必须调用 Bind 方法。
c、Close 方法
关闭连接。
d、GetData 方法
获取当前的数据块并将其存储在变体类型的变量中。
通常总是将 GetData 方法与 DataArrival 事件并用。
e、Listen 方法
侦听模式。该方法仅适用于 TCP 连接。
当有新连接时就会出现 ConnectionRequest 事件。处理ConnectionRequest 事件时,应用程序应该(在一个新的控件示例上)用 Accept 方法接受连接。
f、SendData 方法
将数据发送给远程计算机。

大体了解了Winsock控件的使用之后,对理解GPRS通讯的原理来说,有一定的帮助。

接下来我们将根据Winsock控件的使用来大体理解GPRS通讯的原理。
1、启动服务
原理为建立一个Tcp的连接,首先设定数据业务中心的IP地址及监听端口号,将其赋给Winsock控件,并用该控件进行连接,连接成功后,进行监听。
代码如下:
myLocalIP = tcpServer(0).LocalIP‘本地机器的 IP 地址(局域网方式)
myLocalIP = "10.14.87.102"‘无线Modem的IP地址(拨号上网方式)
PlngTCPLocalPort = 2020 ‘Tcp服务器的监听端口号
Winsock.Bind (Port ,IP)
Winsock.Listen
需要注意的是如果计算机上既有本地连接又有无线Modem,在运行程序(启动服务)时有可能失败,所以,在编写代码的时候一定要注意自己使用的是哪种方式。因为LocalIP属性获取的是本地连接的IP,用无线Modem的时候IP最好是直接赋值。
再者就是两者同时使用的时候,如果用的是无线Modem的拨号连接,则本地连接只能是同一个网段内使用。
2、GPRS模块连接请求处理
代码如下:
Public Sub Winsock_ConnectionRequest(ByVal RequestID As Long)
Winsock.Accept Requested‘接收新连接
End Sub
原理为如果现在有连接请求,先把请求连接的GPRS模块的IP地址记录下来(用的是Winsock控件的RemoteHostIP属性),再判断保存所有GPRS模块信息的数组中是否出现过,如果没有出现过,保存该信息;如果出现过,先卸载该控件,然后重新加载该控件,保存信息。
3、GPRS模块数据通讯处理
代码如下:
Public Sub Winsock_DataArrival(ByVal bytesTotal As Long)
GprsLong = Winsock.BytesReceived‘返回接收到的(当前在接收端缓冲区内的)数据的数量
Winsock.GetData TempArr, vbByte‘用 GetData 方法来获取数据,取得的数据存放在TempArr中。
End Sub
原理为如果下面的GPRS模块向数据业务中心发送数据,数据业务中心用GetData方法将数据从接收缓冲区中读出来,然后根据条件进行判断所收到的数据是否正确。
在用GetData方法进行数据接收时需要注意是用哪种方式进行通讯的,收到的数是Hex还是Ascii,这里接收的方式不一样。如果是Ascii方式,接收的数据要赋给一个字符串变量,方式为:Winsock.GetData TempStr, vbString;如果是Hex方式,接收的数据要赋给一个以Byte 数据类型的数组,方式为:Winsock.GetData TempArr, vbByte 。
在接收数据之后,必须先要进行数据编译,如果碰到‘80H和90H’在一块的将其转换成为‘1AH’,碰到‘8AH和9AH’在一块的将其转换成为‘8AH’。
将接收到的数据进行编译之后,就可根据条件进行数据处理了。
4、数据中心发送数据
代码如下:
以十六进制发送数据时为:
Dim Cmd(1 to 7) As Byte
Cmd(1)=&H4C
Cmd(2)=&H57
Cmd(3)=&H01
Cmd(4)=&H00
Cmd(5)=&H20
Cmd(6)=&H21
Cmd(7)=&H0D
Winsock.SendData Cmd
以Ascii方式发送数据为:
dim Cmd as string
Cmd=”#01A”+chr(13)
Winsock.SendData Cmd
原理为发送数据时,要知道该GPRS模块的ID号和发送的数据。程序在发送时,先判断该ID号是否收到过,如果没有收到过,程序就不向外发送数据;如果收到过,在发送的时候还要判断GPRS模块当前的状态(是否在线),只有所有条件都符合,才进行发送数据命令。否则程序会出现错误,提示网络连接失败,不能发送数据。
5、停止服务
代码如下:
Winsock.Close
原理为如果用户要关闭服务的话,先关闭所有控件的连接,并把所有加载的控件卸载掉,清空存放GPRS模块的信息,将数据返回长度置为0。

五、在TCP/UDP两种方式下的数据通讯方法
1、TCP:
数据传输协议允许创建和维护与远程计算机的连接。连接两台计算机就可彼此进行数据传输。
TCP方式下客户端的连接为:
Winsock.RemoteHost = IP ‘’指定服务器端的IP和端口号
Winsock.RemotePort = Port
Winsock.Connect ‘’’连接
如果连接成功后会响应Winsock 的 Connect事件。
TCP方式下服务器端的监听为:
Dim LocalPort as Long
Dim LocalIP as String
LocalPort =Winsock.LocalPort
LocalIP=Winsock.LocalIP
Winsock.Bind LocalPort, LocalIP ‘’指定连接
Winsock.Listen ‘’’侦听
如果此时下面的终端有连接请求时,会响应Winsock 的ConnectionRequest 事件。
2、UDP:
用户数据文报协议 (UDP) 是一个无连接协议。跟 TCP 的操作不同,计算机并不建立连接。
UDP方式下客户端通讯为:
Winsock.RemoteHost = IP ‘’指定服务器端的IP和端口号
Winsock.RemotePort = Port
Winsock. LocalPort = LocalPort ‘’本地端口
如果有两个终端(A / B)之间通讯,则为:
A: B:
Winsock.RemoteHost = B_IP Winsock.RemoteHost = A_IP
Winsock.RemotePort = B_Port Winsock.RemotePort = A_Port
Winsock. LocalPort = A_Port Winsock. LocalPort = B_Port
UDP方式下服务器端监听为:
Winsock. LocalPort = Port

COPYRIGHT(C) 2011 厦门永宏亚得机电科技有限公司版权所有(闽ICP备05025945号) ALL RIGHTS RESERVED?

电话: 0592-5190891 传真: 0592-5190720 E-Mail: E-mail:yade8895@163.com
地址: 厦门市海沧区兴港六里17号2607室 邮编:361009 联系人:翟先生