CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  网络编程

求MSCOMM控件的用法,是不是需要在硬件上做什么安装?为什么代码都不能用?

楼主RyuOut(888)2003-08-02 20:16:14 在 VB / 网络编程 提问

我找了很多代码,全都没一个能用的,是不是要在两台计算机上试验才行呢?请高手发个绝对能用的源码,并说明怎么用(一定要说明要怎么用)  
      我现在只想做到这样  
    第一种想实现的:在我上网时,如果有人打电话进来,用程序显示他的来电号码,  
    第二种想实现的:我想通过MSCOMM控件向朋友发送一些信息,像QQ那样进行聊天,能否做到?  
   
    最重要的是!!!!   我希望大家能够帮我实现最重要的一步,就是握手,因为握手了之后就好办了,网上有好多代码,我现在就是不知道怎么握手 问题点数:100、回复次数:4Top

1 楼windcandle()回复于 2003-08-03 02:43:32 得分 0

1.不行。  
  2.还是不行。Top

2 楼GetWindowPos(阿汪)回复于 2003-08-05 10:39:34 得分 50

首要任务是建立两者之间的通讯。因此可分别将监控中心计算机和电源控制器通过RS-232C接口与Modem相连,再通过Modem接入公用电话网(PSTN),由PSTN实现本地Modem与电源端Modem的联接,就可以实现监控中心计算机与电源控制器间的通讯。Top

3 楼GetWindowPos(阿汪)回复于 2003-08-05 10:40:32 得分 50

通过检查InBufferCount   属性值来判定输入缓冲区中是否接收到相应数目的字符或字节。若已接收到相应数目的字符或字节,就可以用Input属性来接收这些字符或字节;否则继续查询InBufferCount属性值,直到满足条件。  
    下面是用查询方式实现的通讯程序。在下面给出的例子中,我们接收的数据都是48字节的定长二进制数据。为实现该程序,需在窗体上加入一个通讯控件MSComm1,四个命令按钮cmdDial,cmdHangUp,cmdOrder,cmdExit。  
    窗体文件清单(只给出主要的程序代码)  
  Dim   ret   '定义窗体级变量  
  Dim   databuffer()   As   Byte   'databuffer是存放接收数据的数组  
  Private   Sub   Form—Load()  
  '设置当前通信串口为COM2口  
  MSComm1.CommPort   =   2  
  '设置串口传输速率为2400bps,数据位8位,无校验,一位停止位  
  MSComm1.Settings   =   "2400,n,8,1"  
  MSComm1.InputMode   =   1   '以二进制形式从输入缓冲区中读数据  
  MSComm1.RThreshold   =   0   '接收到数据不引发OnComm事件  
  MSComm1.InputLen   =   0   '一次读出输入缓冲区中的所有数据  
  MSComm1.PortOpen   =   True   '打开串口  
  End   Sub  
  Private   Sub   cmdDial—Click()   '拨号联机  
  Static   Num   As   String  
  Num   =   InputBox$("Enter   Phone   Number:",   "Dial   Number",   Num)   '输入电话号码  
  If   Num   =   ""   Then   Exit   Sub  
  If   Not   MSComm1.PortOpen   Then  
  MSComm1.PortOpen   =   True  
  If   Err   Then   Exit   Sub  
  End   If  
  MSComm1.Output   =   "ATDT"   &   Num   &   vbCrLf  
  'ATDT通知调制解调器以音频方式拨号  
  cmdHangUp.Enabled   =   True  
  cmdDial.Enabled   =   False  
  MSComm1.InBufferCount   =   0  
  '查询InBufferCount   属性值来确定输入缓冲区中是否接收到调制解调器回送的字符串“10      ”,以证实拨号成功,正确建立联接  
  Do  
  DoEvents  
  Loop   Until   MSComm1.InBufferCount   >=3  
  End   Sub  
  Sub   ReceiveData()   '接收数据子程序  
  Dim   temp  
  MSComm1.InBufferCount   =   0   '清空输入缓冲区  
  '查询InBufferCount   属性值来确定输入缓冲区中是否有接收到48字节的数据  
  Do  
  DoEvents  
  Loop   Until   MSComm1.BufferCount   >=   48  
  temp   =   MSComm1.Input  
  databuffer   =   temp   '将接收到的数据的类型转换为字节数组类型  
  End   Sub  
  Private   Sub   cmdHangUp—Click()   '数据通讯结束后,执行挂机操作  
  Dim   ret  
  ret   =   MSComm1.DTREnable  
  '当DTR信号发生从高电平到低电平的转换时,调制解调器从传输状态进入命令状态  
  MSComm1.DTREnable   =   True  
  MSComm1.DTREnable   =   False  
  MSComm1.DTREnable   =   ret  
  MSComm1.Output   =   "ATH0"    'ATH0是挂机命令  
  cmdHangUp.Enabled   =   False  
  cmdDial.Enabled   =   True  
  If   Err   Then   MsgBox   Error$,   48  
  End   Sub  
  Private   Sub   cmdExit—Click()   '单击退出按钮触发的事件过程  
  Mscomm1.Portopen=False   '关闭串口  
  End  
  End   Sub  
  Private   Sub   cmdOrder—Click()   '单击查询按钮触发的事件过程  
  Dim   temp  
  Dim   order()   As   Byte  
  order   =   StrConv(Chr(0)   +   "aa"   +   Chr(13),   vbFromUnicode)   '查询命令串  
  'strconv()函数的功能是将Unicode字符串转换为ASCII码字符串  
  temp   =   order  
  MSComm1.Output   =   temp  
  '通过与串口联接的调制解调器向远端电源控制器发送查询命令  
  ReceiveData   '查询接收48字节的数据  
  End   SubTop

4 楼ftp0697(Bismarck(a)人不风流枉少年)回复于 2003-08-05 18:11:08 得分 0

要先打开串口,然后监听串口Top

相关问题

  • mscomm控件的用法,请教
  • ########## 那位大哥给我讲讲WebBrowser控件的用法,给段代码最好
  • flexgrid控件用法?
  • tab控件用法!
  • 【DATAGRID控件的用法???】
  • 控件的一般用法
  • DATAGRID控件的用法???
  • 找一控件及用法
  • Toolbar控件的用法
  • 求activeskin控件的用法

关键词

  • 代码
  • 数据
  • 控件
  • 属性
  • 查询
  • 字符
  • 通讯
  • 计算机
  • mscomm
  • inbuffercount

得分解答快速导航

  • 帖主:RyuOut
  • GetWindowPos
  • GetWindowPos

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo