VB编写上位机(MSComm控件)

VB编写上位机(MSComm控件)
VB编写上位机(MSComm控件)

上位机可方便地实现与单片机之间进行信息传递交互,能够更加容易对机械手臂进行控制,实现操作可视化,更加直观,保存重要数据等功能。我们利用Visual Basic 6.0(以下简称VB)来编制上位机,VB是一种功能强大、简单易学的程序设计语言。它不但保留了原先Basic语言的全部功能,而且还增加了面向对象程序设计功能。它不仅可以方便快捷地编制适用于数据处理、多媒体等方面的程序,而且利用ActiveX控件MSComm还能十分方便地开发出使用计算机串口的计算机通信程序。本实验涉及控制六路舵机,所以需要编制上位机实现一次向下位机传输含有六个数据的数组,同时接受来自下位机的数组,并显示。

整个过程可分为如下几个过程:

一:VB是面向对象的语言,首先需要绘制程序界面

该上位机大致分为左边的功能部分与右边的可视化调节部分。

功能部分有端口选择,用以选择合适的端口进行串口通信,波特率选择,打开与关闭端口,动作设置等。

为了便于布局,应用frame控件建立区域,再将控件拖到frame区域中,对于功能相同的控件来说,建立控件组的方式会使编程避免重复繁琐,例如HScrollbar控件,先向frame区域内拖入一个HScrollbar控件,再复制,粘贴到frame 区域内部,则提示是否建立控件组,点击确定即可。这样便为后续编程带来很大的方便。

调节部分运用Hscrollbar控件来粗略调节度数,设定按钮与文本框配合来精确调节输出度数。用右列文本框实时读取舵机当前角度。用optionbutton控件来选择hscrollbar的步进精度,这里分为0.1度与1度两个不同的选项。由于一组optionbutton中在程序运行中只能有一个处于选中状态,根据本程序要求,每一横列的两个optionbutton为一组,这样就需要frame控件,在同一个frame区域

里的optionbutton默认为一组。这样就可以如上图所示的状态显示,否则真能选中其中的一个。

端口与波特率的选择应用combobox控件。

指示灯部分则用picturebox控件添加两个图片,分别为红灯与黑灯,用以显示端口的开关状态。

每个MSComm控件对应于一个串行端口。使用多个串行口时,要使用多个MSComm控件。MSComm控件的主要属性及说明如下。

“工程”——“部件”,选中Microsoft Comm control 6.0,“确定”,完成MSComm 控件的添加。

二:在完成了界面的绘制后,就需要对部分的控件的初始属性进行设置。并输入

有两种处理通信的方式:

(1)事件驱动。利用OnComm事件捕获并处理通信事件,所有的通信事件和通信错误列表都包含在控件的CommEvent属性中。

(2)查询方式。在程序关键功能之后,通过检查CommEvent的值来查询事件和错误。

添加MScomm控件,并在窗体装入时进行初始化

Private Sub Form_Load()

https://www.360docs.net/doc/6211946511.html,mPort = 1 ’端口选择1

MSComm1.Settings = "9600,N,8,1’定义数据传输协议,与下位机要保持一致。波特率9600,无奇偶验证,8个数据位,一个停止位。

MSComm1.InputMode = 1'数据传输为二进制方式

MSComm1.InBufferCount = 0 '清空接受缓冲区

MSComm1.RThreshold = 1 '产生MSComm事件

If MSComm1.PortOpen = False Then

MSComm1.PortOpen =True '打开串口

End If

End Sub

为随时判断端口是否开启,并用黑红等来显示当前状态,运用timer控件,将interval设置为100,双击控件并输入如下代码。则程序每隔100ms执行一次下面的程序。

Private Sub Timer2_Timer()

If MSComm1.PortOpen = ture Then

Picture1.Visible = True

Picture2.Visible = False’对应红灯图片显示,黑灯图片不显示。

Else

Picture2.Visible = True

Picture1.Visible = False’对应黑灯图片显示,红灯图片不显示。

End If

End Sub

运用combobox控件来选择端口,波特率等MSComm的setting值,双击控件后输入如下代码

Private Sub Combo1_Click()

If Combo1.Text = "COM1" Then

https://www.360docs.net/doc/6211946511.html,mPort = 1

ElseIf Combo1.Text = "COM2" Then

https://www.360docs.net/doc/6211946511.html,mPort = 2

ElseIf Combo1.Text = "COM3" Then

https://www.360docs.net/doc/6211946511.html,mPort = 3

Else

https://www.360docs.net/doc/6211946511.html,mPort = 4

End If

End Sub

则选择端口部分完成。波特率部分同理。

本项目向单片机传输的为六个1000~5000之间的整数,所以要将HScroll的min 值设为1000,max值设为5000。1000~5000与角度0~180度之间相对应,即运用一次函数形式将HScroll.value值转变为度数赋给对应HScrollbar下方的文本框。Private Sub HScroll1_Change()

Text1.Text = Format(HScroll1.Value * 0.045 - 45, "0.0")

End Sub

同时如果在文本框中输入0~180之间的度数,点击“设定”按钮,需要将其度数对应的数值赋给HScroll.value,这样度数与Hscrollbar进度条之间便一一对应了。Private Sub Command3_Click()

If Text1.Text = "" Then

MsgBox "未输入数值", 5, "警告" ‘出现警告的提示框,提示”未输入数值”。ElseIf Text1.Text < 0 Or Text1.Text > 180 Then

MsgBox "0-180为有效数值", 5, "警告" ’出现警告的提示框,提示"0-180为有效数值"

Else

HScroll1.Value = Format((Text1.Text + 45) * 200 / 9, 0) ’仅保留个位数。

End If

End Sub

由于PC与单片机之间的数据传输要以字节型数据传输,而字节数据的范围为0~256,所以本项目中将每个整数分成两个部分,千位与百位为一个数,个位与十位为一个数,即要想传送3456,则分别传送34与56两个数据,然后由下位机还原回3456。这样可以建立一个包含12个数据的字节型数组用以传输数据。

先用包含6个数据的字符型数组储存6个四位数,再用Mid()函数来提取前两位与后两位然后将数据赋给包含12个数据字符型数组储存12个两位数,最后将此数组转换字符型数组。具体过程如下

