众位高手,我是一小女子,想学习vb,现有一问题要问,麻烦各位大哥

lrf 2000-09-25 09:09:00
我现在遇到一通信问题,如何把从rs-232口接收到的数据显示在一个文本框里,或者写到数据库里,如sql server里,各位如有源程序的话,给我一份好不好,小妹多谢了
...全文
118 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
PiterKing 2000-09-25
  • 打赏
  • 举报
回复
首先使用MS Common控件从串口获取数据,
使用DAO或者ADO把数据写入数据库.
以上问题的详细资料可以查阅MSDN.
lynxliu 2000-09-25
  • 打赏
  • 举报
回复
方法是使用,Communications 控件,获得的是字符串,就可以把它付给文本框或者存入数据库
以下是资料:
使用 Communications 控件


Communications 控件可以用来提供简单的串行端口通讯功能,也可以用来创建功能完备(full-featured)、事件驱动的高级通讯工具。

Communications 控件



Communications 控件提供了一系列标准通讯命令的使用界面。使用它可以建立与串行端口的连接,通过串行端口连接到其它通讯设备(例如调制解调器),发出命令,交换数据,以及监视和响应串行连接中发生的事件和错误。

用途
拨打电话号码。


监视串行端口的输入数据。


创建功能完备的终端程序。
示例应用程序:Dialer.vbp 和 VBTerm.vbp
Dialer.vbp 和 VBTerm.vbp 示例应用程序位于 Visual Basic CD-ROM 的 Program Files\Microsoft Visual Studio\Common\Samples\vb directory 目录中,它们分别演示了 Communications 控件的简单编程技术和复杂编程技术。

串行通讯的基本知识
每台计算机都提供了一个或多个串行端口。它们被依次命名为:COM1、COM2 等等。在标准的 PC 中,鼠标通常被连接到 COM1 端口。调制解调器可能连接到 COM2,扫描仪被连接到 COM3,等等。串行端口提供了计算机与这些外部串行设备之间的数据传输通道。

串行端口的本质功能是作为 CPU 和串行设备间的编码转换器。当数据从 CPU 经过串行端口发送出去时,字节数据被转换为串行的位。在接收数据时,串行的位将被转换为字节数据。

要完成数据的传输,还需要进一步一个解释层。在操作系统一边,Windows 使用了通讯驱动程序 Comm.drv,以便使用标准的 Windows API 函数发送和接收数据。驱动程序通常由串行设备制造商提供,以便将其硬件与 Windows 连接。在使用 Communications 控件时,实际上使用了 API 函数,API 函数将被 Comm.drv 解释并传输给设备驱动程序。

作为程序员,只需关心如何与 Windows 打交道。作为 Visual Basic 程序员,只需要关心 Communications 控件提供的对 Windows 通讯驱动程序的 API 函数的接口。换句话说,只需要设置和监视 Communications 控件的属性和事件。

建立串行端口连接
使用 Communications 控件的第一步是建立与串行端口的连接。下表列出了用于建立串行端口连接的属性:

属性 描述
CommPort 设置或返回通讯端口号。
Settings 以字符串形式设置或返回波特率、奇偶校验、数据位和停止位。
PortOpen 设置或返回通讯端口的状态。以及打开和关闭端口。


打开串行端口
要打开串行端口,可以使用 CommPort、PortOpen 和 Settings 属性。例如:

'打开串行端口
MSComm1.CommPort = 2
MSComm1.Settings = "9600,N,8,1"
MSComm1.PortOpen = True

CommPort 属性确定打开哪个串行端口。假如 COM2 上连接有一个调制解调器,则在上面的例子中需要将值设置为 2 (COM2) 才能连接到该调制解调器。CommPort 属性值可以设置为 1 到 16 之间的任何值(缺省值为 1),然而,如果将该值设置为系统中并不存在的 COM 端口,将会产生错误。

