VC 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编制的上位机(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默认为一组。

vc++上位机程序

vc++上位机程序

VC++编写简单串口上位机程序2010年4月13日10:23:40串口通信,MCU跟PC通信经常用到的一种通信方式,做界面、写上位机程序的编程语言、编译环境等不少,VB、C#、LABVIEW等等,我会的语言很少,C 语言用得比较多,但是还没有找到如何用C语言来写串口通信上位机程序的资料,在图书管理找到了用VC++编写串口上位机的资料,参考书籍,用自己相当蹩脚的C++写出了一个简单的串口上位机程序,分享一下,体验一下单片机和PC通信的乐趣。

编译环境:VC++6.0操作系统:VMWare虚拟出来的Windows XP程序实现功能:1、PC初始化COM1口,使用n81方式,波特率57600与单片机通信。

PC的COM口编号可以通过如下方式修改:当然也可以通过上位机软件编写,通过按钮来选择COM端口号,但是此次仅仅是简单的例程,就没有弄那么复杂了。

COM1口可用的话,会提示串口初始化完毕。

否则会提示串口已经打开Port already open,表示串口已经打开,被占用了。

2、点击开始转换,串口会向单片机发送0xaa,单片机串口中断接收到0xaa后启动ADC转换一次,并把转换结果ADCL、ADCH共两个字节的结果发送至PC,PC进行数值转换后在窗口里显示。

(见文章末尾图)3、为防止串口被一只占用,点击关闭串口可以关闭COM1,供其它程序使用,点击后按钮变为打开串口,点击可重新打开COM1。

程序的编写:1、打开VC++6.0建立基于对话框的MFC应用程序Test,2、在项目中插入MSComm控件:工程->增加到工程->Components and Controls->双击Registered ActiveX Controls->选择Microsoft Communications Control, version 6.0->Insert,按默认值添加,你会发现多了个电话图标,这是增加后串口通信控件。

自制VB上位机串口监控简单程序

自制VB上位机串口监控简单程序
三、
将该控件拖到Form1里,然后按照界面的要求把要到得控件都添加到Form1里去,然后按照自己的想法去改每个控件的属性。(不一定非按我这个,你自己怎么想的就怎么定义即可,这个名字什么的其实是很灵活的)(NAME属性是在界面上看不到的,在写程序的时候会用到)
四.
写程序,双击每一个控件都会出来对应的程序。编好之后生成.EXE文件即可。就能和你的单片机进行简单的通讯啦!(注:你在上位机里设置的波特率是要和你的单片机里的下位机程序中的波特率是匹配的要不也是没有办法通讯的。)
如果没有我这给你提供下载。
下载完之后就是注册(我也不明白为什么,谁看了MSDN上的文档谁知道,我没看)
注册步骤:
一、开始------>运行----->输入 Regsvr32 MSComm32.ocx(注:我这里写的并不是我看的原始的文件上的注册表达式 原始式是 Regsvr32 C:\winnt\system32\MSComm32.ocx我试过之后不行才改到现在的表达式)这一步完了之后你已经有MSComm控件选项了,但是你还不能用还需要再次注册下(为什么?我也不知道)
自制VB上位机串口监控简单程序(内详)
前两天说要做一个VB的上位机程序,今天算是做出来最基础的部分了,趁有时间,先拿出来和大家分享下。自我感觉很有用,并且附件里的.exe和程序都可以直接用是本人调试过的,没有任何问题。
此上位机程序要实现的功能就是和51单片机进行简单的串口接收发送。
步骤:
1、装上VB的软件(废话)我用的是VB6.0的软件
2、装完之后看看有没有要的MSComm控件。如果没有还要下哦!
3、就是编写相应的上位机下位机程序啦。(我用VB编的感觉做这个还是很方便的前后用了两天半左右吧中间还又返回去重新看了串口编程的部分)

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

基于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安装成功之后,安装程序自动在【开始】菜单中建立Visual Basic 6.0的程序组和程序项。

vb和vc混合编程实例(ocx和dll)

vb和vc混合编程实例(ocx和dll)

vb和vc混合编程实例(ocx和dll)(转载)前⾔:由于以前⽤vb和vc++封装过dll和ocx⽂件. 或者在⽹上下的类;若重新编写和封装会很费时和费⼒. 如vb简单易⽤,对数据库操作通⽤类进⾏封装.现在vc中可以引⽤之。

另外由于vc执⾏效率⾼,某些较复杂算法或低层处理可在vc中进⾏封装. 这样经常要求混⽤.下⾯是实际中个例⼦记,分vb6.0,vc++各⾃创建和调⽤四个部分1: vb能封装ocx和active dll⽂件. 注意 active dll是⼀种动态,在被调⽤环境中不仅引⽤这个dll,⽽且还要引⽤这个dll所引⽤的其它⽂件,如 DBCommom.dll 是个数据库操作类封装,它引⽤了Ado 接⼝).其创建略,具体引⽤见后.2.vc中做dll时注意要提供接⼝,供其它程式调⽤.a>创建 win32 Dynamic-Link Library 如项⽬CMyTestDllb>加⼊成员function(在 .h中申明 .cpp中实现)//取电脑名称int CMyTestDll::GetComputerNameE(LPTSTR computer_name){DWORD buf=255;LPTSTR strname=new char[buf];if(GetComputerName(strname,&buf)!=0){strcpy(computer_name,strname);return 1;}return 0;}//计算两个值之和int CMyTestDll::Sum(int a, int b){return(a+b);}c.>⼀定要加上CMyTestDll.def ⽂件,并在在其中定义导出各个function及参数,否则不能被调⽤EXPORTSGetComputerNameE @1;Sum @2; @3;d.>编译成dll便可以.最好每个function定义int为返回值.3.vb引⽤vc中dll 和普通API函数⼀样.(vb的long对应 vc的int)'引⽤Private Declare Function GetComputerNameE Lib "⽬录\MyTestDll.dll" (ByVal strName As String) As LongPrivate Declare Function Sum Lib "⽬录\\MyTestDll.dll" (ByVal g As Long, ByVal b As Long) As Long'调⽤Dim str As String * 20 ' 注意对于传址,⼀定要定义其空间⼤⼩(数组可以不指定)dim a As Long, b As Longa=25 b=78result = GetComputerNameE(str)result=Sum(a, b)4.vc引⽤vb中ocx和dll如 C:\TestVb\DBCommon.dll 是个vb做的数据库通⽤类。

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”,然后单击“下一个”。