建立输出函数

Sub mytest()

Dim senddata(0 To 5) As String

Dim rr(1 To 12) As String

Dim yy(1 To 12) As Byte

Dim i As Integer

Dim j As Integer

Dim k As Integer

For k = 0 To 5

senddata(k) = HScroll1(k).Value

Next k

For i = 1 To 6

rr(2 * i - 1) = Mid(senddata(i - 1), 1, 2)

rr(2 * i) = Mid(senddata(i - 1), 3, 2)

Next i

For j = 1 To 12

yy(j) = rr(j)

Next j

MSComm1.Output = yy

End Sub

设定HScroll1为一个控件数组,在其中运用call,则HScroll每改变一下位置,就会执行上述函数来向下位机发送数据,这就保证了上位机的实时性。由于上位机还需要发传感器等数据,为了便于下位机区分,先发送一个与下位机约定好的命令字节,如“A”发送后延时一段时间,以便让下位机准备接受此类数据。call 以上函数,完成发送数据。以下为完整代码:

Private Sub HScroll1_Change(Index As Integer)

MSComm1.Output = "A"

Delay (500) ‘延时500ms

Call mytest

End Sub

其中delay为延时函数,添加模块后在其中定义:

Public Declare Function timeGetTime Lib "winmm.dll" () As Long

Public Sub Delay(ByVal num As Integer)

Dim t As Long

t = timeGetTime

Do Until timeGetTime - t >= num

DoEvents

Loop

End Sub

接收数据部分未发送数据的逆过程,运用oncomm事件来触发接收。由于下位机会发来不同长度的信息,为了使上位机判断是哪一种数据,同样可以使用上面例

子中的方式,先发一个命令字节、延时、接受。这里我们用另一种方法,在数据前加一个开始字符,与数据一同发过来,上位机根据首字符而相应的选择数据的处理方式,当然事先要与下位机约定好。双击MScomm控件,输入代码。Private Sub MSComm1_OnComm()

Dim aa(1 To 6) As String

Dim bb(100) As Byte

Dim Buffer As Variant

Dim i As Integer

Dim j As Integer

Select Case https://www.360docs.net/doc/6211946511.html,mEvent

Case 2

Timer1.Enabled = True 定时器打开

MSComm1.InputLen = 0 一次性全部读入

MSComm1.RThreshold = 0 禁止生成事件

Buffer = MSComm1.Input

For i = LBound(Buffer) To UBound(Buffer)

bb(i) = Buffer(i)

Next i

If bb(0) = 65 Then

For j = 1 To 6

aa(j) = bb(2 * j - 1) * 100 + bb(2 * j - 0)

Text7(6 - j).Text = aa(j)

Next j

ElseIf bb(0) = 66 Then

bb(0) = 66

For j = 1 To 6

aa(j) = bb(2 * j - 1) * 100 + bb(2 * j - 0)

Text7(6 - j).Text = aa(j)

Text9.Text = bb(2)

Next j

ElseIf bb(0) = 67 Then

Text9.Text = bb(2)

End If

End Select

End Sub ‘整个成四位数显示到文本框中

三:这样上位机的基本部分完成,下面编制二级窗体,来进行永久保存数据,即将程序运行过程中处于内存中的数据保存到硬盘中的指定路径,以便下次再运行时调用,否则当程序关闭后内存释放,再打开上位机处于最初状态,仍然需要输入相应数据。

向项目中添加窗体,首先绘制界面,文本框与控件组形式存在。

点击主界面上的“动作一”按钮进入二级窗口,代码如下:

Private Sub Command11_Click()

Form2.Show

End Sub

这里输入六组数据,每组为舵机的转动终点角度,这样机械手臂按顺序执行下去,生成一连串的动作。

“永久保存”可在制定路径上生成txt文件用以保存已经调试好的数据,在下次用的时候可点击“载入数据”来调入上次保存的数据,点击发送可将这组数据全部发送给单片机。

保存数据程序:

Private Sub Command3_Click()

Dim i As Integer

Open "C:\Users\test\Desktop\2.txt" For Output As #2‘保存在桌面上,文件名为2.txt

For i = 0 To 35

Print #2, Text1(i).Text

Next i

Close #2

End Sub

载入数据程序

Private Sub Command4_Click()

Dim j As Integer

Dim i As Integer

Open "C:\Users\test\Desktop\2.txt" For Input As #2

Do While Not EOF(2)

For j = 0 To 35

Line Input #2, outputdatas(j)

Next j

Loop

For i = 0 To 35

Form3.Text1(i).Text = outputdatas(i)

Next i

Close #2

End Sub

其中outputdatas为全局变量,字符型数组。定义时用如下方法,在工程中“添加模块”,并在模块中输入Public outputdatas(0 To 35) As String即可完成定义,这样此数据不会在程序执行过程中释放地址,并应用于全局。

点击“发送”按钮,将数据outputdatas按步骤二中发送的方式首先转换数据类型,然后送入output即可完成发送这35个数据的发送。

四:调试。在编制过程中难免会有些疏漏和一些没有考虑的情况,而且根据项目中硬件软件的具体情况也要对上位机进行一些调整,是整个系统达到最佳状态。

用VB编写上位机

VB编写上位机实例 用VB编写上位机实例 16:14:22 UTC+0800Sun Apr 1 2007 用VB6.0编写第一个串口通信上位机程序 Visual Basic6.0是一个可视化窗口环境的编程软件,目前使用Visual Basic6.0可以快速简单编写单片机中的串口通信上位机程序。电子制作HPOO 下面我们以一个完整的通信试验为例子完成如何用Visual Basic6.0编写单片机串口通信程序。 打开安装好后的Visual Basic6.0主程序界面。选择“标准EXE”。如图1显示,建立Visual Basic 的编程环境。 图1 在菜单的[工程]选项中选择[部件],如图2。把Visual Basic的串口通信控件Microsoft Comm control 6.0调入工作菜单。 图2