Settings 属性可以用来指定波特率、奇偶校验、数据位数和停止位数。按照缺省规定,波特率被设置为 9600。奇偶校验设置为了进行数据校验。这通常是不用的,并设置为“N”。数据位数指定了代表一个数据块的比特数。停止位指出了何时接收到一个完整数据块。

在指定了要打开的端口,以及如何进行数据通讯之后,就可以使用 PortOpen 属性建立连接了。它是一个布尔值,即取值范围为 True 或 False。然而,如果端口无效,或者 CommPort 属性设置有误,或者该设备不支持指定的设置,就会产生错误;即使没有产生错误,外部设备也不能正常工作。将 PortOpen 属性设置为 False 即可关闭该端口。

操作调制解调器
在绝大多数情况下,使用 Communications 控件的目的是为应用程序提供对调制解调器的操作。利用 Communications 控件,可以使用标准的 Hayes 兼容的命令集拨打电话号码,或连接到另一调制解调器,并与它进行交互操作。

用 CommPort、Settings 和 PortOpen 属性建立了串行端口连接之后,就可以使用 Output 属性激活该调制解调器,并与它进行交互操作。Output 属性用来发出命令,控制调制解调器之间的交互操作。如下所示:

'激活调制解调器,并拨打电话号码。
MSComm1.Output = "ATDT 555-5555" & vbCr

在上面的示例中,“AT”命令初始化连接,“d”进行拨号,“T”指定使用音频(而不是脉冲)。在输出到终端时必须指定回车符 (vbCr)。在输出字节数组时,无须添加返回字符。

如果命令被正确处理,返回的结果码将是“确定”。检查该结果码即可确定命令是否被正确处理。

详细信息 要得到完整的 Hayes 兼容的命令列表,请查看调制解调器的文档。

在设计时设置接收和发送缓冲区属性
在端口被打开后,就创建了接收和发送缓冲区。为了管理这些缓冲区,Communications 控件提供了一系列属性,在设计时可以通过该控件的“属性页”设置这些属性。

在设计时设置缓冲区属性



缓冲区内存分配
InBufferSize 和 OutBufferSize 属性指定了为接收和发送缓冲区分配的内存数量。按照缺省规定,它们被分别设置为上图所示的值。这两个值设置得越大,应用程序中可用的内存就越少。然而,如果缓冲区太小,就要冒缓冲区溢出的风险,除非采用握手信号。

注意 鉴于现在大多数微机可用的内存量,由于有更多的可用资源,缓冲区内存分配已不那么至关紧要了。换言之,可以把缓冲区的值设得高一些而不影响应用程序的性能。

RThreshold 和 SThreshold 属性
RThreshold 和 SThreshold 属性,表示在 OnComm 事件发生之前,接收缓冲区或发送缓冲区中可以接收的字符数。OnComm 事件被用来监视和响应通讯状态的变化。如果将每个属性的值都设置为零 (0),就可以避免发生 OnComm 事件。如果将该值设置为非零的值(比如 1),那么每当缓冲区中接收到一个字符时,就会产生 OnComm 事件。

详细信息 有关这些属性的详细信息,请参阅本主题的“OnComm 事件和 CommEvent 属性”。

InputLen 和 EOFEnable 属性
如果把 InputLen 属性设置为 0,那么在使用 Input 属性时,Communications 控件将读出接收缓冲区中的所有内容。如果读取以定长的数据块的形式格式化了的数据时,则需要将该属性设置为合适的值。

EOFEnable 属性用来指出在输入数据期间何时发现的文件结束 (EOF) 字符。如果将该属性设置为 True,在发生这种情况的时候将导致输入停止,并且产生 OnComm 事件以通知用户。

详细信息 请参阅本主题的“管理接收和发送缓冲区”和“OnComm 事件和 CommEvent 属性”。

