上位机制作过程单片机vb上位机超简单

合集下载

VB编写的简单的上位机

VB编写的简单的上位机

一个简单的用VB编写的上位机程序自己想做一个简单上位机,却发现相关的资料很少,于是在做出来之后把自己的这样一个简单程序上传,给新入门的朋友一个借鉴学习的资料。

窗口布局用到的MSComm控件的基本属性(必用)CommPort:设置或返回串口通信的串口号(COM口)设置格式是:mPort[=value],其中object为控件名,如MSComm1;value的合法值是整形的数据,例如1,2……比如mPort=1(默认值),表示我们将用COM1口进行通信COM口可以通过鼠标右击“我的电脑(计算机)”图标,在弹出的快捷菜单中选择“管理”,弹出如下图左边的对话框左键点击“设备管理器”可以看到上图右边对话框左键点击设备管理器可以看到如上图右边视图其中的就是当前连接到计算机的可用串口了Settings:以字符串的形式设置或返回串口通信参数。

设置格式: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事件。

自己编写的VB上位机控制舵机

自己编写的VB上位机控制舵机

(1)上图是自己编写的上位机界面大致分为功能部分有端口选择,用以选择合适的端口进行串口通信,波特率选择,打开与关闭端口,小车控制部分是对车体进行准确有效的控制,用文本框来显示VB与单片机之间的通信内容。

舵机控制部分,通过设定角度按键,滑动滚动条把值赋给当前角度文本框,达到对舵机的有效控制。

(2)为了便于布局,应用frame 控件建立区域,用右列文本框实时读取舵机当前角度。

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

指示灯部分则用picturebox控件添加一个蓝色的图片用来显示端口的开关状态。

(3)每个MSComm控件对应于一个串行端口。

使用多个串行口时,要使用多个MSComm控件。

(4)为随时判断端口是否开启,并用黑红等来显示当前状态,运用timer 控件,将interval 设置为100,双击控件并输入如下代码。

则程序每隔100ms执行一次下面的程序。

(5)同时如果在文本框中输入0~180之间的度数,点击“设定”按钮,需要将其度数对应的数值赋给HScroll.value,然后发给单片机进行处理。

(6)由于PC与单片机之间的数据传输要以字节型数据传输,而字节数据的范围为0~256,所以数据设置为50~200传送到单片机,然后对字符进行数字转化,最后转化为我们所需要的舵机识别参数。