在打开[部件]对话框中,选择Microsoft Comm control 6.0的选项框,点击[确定]。图3 图3 可以在图示3中可以看通信控件Microsoft Comm control 6.0的文件是在C:\WINNT\system32\MSCOMM32.OCX文件。 如果大家在首次调用通信控件Microsoft Comm control 6.0控件时无法在控件对话框中找到,请直接在系统目录中搜索名为MSCOMM32.OCX文件。然后通过浏览加入VB的工作界面中。添加完控件回到编程界面。如下图4。 图4 通过右边的菜单把一些必要的控件放在窗体中。然后点击窗体中的Timer控件按F4弹出属性窗口进行设置。其具体设置如下:

Timer定时器控件设置属性,(通过按F4键可弹出此窗口) Mscomm通信控件参数属性设置(通过单击控件的右键属性可弹出此窗口) 本文用到的其他控件:CommandButton控件和TextBox控件按默认属性设置不变。单片机编程器HPOO 以上设置完成,回到编程窗体区中,任意双击。会显示Visual Basic的程序窗体的Load事件程序。在代码窗口中输入:单片机编程器HPOO Private Sub Form_Load() MSComm1.PortOpen = True '窗体的加载时,就打开通信端口,通信端口的参数也可以在此指定 Timer1.Enabled = Timer1.Enabled '窗体的加载时,同时定时器控件事件 End Sub 这样设置目的是当程序在打开是,首先打开通信控件MSComm,注意这里的串口通信参数中的波特率设置是默认参数的。 即:波特率:9600bps;校验位:无;数据位:8位;停止位:1。电子元件邮购网 双击定时器控件Timer1同样在定时器窗体的事件程序中,输入相关代码: Private Sub Timer1_Timer() If MSComm1.InBufferCount > 0 Then '程序检查输入缓冲区中是否有数据,若有数据 Text1.Text = Text1.Text + MSComm1.Input

VB控件属性大全

1.01、窗体(FORM)的常用属性 属性说明 (Name)窗体的名称 ActiveControl返回焦点所在的控件,该属性设计阶段不可用,运行时只读。 Appearance 外观效果,取值为: 0 平面 1 3D(立体) AutoRedraw 是否自动刷新或重画窗体上所有图形[获得或设置从绘图(graphics)方法到一个持久性位图的输出],取值为: True False BackColor背景颜色,可从弹出的调色板选择。 BorderStyle 设置边界类型,取值为: 0 None(无边界框架) 1 FixedSingle(窗口大小固定不变的单线框架) 2 Sizable(窗口大小可变的标准双线框架) 3 FixedDialog(窗口大小固定的对话框窗体) 4 FixedToolWindow(窗口大小固定的工具箱窗体) 5 Sizable ToolWindow(窗口大小可变的工具箱窗体) Caption窗体的标题 ClipControls 决定Paint事件的graphics方法是重画整个对象,还是重画新显示的区域。取值为: True或False ControlBox 是或有控制框, 取值为:True 有 False 无 DrawMode 设定窗体上绘图(graphics方法),Shape,Line等控件的输出外观,有16种可选: 1 黑色 2 非或笔,设置值15的反相 3 与非笔,背景色以及画笔反相二者共有颜色的组合 4 非复制笔,设置值13的反相 5 与笔非,画笔以及显示色反相二者共有颜色的组合 6 反相,显示颜色反相 7 异或笔,画笔颜色以及显示颜色的异或 8 非与笔,设置值9的反相 9 与笔,画笔以及显示色二者共有颜色的组合

基于VB的上位机程序设计说明

3 基于VB6.0的上位机程序设计 内部培训资料(不得转载) 随着嵌入式系统在电子领域应用的不断深入,可视化的单片机控制与检测系统越来越成为单片机技术的应用热点。广泛应用到工业自动化生产、交通、医疗、教育和各种自动控制等领域,如心电监护、全方位视频跟踪监视。在这些复杂的数字系统中,计算机被称为上位机,通过上位机和相关的软件实现传感信号的检测和对外部设备的控制。利用计算机实现可视化的控制系统包括上位机程序设计、接口设计和单片机系统设计。 单片机相比较计算机而言又叫下位机,是直接对检测对象测量和控制的系统,有时也把接口与下位机设计在在一个系统中统称接口电路。基于计算机基础的上位机程序可以提高复杂的单片机控制系统的人机交互功能。 本项目设计的内容是一个简单的温度检测系统,上位机程序用来检测和显示单片机系统发送的数据,下位机是一个简单的温度检测系统,通过USB接口虚拟一个串口传输数据,上位机程序实时显示温度,并通过曲线的形式描绘出温度的变化过程。上位机程序VB6.0设计,程序执行后,上位机程序要定时向下位机即单片机系统发送指令,下位机在接到命令后就开始发送温度信息。上位机显示的温度曲线要能准确的表示当时的温度,误差不能超过5%,能过显示的温度范围在20摄氏度到80摄氏度之间。上位机程序两次接收的温度数据间隔控制在在1秒钟左右,能够显示的温度曲线的总时间在2分钟左右。 3.1 VB简单认识 VB是Visual Basic的简称,是由美国微软公司于1991年开发的一种可视化的、面向对象和采用事件驱动方式的结构化高级程序设计语言,可用于开发Windows 环境下的各类应用程序。今天我们以VB6.0为基础,简单的认识VB,然后我们就可以利用VB这个强大的开发工具去开发我们需要的各类程序。 3.1.1 VB6.0基本操作 在Visual Basic安装成功之后,安装程序自动在【开始】菜单中建立V isual Basic 6.0的程序组和程序项。单击【开始】按扭,指向【所有程序】选项,再指向【Microsoft V isual Basic 6.0中文版】程序组,单击【Microsoft V isual Basic 6.0中文版】选项即可启动V isual Basic6.0中文版。 在VB6.0启动后,屏幕上将出现如图3-1所示的启动界面,在启动界面中会出现一个【新建工程】对话框。

arduino与上位机VB串口通信

用pc控制LED灯 注意红色的LED灯,熄灭的

亮了,程序界面,注意要开启串口才能控制

注意,我的arduino板子占用com3,所以mscomm也要用3口,不要弄错了,这里走过弯路,隔天才发现的,(彩色小点PS加上的,方便 理解)。 下面是源码,方便复制:

-------------------------------------------------------- 'vb写的上位机程序 Private Sub Command1_Click() Comm3.PortOpen = True End Sub Private Sub Command2_Click() Comm3.PortOpen = False End Sub Private Sub Command3_Click() Comm3.Output = "a" '用a表示开灯 End Sub Private Sub Command4_Click() Comm3.Output = "b" '用b表示灭灯 End Sub ----------------------------------------- //arduino程序 //通过电脑开关LED灯(LED灯负极连在arduino uno r3板数字3口,正极串一个1K 电阻后连板子5V电源正极

// int led1=3; //把LED连在Arduino数字端口3 //初始化 void setup() { Serial.begin(9600); //启动串行通讯,波特率为9600b/s pinMode(led1,OUTPUT); digitalWrite(led1,HIGH); //熄灭LED灯 } //主程序 void loop() { char val;//定义变量val,用于暂存上位机发送来的字符 if(Serial.available()>0)//如果上位机发送来了字符 { val=Serial.read(); //读取上位机发来的字符,并保存到val Serial.println(val); //显示接受到的字符 if(val=='a')//如果上位机发送字符'a', { digitalWrite(led1,LOW); //点亮LED灯}

vb6.0串口通讯上位机开发视频教程下载地址

资料1 第一章VisualBasic6基本介绍 1. 菜单栏的使用 2. 属性窗口的使用 3. 创建工程 4.窗体的操作 5. 属性值的设定 6. 程序代码编写 7. 制作一个简单应用程序 8. 窗体属性(1) 9. 窗体属性(2) 10. 窗体事件 11. 方法 第二章VisualBasic6的数据类型与运算符表达式 12.数据类型(1) 13. 数据类型(2) 14. 运算符表达式(1) 15.运算符表达式(2) 16. 运算符表达式(3) 第三章VisualBasic6的内部函数 17.常用内部函数(1) 18.常用内部函数(2) 19. 常用内部函数(3) 20. 常用内部函数(4) 21. 常用内部函数(5) 22. 常用内部函数(6) 23. 常用内部函数(7) 24. 常用内部函数(8) 25. 常用内部函数(9) 26. 常用内部函数(10) 第四章VisualBasic6的基本语句 27.基本语句(1) 28. 基本语句(2) 29. 基本语句(3) 30. 基本语句(4) 、 31.基本语句(5) 32. 基本语句(6)

33. 基本语句(7) 34. 基本语句(8) 35. 基本语句(9) 36. 基本语句(10) 37. 基本语句(11) 38. 基本语句(12) 第五章VisualBasic6的数组 39.数组(1) 40.数组(2) 41. 数组(3) 42. 数组(4) 43. 数组(5) 44. 数组(6) 45. 数组(7) 46. 数组(8) 第六章VisualBasic6的过程 47.过程(1) 48.过程(2) 49. 过程(3) 50. 过程(4) 51. 过程(5) 52. 过程(6) 53. 过程(7) 54. 过程(8) 55. 过程(9) 56. 过程(10) 第七章VisualBasic6的标准控件 57. 1111标准控件(1) 58.标准控件(2) 59. 标准控件(3) 60. 标准控件(4) 61. 标准控件(5) 62. 标准控件(6) 63. 标准控件(7) 64. 标准控件(8) 65. 标准控件(9) 66. 标准控件(10) 67. 标准控件(11)

VB常用控件属性

VB常用控件属性 4.1 标签 标签是VB中最简单的控件,用于显示字符串,通常显示的是文字说明信息。但不能编辑标签控件。 使用标签的情况很多,通常用标签来标注本身不具有Caption属性的控件。例如,可用标签为文本框、列表框、组合框等控件来添加描述性的标签。还可编写代码改变标签控件的显示文本以响应运行时的事件。例如,若应用程序需要用几分钟处理某个操作,则可用标签显示处理情况的信息。 4.1.1 常用属性 标签的属性很多,下面介绍几个常用的属性。 (1)Alignment属性 设置标签中文本的对齐方式。其使用语法如下: Object.Alignment[=值] 其中的“值”可以为0,1或2。0(默认值)表示左对齐;1表示右对齐;2表示居中。 (2)AutoSize属性 设置控件是否能够自动调整大小以显示所有的内容。其使用语法如下: Object.AutoSize[=True或False] (3)BackStyle属性 设置标签的背景样式。其使用语法如下: Object.BackStyle[=值] 其中的“值”可以为0或1。1(默认值)表示是不透明的;0表示是透明的。 (4)BorderStyle属性 设置标签的边框样式。其使用语法如下: Object.BorderStyle[=值] 其中的“值”可以为0或1。0(默认值)表示无边框;1表示单线边框。 (5)Caption属性 设置标签的文本内容。其使用语法如下: Object.Caption[=字符串] (6)WordWrap属性 设置标签的文本在显示时是否自动折行功能。其使用语法如下: Object.WordWrap[=True或False] 其中True表示具有自动折行功能;False(默认值)表示没有自动折行功能。 4.1.2 常用事件和方法 一般很少使用标签事件,标签的方法中常用的只有Move,其基本语法如下: Move left,top,width,height 其中left,top,width,height分别表示移动目的位置的坐标和大小。left为必要参数,其他三个为可选参数。 4.1.3 应用例子 目的:设计一个窗体说明标签的基本应用方法。 首先创建本章工程,在其中添加一个窗体,在该窗体中放置一个标签Label1。该标签的基本属性如下: Name Label1 Caption "中华人民共和国" BorderStyle 1

VB上位机串口通讯

'初始化代码 Private Sub Form_Load() '窗体被加载时产生 If MSComm1.PortOpen = True Then '串口查看是否打开,打开则关闭MsgBox "端口已经打开", 2 'MSComm1.PortOpen = False End If With MSComm1 .CommPort = 3 '设置串口3 .Settings = "9600,n,8,1" .InputLen = 0 '读取接收缓冲区所有字符 .InBufferSize = 1024 '设置接收缓冲区1024字节 .OutBufferSize = 512 '设置发送缓冲区512字节 .InputMode = comInputModeText. '采用文本传输 '.PortOpen = True '打开串口 .SThreshold = 0 '一发送数据就触发OnComm事件 .RThreshold = 1 '接收到一个字节就触发OnComm事件 .InBufferCount = 0 '清除发送缓冲区数据 .OutBufferCount = 0 '清除接收缓冲区数据 End With Text_send.Text = "" Text_recv.Text = "" Text_send_16.Text = "" End Sub '清空对话框数据 Sub Command3_Click(Index As Integer) Text_send.Text = "" Text_recv.Text = ""