管理接收和发送缓冲区
如上面提到的,在打开端口以后,接收和发送缓冲区即被创建。接收和发送缓冲区用来保存传入的数据和传出的数据。为了使用户能够管理这些缓冲区,Communications 控件提供了一系列的属性,利用它们可以放置或获取数据、返回每个缓冲区大小、处理文本和二进制数据。如何正确地管理这些缓冲区是 Communications 控件应用中的一个重要课题。

接收缓冲区
Input 属性被用来保存和接收从接收缓冲区获取的数据。例如,如果希望从接收缓冲区获取数据,并将其显示在一个文本框中,可以使用下面的代码:

TxtDisplay.Text = MSComm1.Input

如果需要获得接收缓冲区的所有内容,就必须将 InputLen 属性设置为 0。这可以在设计时或运行时设置。

InputMode 属性可以设置为如下 Visual Basic 常数:comInputModeText 或 comInputModeBinary,即可分别以文本或二进制格式接收传入的数据。该数据将以字符串或 Byte 数组中的二进制数据格式访问。对 ANSI 字符集的数据应使用 comInputModeText;而对其它数据,比如嵌入了控件字符、空值等的数据,应使用 comInputModeBinary。

接收到的每一个字节都被移入接收缓冲区,同时 InBufferCount 属性加一。这样 InBufferCount 属性就可被用于获得接收缓冲区中字节的数目。将该属性的值设置为 0,即可清空接收缓冲区。

发送缓冲区
Output 属性被用来向发送缓冲区发出命令和数据。

与 Input 属性类似,数据可以以文本或二进制格式发送。Output 属性必须用字符串变体型发送文本,用 Byte 数组变体型发送二进制数据。

可用 Output 属性发送命令、文字字符串或 Byte 数组数据。例如:

'发送 AT 命令
MSComm1.Output = "ATDT 555-5555"

'发送文本字符串
MsComm1.Output = " This is a text string "

'发送 Byte 数组数据
MSComm1.Output = Out

如前面提到的,每发送一行必须以回车字符 (vbCr) 结束。在上例中,Out 被定义为 Byte 数组变体型:Dim Out() As Byte。假如它是字符串变体型,则应定义为:Dim Out() As String。

可用 OutBufferCount 属性监视发送缓冲区中的字节数目。将该值设置为 0 可将发送缓冲区清空。

握手
要保证数据传输成功,必须对接收和发送缓冲区进行管理。例如,要保证接收数据的速度不超出缓冲区的限制。

握手是指一种内部的通讯协议,通过它将数据从硬件端口传输到接收缓冲区。当串行端口收到一个字符时,通讯设备必须将它移入接收缓冲区中,使程序能够读到它。如果数据到达端口的速度太快,通讯设备可能来不及将数据移入接收缓冲区,握手协议保证不会由于缓冲区溢出而导致丢失数据。

设置 Handshaking 属性可以指定在应用程序中使用的握手协议。缺省情况下,该值被设置为空。然而,可将其设置为下面列出的其它协议:

设置值 值 描述
comNone 0 不使用握手协议(缺省)
comXOnXOff 1 XOn/XOff 握手。
comRTS 2 RTS/CTS (请求发送/清除发送) 握手。
comRTSXOnXOff 3 两者,RTS 握手和XOn/XOff 握手。


需要使用什么协议与连接到的设备有关。如果将该值设置为 comRTSXOnXOff,可以同时支持两种协议。

在许多情况中,通信协议本身能处理握手。因而,设置此属性为非 comNone 的其它一些值可能会导致冲突。

注意 如果将该值设置为 comRTS 或 comRTSXOnXOff,则需要将 RTSEnabled 属性设置为 True,否则虽然能够连接并发送数据,但不能接收数据。

OnComm 事件和 CommEvent 属性
根据应用程序的用途和功能,在连接到其它设备过程中,以及接收或发送数据过程中,可能需要监视并响应一些事件和错误。

