博文
VisualBasic4.0通信程序设计(2005-09-23 12:06:00)
摘要:
VisualBasic4.0通信程序设计
南京 孙海健 潘文 钱俞寿
龚建伟评论:本文对在VB4.0中使用ActiveX控件MSComm进行串口编程,给出了一个实例,因我不懂VB,无法评论其实用性,但经常有网友问及VB的串口编程,故我也放在这里,读者自已去看吧。
摘要:Visual Basic4.0 中通信控件及其在Windows平台下的通信软件设计方法,并结合具体实例给出了基本的通信程序。
关键词:Visual Basic MSCOMM.VBX通信控件 程序设计
1992年Crescent Software Inc.公司专为VB设计了MSCOMM.VBX用户通信控件,它提供了通过串口发送和接收数据的串行通信能力,不但包括了全部Windows API中关于串行通信的16个函数所完成的功能,而且开拓了更多的使用户设计方便的对象属性来满足不同用户不同业务的需求。目前国内众多的VB资料中很少涉及该通信控件的介绍,本文将详细介绍MSCOMM.VBX通信控件及编程方法,并结合工作中的一个实例给出基本通信程序。
1 MSCOMM.VBX通信控件描述
MSCOMM.VBX通信控件可直接从VB的ToolBox中加入窗体Form,即可用其进行通信。若ToolBox中无此控件,则用Tools的Custom Controls 将MSCOMM.VBX从Windows的System子目录中加入VB的ToolBox中。
1.1 通信方式
MSCOMM.VBX有2种不同的方式来处理和解决各类通信软件的开发和设计问题
1、事件驱动。它与C/C++写Windows 软件时的窗口回调函数类似,是1种功能强大的处理问题的方法。在实际工作中,往往要处理许多通信中的相关事件,例如:当线路数据到达本端或CD线和RTS信号线状态发生变化时,要求我们使用相应的事件来跟踪和处理,该控件是使用OnComm事件来实现的,它也包括检测和处理通信错误等方面的问题,CommEvent 值返回最近的通信事件或错误的数字代码。通信控件详细的错误和事件举例有:
MSCOMM-ER-BREAK 收到1个Break Signal
MSComm控件使用详解(2005-09-23 12:03:00)
摘要:
MSComm控件使用详解
龚建伟:这篇东西来不及好好整理,因有朋友经常提及,先放在这里,如果有必要,再详细理顺一下,更为详细的信息请去看MSDN。
摘要:本文详细介绍了MSComm控件在串口编程中使用。
目 次
MSComm控件两种处理通讯的方式
CommPort属性
RThreshold 属性
CTSHolding 属性
SThreshold 属性
CDHolding 属性
DSRHolding 属性
Settings 属性
InputLen 属性
EOFEnable 属性
Handshake 常数
OnComm 常数
InputMode 常数
错误消息
MSComm 控件通过串行端口传输和接收数据,为应用程序提供串行通讯功能。MSComm控件在串口编程时非常方便,程序员不必去花时间去了解较为复杂的API函数,而且在VC、VB、Delphi等语言中均可使用。 Microsoft Communications Control(以下简称MSComm)是Microsoft公司提供的简化Windows下串行通信编程的ActiveX控件,它为应用程序提供了通过串行接口收发数据的简便方法。具体的来说,它提供了两种处理通信问题的方法:一是事件驱动(Event-driven)方法,一是查询法。
1.MSComm控件两种处理通讯的方式
MSComm控件提供下列两种处理通讯的方式:事件驱动方式和查询方式。
1.1 事件驱动方式
事件驱动通讯是处理串行端口交互作用的一种非常有效的方法。在许多情况下,在事件发生时需要得到通知,例如,在串口接收缓冲区中有字符,或者 Carrier Detect (CD) 或 Request To Send (RTS) 线上一个字符到达或一个变化发生时。在这些情况下,可以利用 MSComm 控件的 OnComm 事件捕获并处理这些通讯事件。OnComm 事件还可以检查和处理通讯错误。所有通......
VB串口编程的几个问题(2005-09-23 12:01:00)
摘要:
VB串口编程的几个问题
易兵
目次:
串口数据接收方式
如何处理不定长数据的接收
用字符方式收发码值大于127的字符数据
串口通讯问答2
串口数据接收方式
1、 在OnComm 事件中接收数据:
这种方式能充分MSCOMM控件的特性。OnComm 事件还可以检查和处理通讯错误;可以通过检查 CommEvent 属性的值来查询事件和错误;对于不定长数据以及对数据进行处理比较复杂的情况,此法不是很方便。
Private Sub MSComm_OnComm ()
Select Case MSComm1.CommEvent
' 错误
Case comEventBreak ' 收到 Break。
Case comEventCDTO ' CD (RLSD) 超时。
Case comEventCTSTO ' CTS Timeout。
Case comEventDSRTO ' DSR Timeout。
Case comEventFrame ' Framing Error
Case comEventOverrun '数据丢失。
Case comEventRxOver'接收缓冲区溢出。
Case comEventRxParity' Parity 错误。
Case comEventTxFull '传输缓冲区已满。
Case comEventDCB '获取 DCB] 时意外错误
' 事件
Case comEvCD ' CD 线状态变化。
Case comEvCTS ' CTS 线状态变化。
Case comEvDSR ' DSR 线状态变化。
Case comEvRing ' Ring Indicator 变化。
Case comEvReceive ' 收到 RThreshold # of chars.
Case comEvSend ' 传输缓冲区有 Sthreshold 个字符 '
Case comEvEof ' 输入数据流中发现 EOF 字符
End Select
End Sub
用VB进行串口实时数据采集(2005-09-23 12:00:00)
摘要:
用VB进行串口实时数据采集
长沙交通学院信息与计算科学系 (410077) 李湘江
---- 本文介绍VB6.0利用MSComm通信控件,开发微机通过串口对工业仪表进行实时数据采集的编程技术。给出的程序代码具有通用性,并有详细的注释,可以直接或稍加改动后用于其他数据采集或实时控制程序中。
----一台工业专用实时检测仪表,接高精度位移传感器,用于测量微小形变或微量位移,仪表测量精度为0.01毫米,测量范围最大值为50毫米。该仪表带有一个9针的RS-232C 串口,能与微机进行串口数据通信,实时传送检测数据,通过微机软件处理可实现工业实时监控。
----该仪表的串口数据通信协议是:数据传输速率为 9600bps,1位开始位,8位数据位,1位停止位,无奇偶校验位。仪表每秒发送50帧检测数据,每帧数据由4个字节组成。第一个字节定义为二进制常数0F0H,是每帧数据开始的标志字节;后面连续2个字节为数据字节,采用压缩的BCD码编码方式,高位在前,低位在后,即一个字节表示两位十进制数,则两个字节表示四位十进制数,小数点采用固定形式,定义在两字节中间;第四个字节为符号字节,该字节第八位为1,即:
----则为负数;第八位为0,即:
----则为正数。
----例如:0F0H 26H 87H 80H 0F0H 34H 62H 00H 表示 -26.87 34.62。
----通信传输速率为9600bps,则最快速度1.04ms发送一个字节,仪表每秒发送50帧数据,每帧数据有4个字节,即每秒发送200个字节,平均5.0ms 发送一个字节,连续读取串口数据时要在程序中添加循环等待程序。
----为了实现实时监测功能,接收数据的读取要尽可能的快速,则设置MSComm1的属性如下:
RThreshold = 1
接收缓冲区收到一个字节产生OnComm事件
InputLen = 1 每次读取一个字节
----仪表每秒发送50帧数据,微机收到一帧完整数据至少需要20 ms时间,然后再进行数据处理。如果微机在下一帧数据接收前即20ms内能将数据计算处理完毕,则接收缓冲区内只会保存有一帧数据,不会存有两帧以上数据,接收缓冲区的大小不会影响实时监测效果(接收缓冲区>4字节......
Pocket PC: Migrating a GPS (2005-09-22 21:40:00)
摘要:
Pocket PC: Migrating a GPS App from the Desktop to eMbedded Visual Basic 3.0
Joshua Trupin
This article assumes you're familiar with Visual Basic
Level of Difficulty 1 2 3
Download the code for this article: GPS.exe (42KB)
SUMMARY A Global Positioning System (GPS) device captures lots of interesting information that can be used in many ways. This article presents a custom application built with Visual Basic that collects data from a GPS satellite and charts the course of a user relative to the satellite.
Such an application is obviously well suited for use on a handheld PC and porting the original application to eMbedded Visual Basic for Windows CE is described. The differences between Visual Basic and eMbedded Visual Basic, such as support for specific control and data types, are explained. Tips for dealing with reduced screen real estate on a handheld PC, debugging, and running in an emulator are also di......
VC++实现GPS全球定位系统定位数据的提取(2005-09-22 21:19:00)
摘要:
VC++实现GPS全球定位系统定位数据的提取
作者: 郎锐 信息产业部电子第二十二研究所青岛分所
摘要: 本文提出了一种在VC下实现对GPS全球定位系统定位信息的接收以及对各定位参数数据的提取方法。
引言
卫星导航技术的飞速发展已逐渐取代了无线电导航、天文导航等传统导航技术,而成为一种普遍采用的导航定位技术,并在精度、实时性、全天候等方面取得了长足进步。现不仅应用于物理勘探、电离层测量和航天器导航等诸多民用领域,在军事领域更是取得了广泛的应用--在弹道导弹、野战指挥系统、精确弹道测量以及军用地图快速测绘等领域均大量采用了卫星导航定位技术。有鉴于卫星导航技术在民用和军事领域的重要意义,使其得到了许多国家的关注。我国也于2000年10月31日和12月21日成功发射了第一颗和第二颗导航定位试验卫星并建立了我国第一代卫星导航定位系统--"北斗导航系统",但由于起步晚也没有得到广泛应用。目前在我国应用最多的还是美国的GPS系统。本文就针对当前比较普及的GPS系统,对其卫星定位信息的接收及其定位参数提取的实现方法予以介绍。
定位信息的接收
通常GPS定位信息接收系统主要由GPS接收天线、变频器、信号通道、微处理器、存储器以及电源等部分组成。由于GPS定位信息内容较少,因此多用RS-232串口将定位信息(NEMA0183语句)从GPS接收机传送到计算机中进行信息提取处理。从串口读取数据有多种方法,在此直接使用 Win32 API函数对其进行编程处理。在Windows下不允许直接对硬件端口进行控制操作,所有的端口均被视为"文件",因此在对串口进行侦听之前需要通过打开文件来打开串口,并对其进行相关参数配置:
m_hCom=CreateFile("COM1",GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING, FILE_FLAG_OVERLAPPED,NULL); file://以异步方式打开COM1口
SetCommMask (m_hCom, EV_RXCHAR ) ; file://添加或修改Windows所报告的事件列表
SetupComm (m_hCom,READBUFLEN/*读缓冲......
利用Visual Basic 实现无线通讯(2005-09-22 21:14:00)
摘要:
利用Visual Basic 实现无线通讯
作者: 姜棣昭(中科院空间中心)
一、 概述
Visual Basic 是Mcrosoft公司推出的强有力的系列开发软件之一,而且以其实用、方便、快捷、开发周期短、广泛而强大的功能越来越被广大编程人员所亲赖,广为流传,似乎有些专业的编程人员放弃了Visaul C++ 而改用了Visaul Basic之类的RAD编程工具,尽管Visaul C++在灵活性、代码紧凑、运行速度快及底层开发等方面Visaul Basic无法比拟的,但编写C++应用程序过长的调试和开发周期确实有点不适应当今的应用程序开发环境。
在Visaul Basic开发工具中提供了大量的控件(或称控制、组件)供编程人员使用,可以方便的利用这些组件中的属性、方法、语言等以事件驱动方式开发应用程序,还可以利用WINDOWS SDK中的API中的应用程序接口等工具开发应用程序。VB还自带一个控件开发软件包CDK,利用CDK可以开发自己需要的Controls 。在通讯问题中我们可以使用VB提供的通讯控件或调用WINDOWS API通讯函数。
二、 VB串行通讯
利用VB开发通信程序主要的方法有两种,一是利用VB本身提供的控件(CONTRALS),另一种方法是利用WINDOWS API应用程序接口,WINDOWS API 主要提供了三个动态连接库KERNEL.EXE、USER.EXE、GDI.EXE供开发人员调用,其中KERNEL.EXE 主要包括一些底层操作函数,完成一些资源管理、任务、内存等操作,USER.EXE包含了一些与WINDOWS管理有关的函数,如通讯、菜单、消息、光标、插入符、计时器以及绝大多数非显示函数,GDI.EXE图形设备接口库,主要内容为与设备输出有关的函数。和串口通讯有关系的函数BuilidCommDCB、ClearCommBreak、SetCommBreak、FlushComm、GetCommError、GetCommState、WriteComm、ReadComm、SetCommState、CloseComm等均在 \Windows\system 子目录下的USER.EXE动态连接库中,在VB调用之前应该先在全局变量定义处声明API通讯函数、定义常量。
在我们的实践中,用VB 控件......
VB GPS 编程源程序(2005-09-22 21:02:00)
摘要:
VB GPS 编程源程序
gisant 发表于 2005-3-18 9:31:56
Private Sub GPSComm_OnComm()
On Error GoTo ErrHdl
Dim oData As String
Dim aData() As String
Dim aDataLen As Integer
Dim counter1 As Integer
oData = CStr(GPSComm.Input)
If Mid(oData, 1, 1) <> "$" Then
Exit Sub
End If
aData = Split(oData, vbCrLf)
aDataLen = 8
For counter1 = 1 To aDataLen Step 1
If Len(aData(counter1)) < 6 Then
Exit For
 ......
很久很久以前(2005-09-22 20:51:00)
摘要:
很久很久以前
点击数:423 发布日期:2005-7-3 23:07:00 【评论】【打印】【收藏此页到365Key】
很久很久以前
狐狸是怕老虎的
耗子是怕猫的
小偷是怕警察的
坏蛋是怕好人的
撒谎是会脸红的
放屁是会臭的
做坏事是怕鬼敲门的
很久很久以前
天空是蓝的
大地是丰沃的
水是可以喝的
庄稼是长在田里的
土豆是埋在土里的
生孩子是需要女人的
但只有女人也是生不出孩子的
很久很久以前
杀人是要偿命的
贪污是要坐牢的
法庭是讲理的
法官是不能胡来的
歌星是不陪领导睡觉的
小姐是不能乱叫的
结婚是先要谈恋爱的
很久很久以前
学校是教书育人的
考试是不能作弊的
大学生是不能卖淫的
拍电影是无需陪导演睡觉的
诗人是骄傲的
孩子是贪玩的
星期天是要休息的
很久很久以前
大米是没有毒的
猪肉是可以吃的
空气中是含有氧气的
药是可以治病的
医院是救死扶伤的
感冒是不会死人的
卖羊肉是不能挂狗头的
很久很久以前
理发店是只管剃头的
刮胡子是传染不上艾滋病的
白痴是不能当教授的
****是不能代表人民利益的
舞女是不能当法官的
欠人家钱是要还的
婊子是绝不能立牌坊的......
VB_窗口固定(2005-09-22 20:46:00)
摘要:
VB_窗口固顶
点击数:6 发布日期:2005-4-16 9:45:00 【评论】【打印】【收藏此页到365Key】
Option Explicit
Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Private Const HWND_TOPMOST& = -1
' 将窗口置于列表顶部,并位于任何最顶部窗口的前面
Private Const SWP_NOSIZE& = &H1
' 保持窗口大小
Private Const SWP_NOMOVE& = &H2
' 保持窗口位置
Private Sub Form_Load()
SetWindowPos Me.hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE
' 将窗口设为总在最前
&n......