Text_send_16.Text = "" End Sub '通讯端口选择 Private Sub Combo1_Click() If Combo1.Text = "com1" Then '通讯端口号设置 https://www.360docs.net/doc/6211946511.html,mPort = 1 'Text1 = 1 ElseIf Combo1.Text = "com2" Then https://www.360docs.net/doc/6211946511.html,mPort = 2 'Text1 = 2 ElseIf Combo1.Text = "com3" Then https://www.360docs.net/doc/6211946511.html,mPort = 3 'Text1 = 3 ElseIf Combo1.Text = "com4" Then https://www.360docs.net/doc/6211946511.html,mPort = 4 'Text1 = 4 Else https://www.360docs.net/doc/6211946511.html,mPort = 5 'Text1 = 5 End If End Sub Private Sub Combo2_Click() If Combo2.Text = "9600,e,8,1" Then MSComm1.Settings = "9600,e,8,1" ElseIf Combo2.Text = "9600,n,8,1" Then MSComm1.Settings = "9600,n,8,1" ElseIf Combo2.Text = "57600,n,8,1" Then MSComm1.Settings = "57600,n,8,1" End If End Sub '发送数据 Private Sub Command1_Click(Index As Integer) '判断是否选择了端口与通讯方式 If CBool(Combo1.Text = "请选择") Or CBool(Combo2.Text = "请选择") = 1 Then MsgBox "请设置端口号与通讯方式", 2 Exit Sub End If

VB上位机温度采集(含源程序)

VB程序 Option Explicit Dim NowX As Integer Dim MaxPlotNo As Long Dim PreV alue As Single Private Sub cmbCOM_Click() If cmbCOM.ListIndex + 1 = https://www.360docs.net/doc/6211946511.html,mPort Then Exit Sub Timer1.Enabled = False TimeDelay 100 If MSComm1.PortOpen Then MSComm1.PortOpen = False End If lblMsg.Caption = "已停止检测并关闭通讯端口" cmdOpenCOM.Enabled = True End Sub Private Sub cmdEnd_Click() End End Sub Private Sub cmdOpenCOM_Click() If cmbCOM.ListIndex >= 0 And cmbCOM.ListIndex <= 16 Then https://www.360docs.net/doc/6211946511.html,mPort = cmbCOM.ListIndex + 1 Else MsgBox "指定通信端口时发生错误!", vbCritical + vbOKOnly, "系统信息" Exit Sub End If On Error GoTo comErr MSComm1.Settings = "9600,n,8,1" MSComm1.PortOpen = True cmdOpenCOM.Enabled = False cmdStart.Enabled = True lblMsg.Caption = "可单击【开始检测】按钮,执行检测的工作。" Exit Sub comErr: MsgBox "打开通信端口时发生错误!请确定通信端口存在且正常。", vbCritical + vbOKOnly, "系统信息" End Sub

VB编写的简单的上位机

一个简单的用VB编写的上位机程序 自己想做一个简单上位机,却发现相关的资料很少,于是在做出来之后把自己的这样一个简单程序上传,给新入门的朋友一个借鉴学习的资料。 窗口布局 用到的MSComm控件的基本属性(必用) CommPort:设置或返回串口通信的串口号(COM口) 设置格式是:https://www.360docs.net/doc/6211946511.html,mPort[=value],其中object为控件名, 如MSComm1;value的合法值是整形的数据,例如1,2…… 比如https://www.360docs.net/doc/6211946511.html,mPort=1(默认值),表示我们将用COM1口进 行通信 COM口可以通过鼠标右击“我的电脑(计算机)”图标,在弹出的快捷菜单中选择“管理”,弹出如下图左边的对话框 左键点击“设备管理器”可以看到上图右边对话框 左键点击设备管理器可以看到如上图右边视图

其中的就是当前连接到计算机的可用串口了Settings:以字符串的形式设置或返回串口通信参数。 设置格式:https://www.360docs.net/doc/6211946511.html,mPort[=value]其中object为控件名,如MSComm1; Value需为一字符串,由四个设置值组成 其格式为:“波特率,奇偶校验,数据位,停止位” Portopen:设置或返回串口状态,若其已经打开,则返回TRUE,否则返回FALSE 设置格式:object.Portopen[=value]其中object为控件名,如 MSComm1;value为一逻辑值,若为TRUE,则打开,否则关闭注意:如果串口不是打开(关闭),而对它进行关闭(打开)将会出错RThreshold:该属性为一阀值。当接收缓冲区中字符数达到该值时,MSComm 控件设置Commevent属性为ComEvReceive,并产生OnComm事件。 用户可在OnComm事件处理程序中进行相应处理。若Rthreshold属 性设置为0,则不产生OnComm事件。例如用户希望接收缓冲区中 达到一个字符就接收一个字符,可将Rthreshold设置为1。这样接收 缓冲区中接收到一个字符,就产生一次OnComm事件。InputMode:设置或返回接收数据的类型。 设置格式:object.InputMode[=value],其中value的值有两个; comInputModeBinary表示以二进制方式接收数据,Input属性返回值为一字符串 comInputModeText表示以字符方式接收数据,Input属性返回值为一字数组 InputLen:设置或返回一次从接收缓冲区中读取字节数。 设置格式:object.InputLen[=value],value为一个整形数据;当其设 置为0时,表示一次读取接收缓冲区中的全部内容。这个属性在定字 节读取中非常有用 Input:从接收缓冲区中读取数据并清空该缓冲区,该属性设计时无效,运行时只读。 使用格式:str=object.Input,str为一字符串型变量或对象 Output:向发送缓冲区发送数据,该属性设计时无效,运行时只读。 使用格式:object.Output=value,value为一字符串型变量或任意类型的 数组 CommEvent:这是一个非常重要的属性。该属性设计时无效,运行时只读。一旦串口发生通信事件或产生错误,依据产生的事件和错误,MSComm 控件为CommEvent属性赋不同的代码,同时产生OnComm事件。 用户程序就可在OnComm事件处理程序中针对不同的代码,进行相 应的处理。 ComEvReceive接受到Rthreshold个字符。该事件将持续产生,直 到用Input属性从接受缓冲区中读取并删除字符。 其它的属性,需要时可以在网上查找相关资料(下面附几个网址)https://www.360docs.net/doc/6211946511.html,/view/84fb2949336c1eb91a375d91.html 这个里面讲的很详细的