Private Sub Combo1_Click()If Combo1.Text = "COM1" ThenmPort = 1ElseIf Combo1.Text = "COM2" ThenmPort = 2ElseIf Combo1.Text = "COM3" ThenmPort = 3ElsemPort = 4End IfEnd SubPrivate Sub Combo2_Click()If Combo2.Text = "9600" ThenMSComm1.Settings = "9600,N,8,1"ElseIf Combo2.Text = "115200" ThenMSComm1.Settings = "115200,N,8,1"End IfEnd SubPrivate Sub Command1_Click()If MSComm1.PortOpen = False ThenMSComm1.PortOpen = True '打开串口End IfEnd SubPrivate Sub Command10_Click()If Text6.Text = "" ThenMsgBox "未输入数值", 5, "警告" '出现警告的提示框,提示"未输入数值"ElseIf Text6.Text < 0 Or Text6.Text > 180 ThenMsgBox "0-180为有效数值", 5, "警告" '出现警告的提示框,提示"0-180为有效数值"ElseHScroll3.Value = Format((Text6.Text + 60) * 5 / 6, 0)End IfEnd SubPrivate Sub Command11_Click()If Text8.Text = "" ThenMsgBox "未输入数值", 5, "警告" '出现警告的提示框,提示"未输入数值"ElseIf Text8.Text < 0 Or Text8.Text > 180 ThenMsgBox "0-180为有效数值", 5, "警告" '出现警告的提示框,提示"0-180为有效数值"ElseHScroll4.Value = Format((Text8.Text + 60) * 5 / 6, 0)End IfEnd SubPrivate Sub Command12_Click()Text1.Text = "" '清空回收区End SubPrivate Sub Command13_Click()If Text10.Text = "" ThenMsgBox "未输入数值", 5, "警告" '出现警告的提示框,提示"未输入数值"ElseIf Text10.Text < 0 Or Text10.Text > 180 ThenMsgBox "0-180为有效数值", 5, "警告" '出现警告的提示框,提示"0-180为有效数值"ElseHScroll5.Value = Format((Text10.Text + 60) * 5 / 6, 0)End IfEnd SubPrivate Sub Command14_Click()If Text12.Text = "" ThenMsgBox "未输入数值", 5, "警告" '出现警告的提示框,提示"未输入数值"ElseIf Text12.Text < 0 Or Text12.Text > 180 ThenMsgBox "0-180为有效数值", 5, "警告" '出现警告的提示框,提示"0-180为有效数值"ElseHScroll6.Value = Format((Text12.Text + 60) * 5 / 6, 0)End IfEnd SubPrivate Sub Command2_Click()If Text2.Text = "" ThenMsgBox "未输入数值", 5, "警告" '出现警告的提示框,提示"未输入数值"ElseIf Text2.Text < 0 Or Text2.Text > 180 ThenMsgBox "0-180为有效数值", 5, "警告" '出现警告的提示框,提示"0-180为有效数值"ElseHScroll1.Value = Format((Text2.Text + 60) * 5 / 6, 0)End IfEnd SubPrivate Sub Command3_Click()If MSComm1.PortOpen = True ThenMSComm1.PortOpen = False '关闭串口End IfEnd SubPrivate Sub Command4_Click()EndEnd SubPrivate Sub Command9_Click()If Text4.Text = "" ThenMsgBox "未输入数值", 5, "警告" '出现警告的提示框,提示"未输入数值"ElseIf Text4.Text < 0 Or Text4.Text > 180 ThenMsgBox "0-180为有效数值", 5, "警告" '出现警告的提示框,提示"0-180为有效数值"ElseHScroll2.Value = Format((Text4.Text + 60) * 5 / 6, 0)End IfEnd SubPrivate Sub Form_Load()MSComm1.RThreshold = 1MSComm1.SThreshold = 1MSComm1.InputLen = 0MSComm1.InputMode = comInputModeTextMSComm1.InBufferCount = 0Timer1.Enabled = Timer1.Enabled '窗体的加载时,同时定时器控件事件Timer2.Enabled = Timer2.EnabledEnd SubPrivate Sub HScroll1_Change()MSComm1.Output = "1"’发送1表示控制舵机1Dim r1 As StringText3.Text = Format(HScroll1.Value * 1.2 - 60, "0") '显示当前角度MSComm1.OutBufferCount = 0 '...清空输出寄存器r1 = HScroll1.ValueMSComm1.Output = r1End SubPrivate Sub HScroll2_Change()MSComm1.Output = "2" ’发送2表示控制舵机2Dim r2 As StringText5.Text = Format(HScroll2.Value * 1.2 - 60, "0")MSComm1.OutBufferCount = 0 '...清空输出寄存器r2 = HScroll2.ValueMSComm1.Output = r2End SubPrivate Sub HScroll3_Change()MSComm1.Output = "3" ’发送3表示控制舵机3Dim r3 As StringText7.Text = Format(HScroll3.Value * 1.2 - 60, "0") '显示当前角度MSComm1.OutBufferCount = 0 '...清空输出寄存器r3 = HScroll3.ValueMSComm1.Output = r3End SubPrivate Sub HScroll4_Change() ’发送4表示控制舵机4 MSComm1.Output = "4"Dim r4 As StringText9.Text = Format(HScroll4.Value * 1.2 - 60, "0") '显示当前角度MSComm1.OutBufferCount = 0 '...清空输出寄存器r4 = HScroll4.ValueMSComm1.Output = r4End SubPrivate Sub HScroll5_Change()MSComm1.Output = "5" ’发送5表示控制舵机5Dim r5 As StringText11.Text = Format(HScroll5.Value * 1.2 - 60, "0") '显示当前角度MSComm1.OutBufferCount = 0 '...清空输出寄存器r5 = HScroll5.ValueMSComm1.Output = r5End SubPrivate Sub HScroll6_Change()MSComm1.Out put = "6" ’发送6表示控制舵机6Dim r6 As StringText13.Text = Format(HScroll6.Value * 1.2 - 60, "0") '显示当前角度MSComm1.OutBufferCount = 0 '...清空输出寄存器r6 = HScroll6.ValueMSComm1.Output = r6End SubPrivate Sub Timer1_Timer()If MSComm1.PortOpen = ture ThenPicture1.Visible = FalseElsePicture1.Visible = TrueEnd IfEnd SubPrivate Sub Timer2_Timer()Dim inbuff As StringDim i As IntegerIf MSComm1.InBufferCount > 0 Then '程序检查输入缓冲区中是否有数据,若有数据inbuff = MSComm1.InputText1.Text = Text1.Text + inbuffMSComm1.InBufferCount = 0 '清空缓冲区End IfEnd Sub。

