中国工控网 - 中国工控网,专业工控信息服务平台 !

商业资讯: 企业新闻 | 人物专访 | 企业关注 | 专家观点 | 技术文摘 | 解决方案 | 展会新闻 | 工控知识 | 工控百科 | 产品推荐

你现在的位置: 首页 > 商业资讯 > 使用维修 > GPRS无线数传模块编程方法(VB)

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

信息来源:gkong.biz  时间:2010-04-21  浏览次数:98

  一、在不同组网方式下的具体设置:
  要使PC机成为数据中心一般用到的有三种方式:(中心采用Intelnet公网连接、中心采用专线接入、拨号上网方式)
  不管哪种方式PC机都需要一个固定IP。公网或专线方式的IP为网卡的IP;拨号上网方式的IP为无线Modem的GPRS卡绑定的IP。
  1、 公网方式:
  因为PC机有了固定的IP,所以在使用的时候,不需要做什么特别的设置就行了,只要将模块的APN名称设为CMNET就行。
  2、 专线方式:PC机由网卡可以登录到数据服务器所在的网络内。
  具体实现方法:设置PC机的本地连接,(主要是IP地址和网关,网关为数据服务器的网关)设置完成后,可以用Ping命令测试网络是否通。
  步骤:点击“开始”—“运行”,在‘打开’中输入Ping数据服务器的 IP,(如莱芜力创的数据服务器IP为192.168.0.164,输入Ping 192.168.0.164)回车。模块的APN名称设为 LICHUANG. LW. SD
  3、 拨号上网方式:PC机由无线Modem可以登录到数据服务器所在的网络内。
  a、 无线Modem(调制解调器)有几种?
  一般情况下,我们使用的有两种,一种为USB连接的,一种为串口连接的。
  b、 怎样设置可以使无线Modem登录到数据服务器所在的网络?
  先将调制解调器正确连接到计算机上。
  对调制解调器进行安装:控制面板—添加新硬件—从列表中选择“调制解调器”—选择此调制解调器所使用的端口—在区号中输入‘086’,选择音频,拨打外线区号可以不输入。
  调制解调器安装完成后,还要诊断一下是否安装正确,安装的调制解调器是否可用。步骤为:控制面板—调制解调器—属性—诊断。
  对调制解调器进行配置:控制面板—调制解调器—属性—高级,在额外的初始化命令中,
  如果是使用东营的GPRS卡,则在附加设置中输入(“AT+CGDCONT=1,”IP”,”DYSHL.SD””)
  如果使用的是力创的GPRS卡,则在附加设置中输入(“AT+CGDCONT=1,”IP”,”LICHUANG.LW.SD””)
  c、 怎样建立拨号连接?
  正确连接调制解调器后,还要建立拨号连接才可以。详细步骤为:
  右击‘网上邻居’—属性—建立新连接—选择拨号到专用网络—在输入电话号码时输入‘*99***1#’,其于情况默认点击‘下一步’即可。
  d、 拨号上网方式的IP怎样获得?
  判断数据中心(无线Modem)的IP,方法有多种:
  先拨号连接,待拨号连接成功后,
  在任务栏中右击”拨号连接”的图标,选择’状态’,在弹出的画面中选择’信息’,看一下’客户端IP’就行了。
  选择开始—运行(输入cmd回车)—输入ipconfig回车,便可以看到拨号连接的IP了。
  e、 怎样让无线Modem掉线后自动重拨?
  无线Modem在使用的过程中会出现掉线的情况,因为用户不可能总是关注此时的无线Modem是否掉线了,为了使无线Modem不耽误数据传输,可以将其设置成掉线后自动重拨的功能。
  具体操作为:
  先查找到‘拨号连接’(在拨号网络中)—属性—选项
  在‘拨号选项’中去掉所有的选项,选中‘重拨选项’中的断线重拨即可。
  在设置时也可以将重拨次数设置的更大一些,比如说10次,不设置也可,用户可根据实际情况来定。
  在‘重拨选项’中有一项为‘挂断前的空闲时间’,我们一般设置为“从不”。如果设置为某个时间,则连接时间到了该值时便出现掉线的状况。
  图示为图1:
  图1
  二、一般控件的编写:
  控件实际上就是类的封装,一个类中可以定义自己的结构、属性、方法、事件。
  1、 结构: Private Type 结构名
  MyName as String 结构中的参数
  MyAge as Integer
  End Type
  2、 属性:
  Dim m_GPRSLong As Long
  Public Property Let GPRSLong (ByVal NewGPRSLong As Long) 将表达式的值赋给变量或属性
  m_GPRSLong = NewGPRSLong
  PropertyChanged "GPRSLong" PropertyChanged方法是通知属性的值已经发生变化
  End Property
  Public Property Get GPRSLong() As Long 读属性值
  GPRSLong = m_GPRSLong
  End Property
  3、 方法(函数):
  Public Function StartServer(Ip As String, Port As Long) As Boolean
  这种方法用户可以使用
  End Function
  Private Sub tcpServer_Close(Index As Integer) As Boolean
  这种方法用户不可以使用,控件本身自己使用
  End Sub
  4、 事件:
  Public Event GetUserID(ByVal User_Id As String, ByVal UserDeal_Id As String)
  激活事件时用RaiseEvent 语句
  RaiseEvent GetUserID(m_Id, Deal_Id)
  5、 用户用到的一些常用事件:
  UserControl_Resize 当控件第一次显示或状态改变时发生,调节控件大小的。
  比如可以在这里面设置一下控件的高度和宽度
  UserControl.Height = 525
  UserControl.Width = 525
  这样在用户使用的时候向窗体中添加该控件时,大小就不可以改变了。
  三、GPRS控件的主要属性、方法、事件:
  有了前面介绍的一般控件的知识,下面主要针对GPRS的工作原理,介绍一下其控件的编程:
  1、 属性:
  GPRS控件的主要属性就是IP地址、端口号、接收到的数据长度。
  LocalIP 属性 / Localport 属性 / GPRSLong属性
  2、 方法:
  A、StartServer(Ip As String, Port As Long) 启动服务方法
  本方法用于启动GPRS服务,在系统初始化时必须调用本方法来完成GPRS服务的初始化,否则GPRS模块将无法正确登陆网络,进行通讯。
  IP参数为服务器Ip地址, 字符串型
  Port参数为服务器通讯端口, 长整型,通常为2020端口.
  成功返回Ture,失败则返回False。
  示例: StartServer(“192.168.0.1”,2020)
  B、StopServer() 停止服务方法
  停止服务方法,用来停止GPRS服务,在系统结束退出时,调用本方法停止GPRS服务。
  成功返回Ture,失败则返回False.
  示例: StopServer()
  C、SendDataGPRS(DtuId As String, CmdData As Variant) 发送数据方法
  本方法用来与GPRS模块进行通讯,核心方法,参数比较复杂.
  DtuID,Gprs模块标识号,用来表明与那块模块进行通讯.
  CmdData,要传送的数据,变体变量,可接受字符串或者数组类型.
  示例: SendDataGPRS(“6900000196”,Cmd)
  3、 事件:
  A、 GetUserID(ByVal User_Id As String, ByVal UserDeal_Id As String)
  ’’收到GPRS模块的ID号或者是上线的ID的时触发的事件
  User_Id 为所有在线GPRS模块ID号所组成的字符串。
  UserDeal_Id为所有离线GPRS模块ID号所组成的字符串。
  如果下面的GPRS模块上传ID号时,系统会以事件的方式进行接收,用户可以在事件中对ID号做处理,想以什么格式显示ID的信息有用户自己做决定。
  B、ReceiveData(ByVal User_Id As String, ByVal User_GetDataASC As Variant, ByVal User_GetDataHEX As Variant) ’’ 收到数据时触发的事件
  如果下面的设备有数据上传时,就会触发该事件,该事件包括3个参数:
  User_Id 为 设备的ID号;
  User_GetDataASC 为 以ASCII方式显示的数据;
  User_GetDataHEX 为 以HEX方式显示的数据。
  下面的设备在上传数据的时候,会将ID号一块传上来,这样用户能够分辨出是哪个设备传上来的,而且上传数据时,会将ASCII方式的数据和HEX方式的数据一块传上来,用户想用什么数据自己决定。
  四、 具体的内部编程思路:
  GPRS控件的编写,我们用到的是Winsock控件,所以首先要先了解一下Winsock控件的使用.
  1、Winsock控件的使用:
  Winsock控件对用户来说是不可见的,我们在编写客户端或服务器程序时,通过设置控件的属性并调用其方法即可实现数据的双向交换。
  如果创建客户应用程序,就必须知道服务器计算机名或者 IP 地址(RemoteHost 属性),还要知道进行“侦听”的端口(RemotePort 属性),然后调用 Connect 方法。
  如果创建服务器应用程序,就应设置一个收听端口(LocalPort 属性)并调用 Listen 方法。当客户计算机需要连接时就会发生 ConnectionRequest 事件。为了完成连接,可调用 ConnectionRequest 事件内的 Accept 方法。
  建立连接后,任何一方计算机都可以收发数据。为了发送数据,可调用 SendData 方法。当接收数据时会发生 DataArrival 事件。调用 DataArrival 事件内的 GetData 方法就可获取数据。
  2、Winsock控件的常用属性:
  a、协议
  在使用Winsock控件时,首先需要考虑使用什么协议。可以使用的协议包括 TCP 和 UDP。两种协议之间的重要区别在于它们的连接状态:
  ? TCP 协议控件是基于连接的协议,可以将它同电话系统相比。在开始数据传输之前,用户必须先建立连接。
  ? UDP 协议是一种无连接协议,两台计算机之间的传输类似于传递邮件:消息从一台计算机发送到另一台计算机,但是两者之间没有明确的连接。另外,单次传输的最大数据量取决于具体的网络。
  在设计时,可以按如下方式设置应用程序使用的协议:在“属性”窗口中单击“协议”,然后选择 sckTCPProtocol 或者 sckUDPProtocol。也可以使用程序代码来设置 Protocol 属性,如下所示:
  Winsock1.Protocol = sckTCPProtocol
  b、IP地址(计算机名称)
  客户应用程序在与远程计算机相连接的时候,需要知道远程计算机的 IP 地址或者计算机名称。
  我们连接计算机时可以将其作为 RemoteHost 属性的值。代码如下:
  Winsock1.RemoteHost = 计算机名称 或者为 Winsock1.RemoteHost =IP地址
  服务器程序用到LocalIP 属性,它返回本地机器的 IP 地址,格式是 IP 地址加点字符串 (xxx.xxx.xxx.xxx)。
  用RemoteHostIP属性返回远程计算机的IP。
  c、端口号
  对于客户应用程序来说,RemotePort 属性最重要,它设置要连接的远程端口号。
  对于服务器程序来说,LocalPort 属性最重要,它设置所用到的本地端口。这是用于侦听的本地端口。如果指定的是端口 0,就使用一个随机端口。在调用了 Listen 方法后,属性就包含了已选定的实际端口。
  3、Winsock控件的常用事