vb中常用控件及其功能

4.1 标签 标签是VB中最简单的控件,用于显示字符串,通常显示的是文字说明信息。但不能编辑标签控件。 使用标签的情况很多,通常用标签来标注本身不具有Caption属性的控件。例如,可用标签为文本框、列表框、组合框等控件来添加描述性的标签。还可编写代码改变标签控件的显示文本以响应运行时的事件。例如,若应用程序需要用几分钟处理某个操作,则可用标签显示处理情况的信息。 4.1.1 常用属性 标签的属性很多,下面介绍几个常用的属性。 (1)Alignment属性 设置标签中文本的对齐方式。其使用语法如下: Object.Alignment[=值] 其中的“值”可以为0,1或2。0(默认值)表示左对齐;1表示右对齐;2表示居中。 (2)AutoSize属性 设置控件是否能够自动调整大小以显示所有的内容。其使用语法如下: Object.AutoSize[=True或False] (3)BackStyle属性 设置标签的背景样式。其使用语法如下: Object.BackStyle[=值] 其中的“值”可以为0或1。1(默认值)表示是不透明的;0表示是透明的。 (4)BorderStyle属性 设置标签的边框样式。其使用语法如下: Object.BorderStyle[=值] 其中的“值”可以为0或1。0(默认值)表示无边框;1表示单线边框。 (5)Caption属性 设置标签的文本内容。其使用语法如下: Object.Caption[=字符串] (6)WordWrap属性 设置标签的文本在显示时是否自动折行功能。其使用语法如下: Object.WordWrap[=True或False] 其中True表示具有自动折行功能;False(默认值)表示没有自动折行功能。 4.1.2 常用事件和方法 一般很少使用标签事件,标签的方法中常用的只有Move,其基本语法如下: Move left,top,width,height 其中left,top,width,height分别表示移动目的位置的坐标和大小。left为必要参数,其他

VB编写上位机实例

VB编写上位机实例 用VB编写上位机实例(转载) 用VB6.0编写第一个串口通信上位机程序 Visual Basic6.0是一个可视化窗口环境的编程软件,目前使用Visual Basic6.0可以快速简单编写单片机中的串口通信上位机程序。 下面我们以一个完整的通信试验为例子完成如何用Visual Basic6.0编写单片机串口通信程序。单片机学习 HPOO 打开安装好后的Visual Basic6.0主程序界面。选择“标准EXE”。如图1显示,建立Visual Basic的编程环境。 图1 在菜单的[工程]选项中选择[部件],如图2。把Visual Basic的串口通信控件Microsoft Comm control 6.0调入工作菜单。

图2 在打开[部件]对话框中,选择Microsoft Comm control 6.0的选项框,点击[确定]。图3 图3 可以在图示3中可以看通信控件Microsoft Comm control 6.0的文件是在 C:\WINNT\system32\MSCOMM32.OCX文件。 如果大家在首次调用通信控件Microsoft Comm control 6.0控件时无法在控件对话框中找到,请直接在系统目录中搜索名为MSCOMM32.OCX文件。然后通过浏览加入VB的工作界面中。添加完控件回到编程界面。如下图4。

图4 通过右边的菜单把一些必要的控件放在窗体中。然后点击窗体中的Timer控件按F4弹出属性窗口进行设置。其具体设置如下:调频FM发射话筒制作套件 Timer定时器控件设置属性,(通过按F4键可弹出此窗口)

arduino与vb编写的上位机通讯简单程序

上位机 一、回环测试 1.1VB程序 Option Explicit Private Sub Command1_Click() MSComm1.Output = Trim(TextSend.Text) End Sub Private Sub Command2_Click() Dim num As String num = Trim(MSComm1.Input) If Len(num) = 0 Then TextRecive.Text = "" Else TextRecive.Text = Trim(num) & TextRecive.Text End If End Sub Private Sub Command3_Click() MSComm1.PortOpen = False

End Sub Private Sub Form_Load() MSComm1.PortOpen = True End Sub VB窗口 1.2Arduino程序 char val; void setup() { int i=0; for (i=1;i<=13;i++) pinMode(i,OUTPUT);

Serial.begin(9600); } void loop() { val=Serial.read(); if(-1!=val) { delay(100); Serial.print(val); } } 或者另一程序也能满足要求String comdata = ""; void setup() { Serial.begin(9600); } void loop()

VB编写上位机(MSComm控件)

上位机可方便地实现与单片机之间进行信息传递交互,能够更加容易对机械手臂进行控制,实现操作可视化,更加直观,保存重要数据等功能。我们利用Visual Basic 6.0(以下简称VB)来编制上位机,VB是一种功能强大、简单易学的程序设计语言。它不但保留了原先Basic语言的全部功能,而且还增加了面向对象程序设计功能。它不仅可以方便快捷地编制适用于数据处理、多媒体等方面的程序,而且利用ActiveX控件MSComm还能十分方便地开发出使用计算机串口的计算机通信程序。本实验涉及控制六路舵机,所以需要编制上位机实现一次向下位机传输含有六个数据的数组,同时接受来自下位机的数组,并显示。 整个过程可分为如下几个过程: 一:VB是面向对象的语言,首先需要绘制程序界面 该上位机大致分为左边的功能部分与右边的可视化调节部分。 功能部分有端口选择,用以选择合适的端口进行串口通信,波特率选择,打开与关闭端口,动作设置等。 为了便于布局,应用frame控件建立区域,再将控件拖到frame区域中,对于功能相同的控件来说,建立控件组的方式会使编程避免重复繁琐,例如HScrollbar控件,先向frame区域内拖入一个HScrollbar控件,再复制,粘贴到frame 区域内部,则提示是否建立控件组,点击确定即可。这样便为后续编程带来很大的方便。 调节部分运用Hscrollbar控件来粗略调节度数,设定按钮与文本框配合来精确调节输出度数。用右列文本框实时读取舵机当前角度。用optionbutton控件来选择hscrollbar的步进精度,这里分为0.1度与1度两个不同的选项。由于一组optionbutton中在程序运行中只能有一个处于选中状态,根据本程序要求,每一横列的两个optionbutton为一组,这样就需要frame控件,在同一个frame区域

