关于用VB写通讯程序

bluecc 2002-09-05 08:58:59
现在想写一个无线通讯程序.设备用CDPD,串口设备.其使用方法同MODEM.
现有两种方法做
1、通过拨号上网的方式,连INTETNET,与固定IP地址通讯。但其拨号好象不是很自动,不知道有没有办法控制自动拨号,就象MODEM自动拨号一样。
2、通过点对点传数据,就象MODEM点对传,不过其传送方式为通过对COM口发AT指令实现。感觉好象方便一点,可靠性也比较高。只是不知道这么做麻烦不麻烦。
以上两种方法不知道哪种效果、开发速度、稳定性好一点,有没有做过的大虾介绍一下。
...全文
80 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zf 2003-05-08
  • 打赏
  • 举报
回复
厉害
dsclub 2002-09-06
  • 打赏
  • 举报
回复
gz
yjmking 2002-09-05
  • 打赏
  • 举报
回复
好好学习
bluecc 2002-09-05
  • 打赏
  • 举报
回复
那用文件传的时候也要把文件切成小块传,以前我用WINSOCK也会发生切之前一切正常,传过去后文件就变了的情况,后来我就干脆传ACCESS数据库,这样如果传过去打不开就表示错了.但CDPD带宽很小,传数据库可能会比较慢.
stwx 2002-09-05
  • 打赏
  • 举报
回复
我觉得用文件传比较安全方便,如果使用串口要作奇偶较验,双方又要写协义,太麻烦了.如果文件传送可解决问题,我建议还是使用文件吧.
串口通讯一般用中同机器的通讯上.
bluecc 2002-09-05
  • 打赏
  • 举报
回复
那么传数据呢,WINSOCK和MSCOMM哪个可靠一点.
另外传数据的方式能不能也比较一下,用文件传,还是一个数据一个数据传.
由于是用无线传,所以对其可靠度有点担心,如果要验证传输数据的正确性怎么做.
stwx 2002-09-05
  • 打赏
  • 举报
回复

VERSION 5.00
Object = "{648A5603-2C6E-101B-82B6-000000000014}#1.1#0"; "MSCOMM32.OCX"
Begin VB.Form DIALER
Caption = "MSComm 电话拨号器"
ClientHeight = 1545
ClientLeft = 4005
ClientTop = 3270
ClientWidth = 4275
LinkTopic = "Form2"
PaletteMode = 1 'UseZOrder
ScaleHeight = 1545
ScaleWidth = 4275
WhatsThisHelp = -1 'True
Begin MSCommLib.MSComm MSComm1
Left = 0
Top = 0
_ExtentX = 1005
_ExtentY = 1005
_Version = 393216
DTREnable = -1 'True
End
Begin VB.CommandButton CancelButton
Caption = "取消"
Enabled = 0 'False
BeginProperty Font
Name = "宋体"
Size = 9
Charset = 134
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 348
Left = 1680
TabIndex = 3
Top = 885
Width = 852
End
Begin VB.CommandButton QuitButton
Cancel = -1 'True
Caption = "退出"
BeginProperty Font
Name = "宋体"
Size = 9
Charset = 134
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 348
Left = 2640
TabIndex = 1
Top = 885
Width = 852
End
Begin VB.CommandButton DialButton
Caption = "拨号"
Default = -1 'True
BeginProperty Font
Name = "宋体"
Size = 9
Charset = 134
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 348
Left = 720
TabIndex = 0
Top = 885
Width = 852
End
Begin VB.Label Status
BorderStyle = 1 'Fixed Single
Caption = "要拨一个号码, 请单击“拨号”按钮"
Height = 255
Left = 720
TabIndex = 2
Top = 360
Width = 3015
End
End
Attribute VB_Name = "DIALER"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
'--------------------------------------------------------
' DIALER.FRM
' Copyright (c) 1994 Crescent Software, Inc.
' by Carl Franklin
'
' Updated by Anton de Jong
'
' 演示如何用调制解调器拨电话号码。
'
' 为使此程序工作正常, 您的电话和
' 调制解调器必须用同一根电话线相连接。
'--------------------------------------------------------
Option Explicit

DefInt A-Z

' 当用户选择取消时设置此标志。
Dim CancelFlag

Private Sub CancelButton_Click()
' CancelFlag 用来告知退出拨号过程。
CancelFlag = True
CancelButton.Enabled = False
End Sub

Private Sub Dial(Number$)
Dim DialString$, FromModem$, dummy

' AT 是贺氏兼容 ATTENTION 命令并且要求发送命令到调制解调器。
' DT 意味着"音频拨号。" 这个拨号命令用于音频, 相对的是脉冲 (DP = 脉冲拨号)。
' Numbers$ 为要拨的电话号码。
' 分号告知调制解调器拨号后返回命令模式(这一点很重要)。
' 一个回车, vbCr, 当发送命令到调制解调器时被要求。
DialString$ = "ATDT" + Number$ + ";" + vbCr

' 通信端口设置
' 假设鼠标器连接到 COM1, 那么通信端口设置为 COM2
MSComm1.CommPort = 2
MSComm1.Settings = "9600,N,8,1"

' 打开通信端口
On Error Resume Next
MSComm1.PortOpen = True
If Err Then
MsgBox " COM2: 不可用。 更改 CommPort 属性使其使用 COM1。"
Exit Sub
End If

' 清空输入缓冲区。
MSComm1.InBufferCount = 0

' 拨电话号码。
MSComm1.Output = DialString$

' 等待从调制解调器返回"OK" 。
Do
dummy = DoEvents()
' 如果缓冲区中有数据,则把它读出来。
If MSComm1.InBufferCount Then
FromModem$ = FromModem$ + MSComm1.Input
' 检查 "OK"。
If InStr(FromModem$, "OK") Then
' 提醒用户摘电话。
Beep
MsgBox "请您摘电话然后按“回车”键或单击“确定”"
Exit Do
End If
End If

' 用户是否选择“取消”?
If CancelFlag Then
CancelFlag = False
Exit Do
End If
Loop

' 断开与调制解调器的连接。
MSComm1.Output = "ATH" + vbCr

' 关闭端口。
MSComm1.PortOpen = False
End Sub

Private Sub DialButton_Click()
Dim Number$, Temp$

DialButton.Enabled = False
QuitButton.Enabled = False
CancelButton.Enabled = True

' 取得要拨的电话号码。
Number$ = InputBox$("请输入电话号码:", Number$)
If Number$ = "" Then Exit Sub
Temp$ = Status
Status = "正在拨号码 - " + Number$

' 拨选定的电话号码。
Dial Number$

DialButton.Enabled = True
QuitButton.Enabled = True
CancelButton.Enabled = False

Status = Temp$
End Sub

Private Sub Form_Load()
' 当 Input 属性被使用,设置 InputLen 为 0
' 告知 MSComm 读取输入缓冲区中的全部内容。
MSComm1.InputLen = 0

End Sub

Private Sub QuitButton_Click()
End
End Sub
Sean918 2002-09-05
  • 打赏
  • 举报
回复
1. 拨号程序请参照以下帖子:
http://www.csdn.net/expert/topic/858/858235.xml?temp=.7608606
http://www.csdn.net/expert/topic/957/957375.xml?temp=.9410059
http://www.csdn.net/expert/topic/839/839912.xml?temp=.6447565
http://www.csdn.net/expert/topic/760/760891.xml?temp=.6535456
http://www.csdn.net/expert/topic/672/672847.xml?temp=.2195246

2. 就按您说的做,不麻烦。只要初使化端口及发送(以字节为单位)正确,您的

做法是可行的。

7,785

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