可以使用 OnComm 事件和 CommEvent 属性捕捉并检查通讯事件和错误的值。

在发生通讯事件或错误时,将触发 OnComm 事件,CommEvent 属性的值将被改变。因此,在发生 OnComm 事件的时候,如果有必要,可以检查 CommEvent 属性的值。由于通讯(特别是通过电话线的通讯)是不可预料的,捕捉这些事件和错误将有助于使应用程序对这些情况作出相应的反应。

下表列出了可能触发 OnComm 事件的通讯事件。对应的值将在发生事件时被写入 CommEvent 属性。

常数 值 描述
ComEvSend 1 发送缓冲区中的字符数少于 SThreshold。
ComEvReceive 2 接收到 Rthreshold 个字符。在使用 Input 属性移去接收缓冲区中的数据之前,该事件将持续产生。
ComEvCTS 3 CTS 信号发生变化。
ComEvDSR 4 DSR 信号发生变化。该事件仅在 DSR 由 1 变为 0 时触发。
ComEvCD 5 CD 信号发生变化。
ComEvRing 6 检测到电话振铃。某些 UART(通用异步收发器)可能不支持本事件。
ComEvEOF 7 收到文件结束符(ASCII 字符 26)。


下列错误同样会触发 OnComm 事件,并且在 CommEvent 属性中写入相应的值。

设置值 值 描述
ComEventBreak 1001 收到 Break 信号。
ComEventFrame 1004 帧错误。硬件检测到帧错误。
ComEventOverrun 1006 端口超限。在下一个字符到达端口之前,前一字符还没有从硬件中读走,因而丢失。
ComEventRxOver 1008 接收缓冲区溢出。接收缓冲区已没有空间。
ComEventRxParity 1009 奇偶校验错误。硬件检测到奇偶校验错误。
comEventTxFull 1010 发送缓冲区满。在试图将字符传入发送缓冲区时,该缓冲区已满。
ComEventDCB 1011 在为端口获取设备控制块 (DCB) 时,发生不可预料的错误。