VB实现的上位机数字电压表

VB实现的上位机数字电压表

《综合设计性实验》论文基于PC 的智能数字电压表设计 信息与通信学院 电子信息工程0901130443 农 聪 王守华 2012-10-31 题 目: 院 系:专 业: 学 号:姓 名:指导教师:设计日期:摘要在实际的数据采集系统中,常常采用PC机作为系统的上位机,控制整个采集过程,完成命令的发送接收和数据的存储处理,而下位机是以单片机为核心的现场数据采集装置,完成现场数据的采集和上传。

上下位机之间通过RS232总线连接,实现数据和命令的传送与接收。

上位机中,采用在Windows环境下,通过VB中的MSComm控件实现软件编程;下位机则采用了可以直接控制硬件整个系统将单片机小巧、灵活、可靠的优点结合,应用了二者的长处,从而实现了微机与单片机的通信。

以下主要介绍PC机通信程序设计部分,即上位机的操作显示界面采用VB 进行可视化编程。

一、具体步骤过程1、建立项目:打开VB,创建窗体,在默认窗体Form1上添加控件,以构建用户界面。

2、在项目中插入MSComm控件:在窗体上添加界面的控件,在Form1窗体上添加以下控件:标签Label11:用于显示文字“测量电压”;标签Labe14:用于显示文字“基于PC的数字电压表设计”;标签Labe16:用于显示文字“制作人:······”;标签Labe17:用于显示文字“量程:······”;标签Labe18:用于显示文字“精度:······”;标签Labe19:用于显示文字“误差:······”;文本框Text1:用于显示计算结果(平方数)。

命令按钮Command1:用于计算输入数的平方,并把结果显示在文本框Text1中;命令按钮Command2:用于结束应用程序的运行;Frame1:用于串口设定显示;Combo1:用于选择串口;Combo3:用于波特率选择。

自己用VB编制的上位机(MSComm控件)

自己用VB编制的上位机(MSComm控件)

自己用VB编制的上位机(MSComm控件)本人初学者,许多地方显得粗糙笨拙,但总算是成功了,不过自我感受VB真的很简单,我大致学了两三个星期就可以了。

本文只同向我一样的初学者分享一下经验,毕竟咱不是专业的。

下面开始。

上位机可方便地实现与单片机之间进行信息传递交互,能够更加容易对机械手臂进行控制,实现操作可视化,更加直观,保存重要数据等功能。

我们利用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默认为一组。

写上位机的方法

写上位机的方法

写上位机的方法
上位机是指可以直接发出操控命令的计算机,一般是PC/host computer/master computer/upper computer,屏幕上显示各种信号变化(液压,水位,温度等)。

下位机是直接控制设备获取设备状况的计算机,一般是PLC/单片机之类的。

上位机发出的命令首先给下位机,下位机再根据此命令解释成相应时序信号直接控制相应设备。