上位机(vb)单片机与PC通讯程序(自己编的)

上位机(vb)单片机与PC通讯程序(自己编的)

Option Explicit Dim count1 As String 'Dim count11 As String Dim flag As Integer 'Dim flag_1 As Integer Dim jinji_flag As Integer Dim jinji_flag1 As Integer Dim dxbian As Integer Dim nbbian As Integer Dim count_sheding As Integer Dim count_shedingnb As Integer Dim strData As String '串口变量 'Dim flag As Integer Dim sj(0 To 4 As Integer Dim sj1(0 To 4 As Integer Dim sj2(0 To 4 As Integer Dim sj3(0 To 4 As Integer Private Sub Command2_Click( MSComm1.PortOpen = False Unload Me End Sub Private Sub Form_Load( count1 = count_sheding count_sheding = 60 dxbian =count_sheding count_shedingnb = 60 nbbian = count_shedingnb Text1.Text = ""Text5.Text = "" ' flag = 0 ' jinji_flag = 1 Text9 = "" '串口初始化 mPort = 1 MSComm1.InputMode = comInputModeBinary '数据通过 Input 属性以文本形式取回。

VC 上位机 程序

VC 上位机 程序

VC++上位机教程编译环境:VC++6.0操作系统:VMWare虚拟出来的Windows XP串口通信,MCU跟PC通信经常用到的一种通信方式,做界面、写上位机程序的编程语言、编译环境等不少,VB、C#、LABVIEW等等,我会的语言很少,C语言用得比较多,但是还没有找到如何用C语言来写串口通信上位机程序的资料,在图书管理找到了用VC++编写串口上位机的资料,参考书籍,用自己相当蹩脚的C++写出了一个简单的串口上位机程序,分享一下,体验一下单片机和PC通信的乐趣。

程序实现功能:1、PC初始化COM1口,使用n81方式,波特率57600与单片机通信。

PC的COM口编号可以通过如下方式修改:当然也可以通过上位机软件编写,通过按钮来选择COM端口号,但是此次仅仅是简单的例程,就没有弄那么复杂了。

COM1口可用的话,会提示串口初始化完毕。

否则会提示串口已经打开Port already open,表示串口已经打开,被占用了。

2、点击开始转换,串口会向单片机发送0xaa,单片机串口中断接收到0xaa后启动ADC转换一次,并把转换结果ADCL、ADCH共两个字节的结果发送至PC,PC进行数值转换后在窗口里显示。

(见文章末尾图)3、为防止串口被一只占用,点击关闭串口可以关闭COM1,供其它程序使用,点击后按钮变为打开串口,点击可重新打开COM1。

程序的编写:1、打开VC++6.0建立基于对话框的MFC应用程序Test,2、在项目中插入MSComm控件:工程->增加到工程->Components and Controls->双击Registered ActiveX Controls->选择Microsoft Communications Control, version 6.0->Insert,按默认值添加,你会发现多了个电话图标,这是增加后串口通信控件。

3、删除确认、取消和提示框,添加“电话”、进程、静态文本、按钮、编辑框,拖动添加的控件,根据喜好布局。

毕业设计(论文)-VC编程软件来开发上位机与下位机之间通信编程

毕业设计(论文)-VC编程软件来开发上位机与下位机之间通信编程

摘要本文主要描述了利用PC机与AT89C51单片机之间的通信程序设计实现温度显示。

并详述了在VC6.0环境下,上位机利用MSCOMM通信控件与单片机之间串口通信实现温度显示。

由单片机采集一个温度信号,将采集到的温度信号传送给PC机显示,PC机用VC6.0编写程序,单片机程序用C语言编写,最后用PROTUES软件进行仿真实现温度显示。

关键词:单片机MSCOMM控件VC6.0 AT89C51 温度显示目录摘要1 引言 (1)2 结构设计与方案选择 (2)2.1设计任务 (2)2.1.1单片机的选择 (2)2.1.2电平转换 (2)2.1.1单片机的选择 (2)2.1.3单片机与pc机通信原理 (2)2.2软件方案选择 (2)2.2.1 上位机编程方案选择 (3)2.2.2 单片机编程方案选择 (3)2.3 总体方案选择 (2)3 硬件设计 (8)3.1单片机主要特性 (5)3.2 MAX232电平芯片介绍10 (10)3.3 硬件电路设计图 (11)3.3.1 PC机与单片机通信接口电路设计框图 (11)3.3.2整体设计原理图 (11)4软件设计 (12)4.1上位机程序设计 (12)4.2下位机程序设计 (13)5 软硬件调试部分 (21)5.1 PROTEUS软件仿真 (21)5.1.1 Protues简介 (21)5.1.2 Protues仿真电路图 (22)5.2 VC软件仿真 (21)结束语 (27)致谢 (28)参考文献 (29)1引言随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从单片机技术入手,一切向着数字化控制,智能化控制方向发展。

现代化集中管理需要对现场数据进行统计、分析、制表、打印、绘图、报警等,同时,又要求对现场装置进行实时控制,完成各种规定操作,达到集中管理的目的。

用VB开发PC与单片机通信的上位机程序

用VB开发PC与单片机通信的上位机程序

串口通信是MCU跟PC通信经常用到的一种通信方式,做界面、写上位机程序的编程语言、编译环境有不少,诸如VB、VC++,Delphi、LABVIEW等等,不过无论黑猫还是白猫,能够抓到老鼠的就是好猫,用VB无疑是最快速最简便的,实现的功能也足够强大,足以满足我们的基本需要了。

我最近用VB写出了一个用于数据采集的串口上位机程序,实现数据的接收和实时绘图,这里和大家分享一下,让大家也体验一下单片机和PC通信的乐趣。

整个程序只需要不到30行程序,我将会给这30行程序加上最为详备的注释,这样即使你从未使用VB制作过上位机程序,也能照猫画虎的编写出属于自己的上位机程序。

一,制定设计思路首先,我们要制定一下自己的串口通讯协议,为了方便设计,通讯协议中将采用字符型数据(遵循ASCII字符集)进行传输,一共5个字节数据,下位机按照从第一字节到第五字节的顺序以1 符号位2 百位3 十位4 个位注释:1,符号符,+(2B)或—(2D),表示数据的正负2,3,4,百位,十位,和个位数字5,结束符,用大写字母A(41)表示接着,我们就要明确设计思路了,这个程序的设计将采用Microsoft Visual Basic 6.0(以下简称VB6.0)作为m,通过编译环境,运用串口通讯控件MSCom计时器控件实现以查询方式编写的串口数据的接收和实时绘图。

二,程序界面设计(1)创建一个标准EXE工程:启动VB6.0,在自动弹出的“新建工程”窗口中单击“标准EXE”图标,然后单击“打开”按钮即可创建一个标准EXE工程。

将弹出的窗体的Caption属性设置为串口通讯与实时绘图程序。

[attachment=1364699](1)添加串口通信控件MSComm:VB的串口通信控件MSComm并不会主动出现在工具箱中,当我们需要MSComm控件时,首先要把它加入工具箱中,选择“工程”菜单下的“部件...”子菜单,在弹出的“部件”对话框中,在“控件”选项卡属性中选中“Microsoft Comm Control 6.0”,单击“确定”按钮后,在工具箱中就出现了一个形似电话的图标,这就是MSComm控件,选择MSComm控件的图标,将它添加到适当位置,采用默认名称MSComm1。

VB编写的上位机程序

VB编写的上位机程序

VB编写的上位机程序Dim state As Integer '电机状态Dim addr As Integer '从机地址变量Dim speed As Integer '速度变量'Dim num1 As StringPublic wholechar As StringDim RTUcrc As StringDim Inbyte() As BytePublic Buffer As String 'Private Sub Combo1_Click()'Dim temp1 As Single'temp1 = Val(Combo1.Text) '取角度值'num1 = Str(temp1 / 0.9)End SubPrivate Sub Combo2_Click()num2 = Val(Combo2.Text)num2 = num2 * 2End SubPrivate Sub Combo3_Click()speed = Val(Combo3.Text)End SubPrivate Sub Combo4_Click()addr = V al(Combo4.Text)End SubPrivate Sub Command1_Click()MSComm1.Settings = "9600,n,8,1"MSComm1.InBufferSize = 12 '设置MSComm1接收缓冲区为4字节MSComm1.OutBufferSize = 20 '设置MSComm1发送缓冲区为2字节MSComm1.InputMode = comInputModeBinary '设置接收数据模式为二进制形式MSComm1.InputLen = 6 '设置Input 一次从接收缓冲读取字节数为6 MSComm1.RThreshold = 1MSComm1.SThreshold = 0MSComm1.InBufferCount = 0 '清除接收缓冲区MSComm1.OutBufferCount = 0 '清除发送缓冲区If MSComm1.PortOpen = False ThenMSComm1.PortOpen = TrueCommand1.Enabled = FalseCommand2.Enabled = FalseCommand3.Enabled = TrueIf Err ThenMsgBox "串口通信无效"End IfEnd IfEnd SubPrivate Sub Command2_Click()Dim hexchrlen%, Hexchr As String, hexcyc As Integer, hexmid As Byte, hexmiddle As String Dim hexchrgroup() As Byte, i As IntegerShape1(0).FillStyle = 1Shape1(1).FillStyle = 1Shape1(2).FillStyle = 1Shape1(3).FillStyle = 1hexchrlen = Len(wholechar)For hexcyc = 1 To hexchrlen '检查Text1文本框内数值是否合适Hexchr = Mid(wholechar, hexcyc, 1)If InStr("0123456789ABCDEFabcdef", Hexchr) = 0 ThenMsgBox "无效的数值,请重新输入", , "错误信息"Exit SubEnd IfNextReDim hexchrgroup(1 To hexchrlen) As ByteFor hexcyc = 1 T o hexchrlen Step 2 '将文本框内数值分成两个、两个i = i + 1Hexchr = Mid(wholechar, hexcyc, 2)hexmid = Val("&H" & CStr(Hexchr))hexchrgroup(i) = hexmid'MSComm1.Output = CStr(hexmid)NextMSComm1.Output = hexchrgroupTimer1.Enabled = TrueEnd SubPrivate Sub Command3_Click()MSComm1.PortOpen = FalseEndEnd SubPrivate Sub Form_Load()For i% = 0 To 20Combo2.AddItem Str(i)Next iCombo2.T ext = "0"For j# = 0.9 To 180.9 Step 0.9Combo1.AddItem Left(CStr(j), 5)Next jCombo1.T ext = "0"For k% = 80 To 255Combo3.AddItem Str(k)Next kCombo3.T ext = "0"Combo4.AddItem "00"Combo4.AddItem "01"Combo4.AddItem "02"Combo4.AddItem "03"Combo4.AddItem "04"Combo4.AddItem "05"Combo4.AddItem "06"Combo4.AddItem "07"Combo4.AddItem "08"Text1.Text = Space(5) + "欢迎使用该控制软件" + Chr(13) + Chr(10) _ + Space(9) + "请打开串口!" + Chr(13) + Chr(10) + Space(9) + _"作者:戚金毅" + Chr(13) + Chr(10) + Space(9) + "班级:电子301班"Option1(0).Value = FalseOption1(1).Value = FalseOption1(2).Value = FalseOption1(3).Value = FalseOption2(0).Value = TrueOption2(1).Value = FalseFor i% = 0 To 3Shape1(i).FillStyle = 1Shape1(i).FillColor = QBColor(4)Next iCommand1.Enabled = TrueCommand2.Enabled = FalseCommand3.Enabled = True/doc/fe10044893.html,mPort = 1Timer1.Enabled = FalseTimer1.Interval = 40 '25End SubPrivate Sub MSComm1_OnComm()Dim Hexchr As String, i As IntegerDim j As Integer, string2 As StringDim k As IntegerDim e(6) As Byte, string3 As StringInbyte = MSComm1.Input '十六进制显示For k = LBound(Inbyte) T o UBound(Inbyte)e(k) = Val(Hex(Inbyte(k)))Next kIf Val(e(1)) = 6 ThenText1.Text = " 成功发送!"Select Case stateCase 1Shape1(0).FillStyle = 0Shape1(1).FillStyle = 1Shape1(2).FillStyle = 1Shape1(3).FillStyle = 1Case 2Shape1(0).FillStyle = 1Shape1(1).FillStyle = 0Shape1(2).FillStyle = 1Shape1(3).FillStyle = 1Case 4Shape1(0).FillStyle = 1Shape1(1).FillStyle = 1Shape1(2).FillStyle = 0Shape1(3).FillStyle = 1Case 8Shape1(0).FillStyle = 1Shape1(1).FillStyle = 1Shape1(2).FillStyle = 1Shape1(3).FillStyle = 0End SelectFor j = 1 To 4If e(j) < 16 ThenText2.Text = Text2.Text & "0" & e(j) & " " ElseText2.Text = Text2.Text & e(j) & " "End IfNext jTimer1.Enabled = FalseElseFor m% = 0 To 3Shape1(m).FillStyle = 1Next mText1.Text = "未成功发送,请再次发送!" Command2.Enabled = TrueEnd IfEnd SubPrivate Sub Option1_Click(Index As Integer) Select Case IndexCase 0state = 1Call incorporateCall checkCommand2.Enabled = TrueCase 1state = 2Call incorporateCall checkCommand2.Enabled = TrueCase 2state = 4Call incorporateCall checkCommand2.Enabled = TrueCase 3state = 8Call incorporateCall checkCommand2.Enabled = TrueEnd SelectEnd SubPrivate Sub Option2_Click(Index As Integer) Select Case IndexCase 0/doc/fe10044893.html,mPort = 1Case 1/doc/fe10044893.html,mPort = 2End SelectEnd SubPrivate Sub incorporate()Dim fcode As String, datalen As StringDim raddr As String, state1 As StringDim speed1 As String, addr1 As StringDim num1 As String '角度变量Dim num2 As String '圈数变量Dim anglenum1%, anglenum2%temp! = Val(Combo1.Text)temp2% = temp / 0.9anglenum1 = Len(CStr(Hex(Val(temp2))))'anglenum1 = Len(num1)Select Case anglenum1Case 0Exit SubCase 1num1 = "0" & CStr(Hex(Val(temp2)))Case 2num1 = CStr(Hex(Val(temp2)))End Selectanglenum2 = Len(CStr(Hex(Val(Combo2.Text)))) Select Case anglenum2Case 0Exit SubCase 1num2 = "0" & CStr(Hex(Val(Combo2.T ext))) Case 2num2 = CStr(Hex(Val(Combo2.Text)))End Selectfcode = "0" & Hex(6)datalen = "0" & Hex(5)raddr = Hex(48)state1 = "0" & Hex(state)speed1 = Hex(speed)addr1 = "0" & Hex(addr)Text1.Text = addr1 & fcode & datalen _& raddr & state1 & speed1 & num1 & num2wholechar = Text1.TextEnd SubPrivate Sub check()Dim CRC() As ByteDim d(9) As ByteDim string1 As StringDim j As Integer, chrlength As Integer, temp As Stringstring1 = wholecharchrlength = Len(string1)For j = 0 To chrlength / 2temp = Mid(string1, j * 2 + 1, 2)d(j) = Val("&H" & temp)Next jRTUcrc = CRC16(d) '调用CRC16计算函数,CRC(0)为高位,CRC(1)为低位wholechar = wholechar & RTUcrcEnd SubPrivate Function CRC16(data() As Byte) As StringDim CRC16Lo As Byte, CRC16Hi As ByteDim CL As Byte, CH As ByteDim CRCLo As String, CRCHi As StringDim SaveHi As Byte, SaveLo As ByteDim i As IntegerDim Flag As IntegerCRC16Lo = &HFFCRC16Hi = &HFFCL = &H1CH = &HA0For i = 0 To UBound(data)CRC16Lo = CRC16Lo Xor data(i)For Flag = 0 To 7SaveHi = CRC16HiSaveLo = CRC16LoCRC16Hi = CRC16Hi \ 2CRC16Lo = CRC16Lo \ 2If ((SaveHi And &H1) = &H1) Then CRC16Lo = CRC16Lo Or &H80End IfIf ((SaveLo And &H1) = &H1) Then CRC16Hi = CRC16Hi Xor CHCRC16Lo = CRC16Lo Xor CLEnd IfNext FlagNext iIf Len(Hex(CRC16Hi)) = 1 Then CRCHi = "0" + Hex(CRC16Hi) Else CRCHi = Hex(CRC16Hi)End IfIf Len(Hex(CRC16Lo)) = 1 Then CRCLo = "0" + Hex(CRC16Lo) Else CRCLo = Hex(CRC16Lo)End IfCRC16 = CRCLo + CRCHi End Function Private Sub Timer1_Timer()Text1.Text = "该从机不存在!"For j% = 0 To 3Shape1(j).FillStyle = 1Next jTimer1.Enabled = FalseEnd Sub。

c语言上位机开发与应用

c语言上位机开发与应用

c语言上位机开发与应用
C语言上位机开发与应用是指使用C语言编写程序来开发和应用上位机控制软件。

上位机是指在工业自动化控制系统中,负责与下位机进行通信和控制的计算机或控制设备。

它通常运行着一些特定的软件,用来监控和控制下位机的运行状态。

C语言作为一种常用的编程语言,被广泛应用于上位机开发。

在C语言上位机开发中,通常需要使用串口通信或网络通信等方式与下位机进行数据交互。

开发者可以使用C语言提供的相关库函数来实现数据的发送和接收,以实现与下位机的通信。

在上位机的应用中,C语言可以用于实现各种功能模块,如数据采集、数据处理、控制算法、用户界面等。

通过编写C语言程序,可以实现对下位机的监控、控制和数据分析等功能。

在实际应用中,C语言上位机开发可以应用于很多领域,如工业自动化、机器人控制、仪器仪表控制等。

通过编写高效、稳定的C语言程序,可以提高上位机的性能和可靠性,实现更精确、高效的控制和监控。

C语言上位机开发与应用是一种常见的工程实践,通过使用C语言编写程序,可以实现对下位机的控制和监控,以及其他相关功能的实现。

这种开发方式广泛应用于各个领域,为工业自动化和控制系
统的实现提供了强有力的支持。

VB上位机程序编写

VB上位机程序编写

控件一、控件地主要属性、事件、地属性:设置或返回串口号. 如设成(默认值),表示对进行操作.:以字符串地形式设置或返回串口通信参数.包括串口通讯地比特率,奇偶校验,数据位长度、停止位等.其默认值是“”,表示串口比特率是,不作奇偶校验,位数据位,个停止位.:设置或返回串口状态.值为时打开串口,值为时关闭串口.:设置或返回接收数据地类型.若值为,则表示以文本形式读取;值为,则表示以二进制形式读取.:设置或返回一次从接收缓冲区中读取字节数.:设置或返回接收缓冲区地大小,缺省值为字节.:设置或返回接收缓冲区中等待计算机接收地字符数. 当将其值设为时,则输入寄存器将被清空.:从接收缓冲区中读取数据并清空该缓冲区,该属性设计时无效,运行时只读.:设置或返回发送缓冲区地大小,缺省值为字节.:设置或返回发送缓冲区中等待计算机发送地字符数.当将其值设为时,则输出寄存器将被清空.:向发送缓冲区发送数据,该属性设计时无效,运行时只读.:该属性为一阀值.当接收缓冲区中字符数达到该值时,控件设置属性为,并产生事件.用户可在事件处理程序中进行相应处理.若属性设置为,则不产生事件.例如用户希望接收缓冲区中达到一个字符就接收一个字符,可将设置为.这样接收缓冲区中接收到一个字符,就产生一次事件.:该属性亦为一阀值.当发送缓冲区中字符数小于该值时,控件设置属性为,并产生事件.若属性设置为,则不产生事件.要特别注意地是仅当发送缓冲区中字符数小于该值地瞬间才产生事件,其后就不再产生事件.例如设置为,仅当发送缓冲区中字符数从降为时,控件设置属性为,同时产生事件,如发送缓冲区中字符始终为,则不会再产生事件.这就避免了发送缓冲区中数据未发送完就反复发生事件.:这是一个非常重要地属性.该属性设计时无效,运行时只读.一旦串口发生通信事件或产生错误,依据产生地事件和错误,控件为属性赋不同地代码,同时产生事件.用户程序就可在事件处理程序中针对不同地代码,进行相应地处理.属性地代码、常数及含义参见后文、地事件除了公共事件之外,只有一个事件.当属性值变化时将发生事件,指示发生一个通讯事件或错误.当我们设置属性值为时,将使得捕获事件无效.电子桌牌优势智能液晶电子桌牌:是一款新颖地显示、会徽会标、与会者姓名和职务以及可实现多种会议服务功能地会议桌面终端设备.它外形美观大方,完全取代了传统塑料、纸质或铜制桌牌,是会议桌面显示设备地一大创新,同时也是集多种会议功能一体地新型产品终端.本产品与传统桌牌相比,具有信息化程度高、可反复使用地特点.它外型美观时尚、稳重中彰显尊贵、人名显示清晰明亮,是现代信息化会议地理想工具. 文档来自于网络搜索席媒无线智能液晶电子桌牌在供电方面:内置高容量聚合物锂电池(毫安时)供电、确保会议时间达到个小时以上,从而摒弃了电源线、通讯线等一切连接线缆,最终脱离了常规会议类产品必须集成化地束缚,完全没有了布局及手拉手使用地限制. 文档来自于网络搜索席媒无线智能液晶电子桌牌在通讯方面:采用全新地无线设计理念无线联网方式,电子桌牌通过无线基站与控制服务器进行网络通讯,完全实现了后台一人集中操控信息编辑及收发,免去了通过盘或刷卡一个一个桌牌信息导入地苦恼,真正做到了产品任意摆放,内容随意更换,并且即摆即用地要求. 文档来自于网络搜索席媒无线智能液晶电子桌牌在显示方面精心选材:采用高亮度(流明)、高分辨率(*)数字真彩屏,显示文字图形清晰亮丽,背景模板可自定义更换,整个无线桌牌系统还可以与自动化办公系统对接. 文档来自于网络搜索席媒无线智能液晶电子桌牌在终端操作方面:采用正面彩屏为触控屏式,这样便于操作会议功能(人员签到、呼叫服务、投票表决、计时服务、同声传译等)及查看相关会议信息.后台软件系统一人便可轻松完成会场布局安排,人名及会标和背景选择等信息发送. 文档来自于网络搜索席媒无线智能液晶电子桌牌在互动方面:短消息收发、呼叫服务、信息发布通知等充分体现产品地互动性,增添了会议地娱乐性和人性化. 文档来自于网络搜索席媒无线智能液晶电子桌牌在集控方面:利用有线或无线网络,后台一人便可集中控制和管理整个系统运行,操作简单,易学. 文档来自于网络搜索考虑到有些高档机密会议室必须具备信号干扰器,屏蔽系统地因素,杭州席媒也开发了有线型智能液晶电子桌牌,通过有线控制主机集中供电和通讯,依托高智能化地系统软件实现人性化多样会议系统服务功能.从而克服了无法使用等特点. 文档来自于网络搜索编辑本段产品功能文档来自于网络搜索人名显示参会人员姓名、职称、会徽会标、会议主题显示会议签到触摸点击按键,后台自动记录签到者和签到时间会议内容会议查询服务(会议日程安排表、会议布置安排、会议主题、会议用餐安排、会议社会调查、会议内容网上发布等)文档来自于网络搜索呼叫服务呼叫茶水、音响设备、麦克、笔、纸、紧急情况等投票服务对事件满意度进行表决或对候选人进行选举计时服务发言计时及提醒功能日期和时间即时显示日期和时间.概述多功能电子桌牌需要和上位机通信,才能实现桌牌地下载更新和广播信息地接收显示等功能,上位机软件由高级编程语言()编写. 继承了语言简单易学地优点,又增加了许多新地功能,它采用面向对象与事件驱动地程序设计思想,使编程变得更加方便、快捷,使用既可以开发个人或小组使用地小型工具,又可以开发多媒体软件,数据库应用程序,网络应用程序等大型软件,是国内外最流行地程序设计语言之一.地推出标志着可视化编程时代地到来,具有划时代地意义.文档来自于网络搜索其特点有以下几点:()可视化地设计平台在中,需要什么样地界面或工具,放置相应地对象(控件)即可,所见即所得,特别方便.文档来自于网络搜索()面向对象地设计方法按钮、文本框、图片框、列表框、窗口、屏幕、打印机等都是程序中地对象.在中编程者将这些对象采用搭积木地方式就可以构建出程序,这就使程序设计变得轻松有趣.文档来自于网络搜索()事件驱动地编程机制中程序地执行是由事件来驱动.程序员不必设计程序执行地过程顺序,只要设计出当某一事件发生时要执行地代码即可.这样,就大大提高了编程地效率.文档来自于网络搜索()易学易用由于发源于,所有地简单易用地特性被很好地保留下来,不需要有较多地计算机专业知识即可轻松上手.文档来自于网络搜索()使用方便,功能完备地编程工作轻松有趣,中提供了很宽松地编程环境.上位机软件设计中要实现和桌牌地数据通信,控件是必不可少地.该控件易学易用,只有约个属性和事件,可以从地联机帮助中找到它地全部资料.控件为应用程序提供串行通讯功能,其处理通讯地方式为事件查询方式和驱动方式两种.这里仅简述它地主要属性及事件,下面以表示在窗体上设置地控件地名称为例进行说明.文档来自于网络搜索上位机软件设计地一些总结收藏文档来自于网络搜索很多时候,我们需要把硬件设备测量地数据输入计算机,以能够有一个更好地数据表示和一个更好地人机界面,比如说对于一个测井系统,井下测量设备通过各种各样地传感器测得地下地各种信号,通过电缆传输给地面地测量装置.地面测量装置地功能主要是对传感器测来地各种信号进行转换,比如对模拟信号进行采样、对脉冲信号进行计数等.但地面测量装置对数据地表现往往有很大地局限性,比如只能在很小地液晶品上显示实时地曲线,事后无法进行回放分析等.这些时候,往往借助价格相对低廉地来更丰富、更直观地表达数据!文档来自于网络搜索这类系统地需求往往是固定地,但系统开发出来后地维护,和大多数地软件一样,如果设计编码做地不好,维护起来也不是一件令人开心地事情,对于未从事开发地维护人员更是如此!以下根据个人地经验总结一些在设计开发过程中地一些原则!文档来自于网络搜索、设计此类系统往往分为数据输入输出和转换(从下位机取得数据、设置下位机运行状态、原始值和工程值之间地转换)、数据处理(往往和行业有关地转换)、数据表示(为了让专业人员或操作工更直观地对系统状态进行判断).文档来自于网络搜索设计时可以将这三部分独立开来,通过参数定义交互地方式.三个部分地设计和编码可以独立开来,只要遵从事先约定地数据交换协议即可.这样做可以使开发过程分阶段或在不同地组员之间进行分工而不互相依赖,可以方便地编写测试而不等待其他模块提供数据.比如对于数据输入输出模块,它只需保证能正确地和下位机交换数据并转化为事先约定地格式即可;对于中间数据处理模块,它只负责对于这对于事先约定地数据格式进行正确地处理即可,这部分往往和行业背景有关、所用地软件只涉及语言本身而没有其他复杂地软件方法,很多行业相关地人员往往足以担任;数据表现部分,往往包含数据地存取、绘图、打印等操作,它只依赖于事先定一地数据格式,并不依赖于其他两部分(当然这只是对于开发而言、系统运行时当然依赖于前两者提供地数据).文档来自于网络搜索、数据地定义数据是整个软件工作地基础,一切地软件活动都是围绕数据而展开,因此定义数据时一定要不厌其烦对其进行说明,对它们代表地实际意义、将对其进行何种处理、确定地以及能够预料到地说明均应当进行记录.文档来自于网络搜索、对于方法最起码地,要说明该方法操作何种数据、函数功能是什么.、对于此类软件,不可避免地要使用一些全局地变量,可以借用组态软件中有关数据字典地概念,对这些全局变量进行统一管理,对其何处初始化、何处修改等尽量进行说明!文档来自于网络搜索、牢记两点:以后要维护;封装.、建议在每个文件创建时进行规范,注明该模块创建人、时间、模块功能等,对于版权信息,那是项目以外地问题,虽个人情况决定!文档来自于网络搜索上位机上位机是指人可以直接发出操控命令地计算机,一般是,屏幕上显示各种信号变化(液压,水位,温度等).下位机是直接控制设备获取设备状况地计算机,一般是单片机之类地.上位机发出地命令首先给下位机,下位机再根据此命令解释成相应时序信号直接控制相应设备.下位机不时读取设备状态数据(一般为模拟量),转换成数字信号反馈给上位机.简言之如此,实际情况千差万别,但万变不离其宗:上下位机都需要编程,都有专门地开发系统. 文档来自于网络搜索在概念上控制者和提供服务者是上位机被控制者和被服务者是下位机也可以理解为主机和从机地关系但上位机和下位机是可以转换地两机如何通讯,一般取决于下位机.一般是支持地.但是下位机一般具有更可靠地独有通讯协议,购买下位机时,会带一大堆手册光盘,告诉你如何使用特有协议通讯,里面会举大量例子,一般对编程人员而言一看也就那么回事,使用一些新地罢了.多语言支持功能模块,一般同时支持数种高级语言为上位机编程. 文档来自于网络搜索通常上位机和下位机通讯可以采用不同地通讯协议,可以有地串口通讯,或者采用串行通讯,当用计算机和通讯地时候不但可以采用传统地形式地串行通讯,还可以采用更适合工业控制地双线地通讯,采用封装好地程序开发工具就可以实现和上位机地通讯.当然可以自己编写驱动类地接口协议控制上位机和下位机地通讯. 文档来自于网络搜索。

用VB编写上位机实例

用VB编写上位机实例

标签:无标签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这样设置目的是当程序在打开是,首先打开通信控件MSComm,注意这里的串口通信参数中的波特率设置是默认参数的。

VB编写上位机实例

VB编写上位机实例

VB编写上位机实例用VB编写上位机实例(转载)用VB6.0编写第一个串口通信上位机程序Visual Basic6.0是一个可视化窗口环境的编程软件,目前使用VisualBasic6.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键可弹出此窗口)Mscomm通信控件参数属性设置(通过单击控件的右键属性可弹出此窗口)单片机设计本文用到的其他控件:CommandButton控件和TextBox控件按默认属性设置不变。

以上设置完成,回到编程窗体区中,任意双击。

会显示Visual Basic的程序窗体的Load事件程序。

在代码窗口中输入:Private Sub Form_Load()MSComm1.PortOpen = True'窗体的加载时,就打开通信端口,通信端口的参数也可以在此指定Timer1.Enabled = Timer1.Enabled'窗体的加载时,同时定时器控件事件End Sub 电子元件邮购网这样设置目的是当程序在打开是,首先打开通信控件MSComm,注意这里的串口通信参数中的波特率设置是默认参数的。

用VB制作一个简单的压力值采集显示的上位机制作总结

用VB制作一个简单的压力值采集显示的上位机制作总结

GCCX上位机制作总结本系统的上位机制作主要采用Microsoft Word Visual Basic 编写。

主要实现将采集和传输的数据进行接收、处理和储存的功能。

一、基本思路如下所示:由上图可以知道,本程序的三个要点分别是:1、数据的接收部分,主要指将传到串口的数据进行接收,这是后面步骤的前提与基础。

2、数据的处理部分,将接收到的数据进行实时处理与绘制曲线图,并对超过警戒值的数据给予提示。

3、数据的储存部分,指对接收处理过的数据按照一定的格式存储到access2007数据库中,以便以后查询,也为分析列车运行规律以及螺丝生产厂家提供真实可贵的资料。

总体思路是先分别实现三个部分对应的功能,再将三个部分有机联合起来形成功能完善的上位机系统。

二、分别实现三个部分的制作过程及成果第一部分,从串口接收数据。

主要用到的是MSComn控件()实现串口通信。

其测试设计界面如下图所示:其中MSComn控件的属性设置为:程序如下:测试便可实时显示串口传输的数据。

即实现了从串口接收数据。

第二部分,数据的实时显示部分。

这个部分的测试与制作的思路是采用随机函数产生数据并与时间控件()配合来模拟所收集的数据,对其进行实时绘图。

测试设计界面:程序如下:Option ExplicitDim DataFromComy As Integer '从串口读过来的实时值y坐标Dim DataFromComLasty As Integer '上次的串口值y坐标Dim TimeCount As IntegerDim i As IntegerPrivate Sub Command1_Click()’返回按钮Unload MeEnd SubPrivate Sub Form_Load()PicScale Pic '调整图像框的坐标系zuobiaoxi Pic '画出坐标系PicMidleLine Pic '在图像框中画一条中线End SubPrivate Sub PicScale(picX As PictureBox) '调整图像框的坐标系(0, -, 0)End SubPrivate Sub PicMidleLine(picX As PictureBox)'在图像框中画一条中线(0, 1000)-, 1000), vbGreen'画出中线End SubPrivate Sub zuobiaoxi(picX As PictureBox) '表示坐标系Dim i%(0, 0)-, 0), vbWhite 'x坐标轴表示(0, 0)-(0, , vbWhite'y坐标轴表示For i = 0 To Step 1000 'X,y轴坐标坐标刻度显示 (0, i)-(100, i)(i, 0)-(i, 100)Next iEnd SubPrivate Sub DrawRealLine(picX As PictureBox, DataFromComy As Integer, DataFromComLasty As Integer, TimeCount As Integer)If TimeCount - 1 > 0 Then(TimeCount - 100, DataFromComLasty)-(TimeCount, DataFromComy), vbWhiteEnd IfEnd SubPrivate Sub Timer1_Timer()DataFromComLasty = DataFromComyRandomizeDataFromComy = Int((2000 - 0 + 1) * Rnd + 0) '随机数的产生TimeCount = TimeCount + 100If TimeCount - 100 >= ThenTimeCount = 0PicMidleLine Piczuobiaoxi PicEnd IfDrawRealLine Pic, DataFromComy, DataFromComLasty, TimeCount '画出实时的曲线End Sub测试结果如下:至此,由数据的实时绘图部分的测试完成。

上位机编程语言

上位机编程语言

上位机编程语言位机编程语言是一种专门用于编写位机指令的编程语言。

位机指令是一种特殊的机器指令,用于控制计算机硬件的操作。

位机编程语言通常是一种低级语言,具有直接操作硬件的能力。

本文将介绍三种常见的位机编程语言:汇编语言、机器码和微码。

一、汇编语言汇编语言是一种符号化的位机编程语言,使用助记符来代表不同的位机指令。

汇编语言通常与特定的位机体系结构相关,因此不同的计算机体系结构使用不同的汇编语言。

汇编语言直接对应到位机指令,可以直接操作计算机硬件。

汇编语言具有较高的灵活性和效率,但也较为复杂和难以理解。

二、机器码机器码是位机指令的二进制表示形式,直接由计算机硬件执行。

机器码是一系列的二进制位,每个位都有特定的含义。

机器码通常由位机编译器或汇编器生成,可以直接在计算机中执行。

机器码具有最高的执行效率,但也是最难以理解的位机编程语言。

三、微码微码是一种介于汇编语言和机器码之间的位机编程语言。

微码是一种微指令,在微程序控制器中执行。

微码可以看作是位机指令的更细粒度的执行单位,它将一条位机指令分解为多个微指令,通过微程序控制器依次执行。

微码通常由微程序控制器生成,可以直接操作计算机硬件。

总结:汇编语言、机器码和微码都是位机编程语言,用于编写位机指令。

汇编语言使用助记符代表位机指令,直接操作计算机硬件;机器码是位机指令的二进制表示形式,直接由计算机硬件执行;微码是介于汇编语言和机器码之间的微指令,通过微程序控制器执行。

这三种位机编程语言在不同的场景中都有各自的优势和应用范围,程序员可以根据实际需求选择合适的位机编程语言来编写位机指令。

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
我觉得这两个方面的软件的作用都是无法相互替代的,从行业角度看应该都是有前途的,但是从个人发展方面,我有迷惑。
我虽然做了两年工控,但还是从楼上的前辈的帖子里第一次听说SCADA这个东东,我所在的环境就是缺少那种能指导我或者与我交流的人,或许这才是更重要的原因吧。
我已经换工作了,应该算是做MIS,不过也有手机方面的,也不是按我所说的划分的那么严格。不过还是很想跟朋友们交流想法,不结贴。
如下是俺的观点,欢迎拍砖!
1.物以稀为贵!我也是这个行业的,做了楼宇智能化5年了,工资就不说了,只是告诉你不是很少。诚如所言工控行业的,软件程序员太少,所以这个行业的程序员含金量比较高。因为入行不易,设计到各个硬件打交道。
2.什么叫商业软件,工控软件就不叫商业软件了么?这点我不敢苟同!在控制领域,你看看各个强势的一线品牌的软件,那个不是商业软件。如果你所喜欢的商业软件是什么oa,mis,erp;你就会发现你将陷入需求变化的无休止的争论中。
计算机系本科毕业,用VC做了2年多的工业控制软件。
现在不知道该不该继续做下去。
很想和做这个领域的兄弟聊一聊,不知道是不是我的视野窄了。
我现在做的都是些一两个人就能搞定的小软件(虽然外面称之为大型系统)。
一方面,我想继续做工业控制软件,因为这种东西用途很广,各行各业的,凡是需要与计算机连接的机器,仪表等等都用得着,而且结构和所用的技术也大同小异。
3.如果觉得你们公司不行,确实可以考虑换各公司,但是建议不要轻易的换行业。因为如此的话,你发现你从来都是一个入行者。工资会符合你的角色。如果你有决心把某块软件做大,你可以做规划,建立团队,不过这些都要靠开明的老板。
4.最后,无论在那个行业,当你发现你在公司的地位是不可替代的,工资就不会有问题。
俺毕业后到一家组态软件公司做组态软件驱动,一年多,整天就是串口,以太网,板卡的通信和数据采集,没学到什么东东。现在在另一家公司做DCS系统的辅助开发,致力于DCS的编程软件。
总体感觉还可以做下去,哪天真的干不下去转技术支持应该绰绰有余。
感觉做工控工程应该比较累,经常出差,现场解决问题什么的。
楼主做的软件都是与串口(232或485)与PLC及各类仪器通信的吗?
我感觉技术上不难,但每次与新仪器接入的时候,那些通信协议特烦人!
还有,楼主对OPC熟吗
没错,我们用485或422,跟PLC或者单片机通信,OPC听说过,没用过,好像比较贵
我做过几个月的工控,MCGS的,感觉确实很没意思,经常和那些工业设备打交道,早转行了,做纯软件了,用C++
已经做工控两年半了,还能转做商业软件么?会不会晚了?
工控工程师和软件工程师哪个更有发展?
我刚毕业一年
也做工控的
有和你一样的困惑
向搂主进言:
1 轻易转向是不明智的。
2 做软件除了熟悉软件技术本身外,也存在熟悉某个行业的问题。
3 工控软件本身的前途怎么样?能在这个领域跟踪最新的东西也是很好。
做产品研发就好多了。
干工控这行,如果没听过SCADA,OPC,DCS这类的名词,看来你要努力了。
建议楼主继续坚持下去。本人也做医疗设备(生化检验设备)的接口软件。诚如楼上所说,其实这类软件的需求都非常简单,且不易变更。如果换成ERP,MIS等系统,那可不好说了。等待你的是用户无穷无尽的需求变更。尽管有合同预先约定,但用户提出来需要添加一些功能。还没拿到报酬的你可以提出反驳意见吗?所以这方面来说,做专业软件也许更好。说到技术升级的问题,其实你也可以在开发间隙多看一些技术资料(包括网络上的)。这点你放心,你不会成为技术的落伍者的。我的建议尽供参考!我的QQ:573827574(不用MSN了)。想做医疗设备接口软件的同志请与我联系
4 据本人十多年经验,同学里面干的最棒的都是在一个领域专注的做了多年的。当然,你现在仅仅工作两年而已。
作为一个老工控人员,提点感受和建议:
工控里有一个SCADA(远动系统)无论是技术还是应用都是比较点,可以选择大型SCADA系统的应用,如电力调度系统,城市轨道交通监控等,国际上知名跨国公司通常也有这样的产品,国内产品还是可以与他们竞争的。
我也是搞工控的,入行才1.5年,和楼主一样总觉得做这行没意思,不是在做真正的软件,更可恶的是,我们公司由于生产硬件,做出来的所谓软件,都是白送人卖不到钱啊,
不过本人也赞成一个观点,一个行业,它能在当今社会生存下来,那一定就有它的土壤,就有它的发展空间,坚持下来,一定会有收获.
其实控制行业数据采集上来了后,其实就是用软件编程来如何表现这些数据,如何加工这些数据,本身需要很多的软件处理技巧,图形显示,多线程,dcom,数据库封装,控件技术,容器技术,视频技术,如果想做成web平台,还涉及.net或者j2ee的平台。说句老实话,需要掌握比较多的知识。
如果现在不转,再过两年恐怕自己软件技术就更落伍了,就只能一直干这个了。
最近有家公司要我,也是做工业控制,到了那就我一个人做软件!我不知道该不该去,我担心做这样的工作,两年后我的软件还水平还是跟现在一样。
我很困惑。
呵呵,现在用的就是VC基本的东西(以后要用组态软件,不过我没兴趣搞,主要是不想在这单位呆下去了)
5.我的Email是lsq_email@,有志做楼宇智能化行业的,可以给我发Email。
发点感悟吧:
1,做工控一年了。才毕业1。5年;
2,工控软件追求的就是实时,高效,稳定。和当今最新的软件开发联系不上。至少我们还是用vc6.0+sql2000;
3,我进入这个行业,是因为打算从事软件开发,而从这里起步,门槛较低;
可是,缺点是学不到新东西。首先,做这些东西不需要太多的新技术,顶多用个数据库,安全稳定就够了。而且这个环境里很多人是非计算机专业转行过来的,在这个环境里我学不到多少软件方面的知识——这让我感觉特郁闷。我所接触过的几个单位也都差不多。
另一方面,我想转去做商业软件,我是学计算机的,喜欢软件开发,从上学时,我的梦想就是做“软件”,而且我很喜欢周围有很多高手可以交流的那种环境,可同时又有担心——就是大家常说的青春饭啦,而且我已经毕业两年多了,不小了。
4,打算再做2年,就去读书了,再做一些决定。
原来还有跟我有同感的啊,看来我这也不属于特殊情况啊,呵呵。
说实话我也不确定用“工控软件”和“商业软件”这两个词来区分软件在多大程度上合适。实际上,我所谓工控的东东是指帮助人与机器打交道的软件,我所谓商业的东东是指帮助人与人之间打交道的软件。前者从计算机诞生就有了,而后者是随着计算机的普及才逐渐发展起来的,尤其近些年发展很快,所以好像受关注的程度要比前者大好多。
相关文档
最新文档