VB上位机与PLC通信

随着现代信息技术的发展以及计算机网络的广泛应用,计算机通信技术已经日趋成熟。作为传统的计算机通信方式的串行通信,由于具有线路简单、应用灵活、可靠性高等一系列优点长期以来获得了广泛的应用。计算机串行通信在数据财经、数据通信、故障检测、计算机远程监控等方面有广泛的实用价值,特别在Windows下的串口通信可以充分利用Windows 下的软件资源优势,实现多任务条件下对外部的数据传输、信息收集和处理。在本系统中,我们采用了性能/价格比较高的计算机构成厂级的监控工作站。在PLC与上位计算机之间采用RS-485和RS-232C标准通信接口进行通信。 在两级计算机控制系统中,最不稳定的环节就是上位机。为了保证系统的稳定性,避免因上位机的故障导致系统控制失灵,所有采集到的信号都反馈到PLC当中。上位机需要通过串行通信取得所需的数据信息,并通过串行通信将必要的控制信息和参数设置信息写入PLC 的数据存储区。因此,串行通信作为上位机和下位机联系的唯一方式,在整个系统中具有非常重要的作用。 1.1上位机与PLC间的串行通信 计算机与计算机或计算机与外部设备之间的数据传输和交换的方式主要有串行通信和并行通信两种方式,其中串行通信指的是数据逐位传输的方式。由于串行通信方式具有使用线路少、成本低,特别是在远程传输时,避免了多条线路特性的不一致而被广泛采用。 1.1.1串行通信 串行通信方式又可分为两种:同步串行通信方式和异步串行通信方式。 1.同步串行通信方式:同步串行通信是以数据块(字符块)为信息单位传送,每帧信息可以包含很多字符。同步通信要求通信双方以相同的速率进行,而且要准证确协调,通常通过共

VB6.0基本控件的属性学习资料

VB基本控件的属性,方法经及事件 VB基本控件的属性,方法经及事件 VB基本控件的属性,方法经及事件 所有控件都具有的属性: 1、Name: 表示在代码中用来标识一个控件的名字。 2、Enabled: 表示一个控件是否可以响应一个事件,即该控件可不可用。 值为true: 可以响应;值为false: 不可以看见。 3、Visible: 表示一个控件是否可见。值为true:可以看见;值为false: 不可以看见。所有控件都有具有的事件: 1、KeyDown : 当用户按下键盘上一个键时发生的。 2、KeyUp : 在用户松开键盘上按下的键时发生的。 3、KeyPress : 在Key Down和Key Up事件之间发生。 4、MouseDown : 在鼠标被按下时触发的。 5、MouseUp :在用户松开鼠标键时发生的。 6、Click :在用户单击鼠标左键时发生的。 7、DblClick :在用户双击鼠标时发生的。 一、窗体(Form) 属性: 1、Caption: 表示窗体标题栏的文字。 2、BorderStyle: 一般情况下为默认值,若更改为下列值: 1)值为0:没有窗体标题栏 2)值为1:窗体运行之后不能改变大小 3、WindowState: 设置窗体的大小。 3)值为0:窗体正常大小 4)值为1:窗体最小化 值为2:窗体最大化 4、BackColor: 表示窗体的背景颜色 事件: 1、Initialize(初始化事件): 在窗体加载和显示之前触发,这个事件只触一次。 2、Load(加载事件): 用来完成窗体显示之前需要完成的动作。 3、Activate/Deactivate (激活/非激活事件):是用户在同一个应用程序的两个或多个窗体之间移动时触发的。 4、QueryUnload(条件卸载事件): 决定窗体是如何关闭的。 触发QueryUnload事件时Unload 的参数和因素有: 1)VbFormControlMenu值为0 :选中窗体控件菜单中的Close命令。 2)VbFormCode值为1 :从代码中调用Unload 语句。 3)VbAppWindows值为2 :终止当前的Windows操作系统。 4)VbFormMDIForm值为4 :因为终止MDI父窗体而导致MDI子窗体的终止。 5、Terminate(终止事件):在窗体的所有实例从内存中清除时发生,只触发一次。方法: 1、Load:加载窗体,但不在屏幕上显示 2、Unload:卸载窗体,既从屏幕上也从内存中清除窗体。 3、Show:加载窗体并在屏幕上显示窗体。Show分为:

VB上位机与单片机

VB 上位机与单片机 转速测量系统 通过单片机采集转速数据,通过USB口发送到PC,并产生曲线图。 单片机程序: //---------------------串口初始化 ---------------------------- voidinitSerial() { TMOD=0x20; //定时器1置为方式2 TH1=0xfd; TL1=0xfd; //设置波特率位9600 SCON=0x50; //设定串行口工作方式 PCON&=0x00; //波特率不倍增

TR1=1; REN=1; SM0=0; SM1=1; EA=1; ES=1; } //---------------------------发送程序 --------------------------------------------- voidsend_char(void) //传送十六位的蝯转速数据,低位在前 { unsignedi=0; while(i;199Then '接收个数判断 Callrenew

'接收完毕 EndIf '读取仪表返回数据串 https://www.360docs.net/doc/6211946511.html,mEvent CasecomEvReceive Inbyte=MSComm1.Input '接收转速数据 Fori=LBound(Inbyte)ToUBound(Inbyte) '把接收的数据安十六进制格式放入缓冲中 buffer=buffer+Hex(Inbyte(i))+Chr(32) Nexti EndSelect

'获取十进制测量数据 IfLen(Trim(Mid(buffer,1,2)))=1Then datazhuansu(num)=Val("&H"&Mid(buffer,3, 3)&Str("0")&Mid(buffer,1,2))*0.0625 Else datazhuansu(num)=Val("&H"&Mid(buffer,3, 3)&Mid(buffer,1,2))*0.0625 EndIf '获取十六进制测量数据 IfLen(Trim(Mid(buffer,1,2)))=1Then datasu2a=Str("0")&Trim(Mid(buffer,1,2))