下位机不时读取设备状态数据(一般为模拟量),转换成数字信号反馈给上位机。

上下位机都需要编程,都有专门的开发系统。

编写上位机程序通常涉及以下步骤:
1. 确定需求:明确上位机程序需要实现的功能和与下位机的通信协议。

2. 选择开发环境:选择适合的编程语言和开发环境,如Visual Studio、Qt、Python 等。

3. 设计用户界面:使用选定的开发环境创建上位机程序的用户界面,包括按钮、文本框、图表等。

4. 建立通信连接:使用适当的通信协议和接口与下位机进行连接,如串口、以太网、USB 等。

5. 数据处理和显示:接收下位机发送的数据,并进行处理和显示,例如将温度数据显示在图表上。

6. 错误处理:编写错误处理代码,以应对通信错误或数据异常情况。

7. 测试和调试:进行全面的测试,确保上位机程序正常工作,与下位机的通信稳定。

8. 发布和维护:完成开发后,将程序发布给用户,并根据需要进行维护和更新。

基于VB的多路数据采集系统上位机软件设计(精)

基于VB的多路数据采集系统上位机软件设计(精)

图1烘炉温度多路数据采集系统上位机软件界面基于VB 的多路数据采集系统上位机软件设计张瑜,韩玉杰,闵昆龙(东北林业大学机电工程学院,黑龙江哈尔滨150040摘要:采用Visual Basic 6.0设计多路数据采集系统的上位机软件,实现对由单片机组成的测量系统数据的采集、传输、保存、分析、绘制曲线图以及数据和曲线图的打印。

文中以烘炉内多点温度数据采集系统设计为例说明用于串口通信上、下位机的软件设计,以及VB 中mscomm ,msflexgrid 等控件的用法。

关键词:多路数据采集;上位机;mscomm 控件;msflexgrid 控件中图分类号:TP311文献标识码:A文章编号:1001-4462(200701-0029-02Software Design in Host Computer of Multi-data AcquisitionSystem Based on VBZHANG Yu,HAN Yu-jie,MIN Kun-long(College of Machinery and Electricity of Northeast ForestryUniversity ,Heilongjiang Harbin 150040,ChinaAbstract :This article mainly explained how to design software for host computer of multi-data acquisition system based on visual basic 6.0.Also it displaied that the whole single-chip system how to acquire,communicate,save and analyze the data,how to draw graph,and how to print data and graph.The test taked the oven ’s multi-temperature data acquisition system for example,expounded the design of software of host and slave computer that using for serial communication,and also explained the mscomm control and msflexgrid control of visual basic.Key words :multi-data acquisition;host computer;mscomm control;msflexgrid control微软公司的visual basic 6.0是windows 应用程序开发工具,是目前应用最为广泛、易学易用的面向对象的开发工具,并且为用户提供了大量的控件。

从零编写上位机

从零编写上位机

好了既然安装好了,也知道labview是用来干什么,下面就给几个基础教程吧!这都是入门级的。

LabVIEW从入门到频率测量系统的开发.pdf《LabVIEW 8.20程序设计从入门到精通》课件.rar再介绍一个labview学习的论坛吧,我上面介绍的两个资料在这里都可以找到。

/bbs/index.php既然是上位机,当然离不开串口通信,不了解串口是不行的,下面再发一个资料串口通信.pdf前面的你大概只用花一天时间就可以解决。

在具备计算机软件环境和基础知识后就可以动手编写程序了。

先把我做的串口接收例子发布出来,大家看看吧,很简单的。

还有就是单片机里的串口驱动和printp函数,这个在论坛里有下载,自己找吧,我不想发重复的东西。

串口接收示例.rar串口收发示例.rar到现在为止,假设你已经成功安装了软件,包括驱动和破解,而且看完了labview的基础知识和串口的基础知识。

手头上也有我给你们的串口例子,相当简单。

还有就是DG128上的printp。

于是就可以在上位机上显示单片机发来的数据了。

下一篇再详细讲述吧!串口程序初步详解在第一篇中,我已经给大家介绍了labview的用途,主要是用于虚拟仪器,数据采集和控制。

labview的安装,破解以及其驱动的安装,其中大家可能会遇到点麻烦,如果电脑技术可以的话,很轻松的就能解决,不过在网上也能搜到解决办法。

还有就是介绍两个资料,这是基础,如果不知道的话,下面很难进行。

建议你们把那个PPT里面的小练习做一下,可以很快的熟悉labview。

同时labview目录下的帮助文档也写得非常好,在\National Instruments\LabVIEW 8.5\manuals里面,尤其是LV_Getting_Started.pdf这个,按照它的步骤做个示波器,然后你就对G编程有个大概的了解的。

有了串口的基本知识,和G编程基本了解,下面就详细讲解一下我在上一篇文章中发给大家的串口示例。

VB写上位机

VB写上位机

一.打开Visual Basic6.0并设置上位机大小打开Visual Basic6.0,在出现的界面中用鼠标单击,然后点击打开,出现图1-1,图 1-1单击最大化后,在“属性窗口”中找到“Height”、“ScaleHeight”、“ScaleWidth”、“top”、“Width”,并分别填入“9690”“8910”“9390”“360”“9480”。

二.代码编辑器的基本代码输入在界面内找到“视图”,单击,在下拉选项中选择“代码窗口”,单击后出现图1-2,此图就是代码编辑器,在这里填写上位机的代码。

接下来在图1-2中填入如下代码:Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByV al hwnd As Long, ByV al lpOperation As String, ByV al lpFile As String, ByV al lpParameters As String, ByV al lpDirectory As String, ByV al nShowCmd As Long) As LongPublic data As SinglePublic temp As SinglePublic flag As BytePrivate Sub Form_Load()Form.WindowState = 0If MSComm1.PortOpen = True Then MSComm1.PortOpen = FalseCombo1.AddItem "COM1"Combo1.AddItem "COM2"Combo1.AddItem "COM3"Combo1.AddItem "COM4"MSComm1.InBufferSize = 8MSComm1.OutBufferSize = 2MSComm1.RThreshold = 4MSComm1.SThreshold = 1MSComm1.InputLen = 0MSComm1.InputMode = comInputModeTextMSComm1.InBufferCount = 0End Sub图1-2三.建立菜单项在“工具”菜单中选择“菜单编辑器”选项,出现图1-3.1.在图1-3中的“标题框”和“名称框”分别填入“文件”、“File”,然后单击“下一个”。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

比如上位机控制在工厂中的应用
首先打开vb软件
? 弹出新建工程对话框,点击标准exe
? 出现如下
设置属性窗口
? caption:标题 ? font:字体大小和风格
? 新建两个按钮,改一下caption:打开串口 和发送数据如下图所示
点击左边按钮框新建一个 text1,如下图所示
添加串口控件,在工程-部件中找到Microsoft comm control 6.0,如下图所示,点击打钩,并确定。
在右边控件框出现一个电话的控件,并把下图箭头所示的控 件添加到窗口中。
对代码进行编写
? 首先,双击窗口进入代码编辑框,如下图 所示:
? Private Sub Form_Load() ? 这个函数是窗口运行时初始化一些控件。
? Private Sub Command1_Click() ? 这个是点击按钮1所触发的事件代码函数入
口。
? Private Sub Command2_Click() ? 这个是点击按钮2所触发的事件代码函机控制例程
? 点阵控制
? 1602控制
上位机用途
? 上位机是一台可以发出特定操控命令的计 算机,通过操作预先设定好的命令,将命 令传递给下位机,通过下位机来控制设备 完成各项操作(应用最多的地方如:工业、 水利、供电部门、交通等方面)。上位机 都有特定的编程,有专门的开发系统,或 以上是已经规定好任务,只能按特定的任 务进行操作。简单说上位机就是命令的下 达者,而下位机则是命令的执行者。
相关文档
最新文档