DirectX修复工具(DirectX Repair)是一款系统级工具软件,简便易用。本程序为绿色版,无需安装,可直接运行。 本程序的主要功能是检测当前系统的DirectX状态,如果发现异常则进行修复。程序主要针对0xc000007b设计,可以完美修复该。本程序中包含了最新版的DirectX redist(Jun2010),并且全部DX文件都有Microsoft的数字签名,安全放心。 本程序为了应对一般电脑用户的使用,采用了傻瓜式一键设计,只要点击主界面上的“检测并修复”按钮,程序就会自动完成校验、检测、下载、修复以及注册的全部功能,无需用户的介入,大大降低了使用难度。 本程序适用于多个操作系统,如Windows XP(需先安装.NET 2.0,详情请参阅“致Windows XP用户.txt”文件)、Windows Vista、Windows 7、Windows 8、Windows 8.1、Windows 8.1 Update、Windows 10,同时兼容32位操作系统和64位操作系统。本程序会根据系统的不同,自动调整任务模式,无需用户进行设置。 本程序的V3.3版分为标准版、增强版以及在线修复版。其中的标准版以及增强版都包含完整的DirectX组件。除此之外,增强版中还额外包含了c++ Redistributable Package,因此增强版不但能解决DirectX组件的,而且还能解决c++组件异常产生的。增强版适合无法自行解决c++相关的用户使用。在线修复版的功能与标准版相同,只是其所需的文件将通过Internet下载,因此大大减小了程序的体积。本程序的各个版本之间,主程序完全相同,只是配套使用的数据包不同。因此,当您使用标准版数据包时,程序将进行标准修复;当您使用增强版的数据包时,程序将进行增强修复;当数据包不全或没有数据包(即只有DirectX Repair.exe程序)时,程序将进行在线修复。在线修复、离线修复可自由灵活组合,充分满足不同用户的需要。 本程序自V2.0版起采用全新的底层程序架构,使用了异步多线程编程技术,使得检测、下载、修复单独进行,互不干扰,快速如飞。新程序更改了自我校验方式,因此使用新版本的程序时不会再出现自我校验失败的错误;但并非取消自我校验,因此程序安全性与之前版本相同,并未降低。 程序有自动更新c++功能。由于绝大多数软件运行时需要c++的支持,并且c++的异常也会导致0xc000007b错误,因此程序在检测修复的同时,也会根据需要更新系统中的c++组件。自V3.2版本开始使用了全新的c++扩展包,可以大幅提高工业软件修复成功的概率。修复c++的功能仅限于增强版,标准版及在线修复版在系统c++异常时(非丢失时)会提示用户使用增强版进行修复。 程序有两种窗口样式。正常模式即默认样式,适合绝大多数用户使用。另有一种简约模式,此时窗口将只显示最基本的内容,修复会自动进行,修复完成10秒钟后会自动退出。该窗口样式可以使修复工作变得更加简单快速,同时方便其他软件、游戏将本程序内嵌,即可进行无需人工参与的快速修复。开启简约模式的方法是:打开程序所在目录下的“Settings.ini”文件(如果没有可以自己创建),将其中的“FormStyle”一项的值改为“Simple”并保存即可。 程序有高级筛选功能,开启该功能后用户可以自主选择要修复的文件,避免了其他不必要的修复工作。同时,也支持通过文件进行辅助筛选,只要在程序目录下建立“Filter.dat”文件,其中的每一行写一个需要修复文件的序号即可。该功能仅针对高级用户使用,并且必须在正常窗口模式下才有效(简约模式时无效)。 本程序有自动记录日志功能,可以记录每一次检测修复结果,方便在出现时,及时分析和查找原因,以便找到解决办法。 程序的“选项”对话框中包含了4项高级功能。点击其中的“注册系统文件夹中所有dll文件”按钮可以自动注册系统文件夹下的所有dll文件。该项功能不仅能修复DirectX的,还可以修复系统中很多其他由于dll未注册而产生的,颇为实用。点击该按钮旁边的小箭头,还可以注册任意指定文件夹下的dll文件,方便用户对绿色版、硬盘版的程序组件进行注册。点击第二个按钮可以为dll文件的右键菜单添加“注册”和“卸载”项,方便对单独的dll文件进行注册。请注意,并不是所有的dll文件都可以通过这种方式注册。点击“DirectX版本”选项卡可以自行修改系统中DirectX的版本信息。点击“DirectX加速”选项卡可以控制系统中DirectX加速的开启与关闭。 新版程序集成了用户反馈程序,可以在用户允许的前提下发送检测修复结果。用户也可以在出现时通过反馈程序和软件作者进行交流,共同查找。反馈是完全自愿和匿名(如果不填写E-mail地址)的。 本程序的通用版基于Microsoft .NET Framework 2.0开发,对于Windows 2000、Windows XP、Windows 2003的用户需要首先安装.NET Framework 2.0或更高版本方可运行本程序。有关下载和安装的详细信息请参阅“致Windows XP用户.txt”文件。对于Windows Vista、Windows 7及后续用户,可以直接运行本程序。 同时鉴于Windows 8(Windows 8.1、Windows 8.1 Update)、Windows 10系统中默认未包含.NET Framework 2.0,因此新版的程序文件夹内将包含一个DirectX_Repair_win8的特别版程序,该程序功能与通用版相同,基于.NET Framework 4.0开发,可以在Windows8(Windows 8.1、Windows 8.1 Update)、Windows 10系统中直接运行(其他系统如果安装了.NET Framework 4.0也可以运行这个特别版的程序)。 本程序的官方博客地址为:http://blog.csdn.net/vbcom/article/details/6962388 所有的更新以及技术支持都可以到该博客上找到。

7,785

社区成员

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

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