用VB编写上位机实例

标签:无标签 用VB编写上位机实例 16:14:22 UTC+0800Sun Apr 1 2007 用编写第一个串口通信上位机程序 Visual 是一个可视化窗口环境的编程软件,目前使用Visual 可以快速简单编写单片机中的串口通信上位机程序。 下面我们以一个完整的通信试验为例子完成如何用Visual 编写单片机串口通信程序。 打开安装好后的Visual 主程序界面。选择“标准EXE”。如图1显示,建立 Visual Basic的编程环境。 图1 在菜单的[工程]选项中选择[部件],如图2。把Visual Basic的串口通信控件 Microsoft Comm control 调入工作菜单。

图2 在打开[部件]对话框中,选择Microsoft Comm control 的选项框,点击[确定]。 图3

图3 可以在图示3中可以看通信控件Microsoft Comm control 的文件是在 C:\WINNT\system32\文件。 如果大家在首次调用通信控件Microsoft Comm control 控件时无法在控件对话框中找到,请直接在系统目录中搜索名为文件。然后通过浏览加入VB的工作界面中。添加完控件回到编程界面。如下图4。 图4 通过右边的菜单把一些必要的控件放在窗体中。然后点击窗体中的Timer控件按F4弹出属性窗口进行设置。其具体设置如下:

Timer定时器控件设置属性,(通过按F4键可弹出此窗口) Mscomm通信控件参数属性设置(通过单击控件的右键属性可弹出此窗口)本文用到的其他控件:CommandButton控件和TextBox控件按默认属性设置不变。 以上设置完成,回到编程窗体区中,任意双击。会显示Visual Basic的程序窗体的Load事件程序。在代码窗口中输入: Private Sub Form_Load() = True '窗体的加载时,就打开通信端口,通信端口的参数也可以在此指定 = '窗体的加载时,同时定时器控件事件 End Sub

VB控件treeview用法详解

VB TreeView控件使用详解 (2012-06-16 15:08:16) 转载▼ 分类:VB编程笔记 标签: it 第一小时:学习直接用代码将数据填充到树控件中。 为什么要先学习直接用代码将数据填充到树控件中?因为这种方法是最简单的,代码也最容易理解,学习树控件,先将这个学会,已经掌握了一半,所以先不要急着想怎么将表中的数据填充到树控件中,在第一小时里,树控件和表完全没有关系。 目的:我们要在树控件中建立如下的一个3层级关系 水果 | |__苹果 | |__红富士 | |__国光 | |__葡萄 |__红提子 |__青提子 解释:水果包含2种,一种是苹果,一种是葡萄,苹果又包含2种,一种是红富士,一种是国光,葡萄也如此。 在这里:“爷”是水果,“父”是苹果,葡萄,“子”是红富士,国光,红提子,青提子。概括如下: 爷(只能有一个):水果 父(这里有2个):父1:苹果;父2:葡萄 子(这里有4个):子1:红富士(父1苹果的子);子2:国光(父1苹果的子);子3:红提子(父2葡萄的子);子4:青提子(父2葡萄的子) 1、新建一个窗体,在窗体上放置两个控件,一个是Treeview,一个是Imagelist 如何找到这两个控件? Treeview控件在“工具箱”的榔头加扳手图标(其他控件)中选“Microsoft Treeview Control,Version 6.0" Imagelist控件在“工具箱”的榔头加扳手图标(其他控件)中选“Microsoft Imagelist Control,Version 6.0" Treeview控件大家都明白干什么用的,Imagelist控件是干什么用呢?原来这个控件是放图标用的,如果你想在树控件中显示图标的,这个图标都将储存在ImageList控件中。 2、设置这两个控件的属性 首先要讲清楚控件的属性设置有2种,一种是设置这个控件在ACCESS中的属性,比如名称等。一种是设置这个控件本身的属性。要设置这个控件在ACCESS中的属性,选中控件后按鼠标右键选“属性”就可以了。跟我们平时设置文本框什么的一样。要设置这个控件本身

用VB编写上位机实例

标签:无标签 VB编写上位机实例 用VB编写上位机实例 16:14:22 UTC+0800Sun Apr 1 2007 用VB6.0编写第一个串口通信上位机程序 Visual Basic6.0是一个可视化窗口环境的编程软件,目前使用Visual Basic6.0可以快速简单编写单片机中的串口通信上位机程序。电子制作HPOO 下面我们以一个完整的通信试验为例子完成如何用Visual Basic6.0编写单片机串口通信程序。 打开安装好后的Visual Basic6.0主程序界面。选择“标准EXE”。如图1显示, 建立Visual Basic的编程环境。 图1 在菜单的[工程]选项中选择[部件],如图2。把Visual Basic的串口通信控件 Microsoft Comm control 6.0调入工作菜单。

图2 在打开[部件]对话框中,选择Microsoft Comm control 6.0的选项框,点击[确定]。 图3

图3 可以在图示3中可以看通信控件Microsoft Comm control 6.0的文件是在C:\WINNT\system32\MSCOMM32.OCX文件。 如果大家在首次调用通信控件Microsoft Comm control 6.0控件时无法在控件对话框中找到,请直接在系统目录中搜索名为MSCOMM32.OCX文件。然后通过浏览加入VB的工作界面中。添加完控件回到编程界面。如下图4。 图4 通过右边的菜单把一些必要的控件放在窗体中。然后点击窗体中的Timer控件按F4弹出属性窗口进行设置。其具体设置如下:

Timer定时器控件设置属性,(通过按F4键可弹出此窗口) Mscomm通信控件参数属性设置(通过单击控件的右键属性可弹出此窗口)本文用到的其他控件:CommandButton控件和TextBox控件按默认属性设置不变。单片机编程器HPOO 以上设置完成,回到编程窗体区中,任意双击。会显示Visual Basic的程序窗体的Load事件程序。在代码窗口中输入:单片机编程器HPOO Private Sub Form_Load() MSComm1.PortOpen = True '窗体的加载时,就打开通信端口,通信端口的参数也可以在此指定 Timer1.Enabled = Timer1.Enabled '窗体的加载时,同时定时器控件事件 End Sub

相关文档
最新文档