-
labview导入dbc_基于LabVIEW读取串口数据技术
2021-01-15 01:48:44【15】0引言T型管散热器是一种节能、高效和成本低的新型散热器,其有横、竖管件相贯焊接而成,立管间距小,又带有铝翼障碍,焊接空间很小,不允许焊渣飞溅,焊接难度大。目前,国内散热器T型多立管相贯线壁障连续...【15】
0
引言
T
型管散热器是一种节能、高效和成本低的
新型散热器,其有横、竖管件相贯焊接而成,立
管间距小,又带有铝翼障碍,焊接空间很小,不
允许焊渣飞溅,焊接难度大。目前,国内散热器
T
型多立管相贯线壁障连续焊接多采用人工焊接,
存在不易保证焊接质量和生产效率低等缺点。对
于
T
型管相贯线的焊接,国内曾有单位研制了基
于机械结构的自动焊接机,该焊接机自动化程度
较低,焊接质量低,不能实现
T
型多立管相贯线
壁障连续焊接
[1]
。从国外引进的弧焊机器人多采
用示教编程模式,需要控制焊枪在离线状态下沿
预定的焊缝曲线轨迹走一遍,把焊接轨迹和相关
参数记录到控制器中;当被焊件尺寸发生改变时
需要另外示教;机器人发生故障时,需要国外生
产厂家指导,维修不方便。基于此,设计了双焊
枪自动焊接机控制系统。
1
机械结构设计
散热器
T
型管相贯线的模型如图
1
所示,它
是散热器横管和立管两圆柱面正交所形成的相贯
性,是一条三维空间曲线,又被称为马鞍曲线
[2]
。
在实际散热器
T
型管相贯线的焊接中,加工
对象往往不是一条相贯线或一个管子,而是一排
管子的连续焊接,而且在立管上还有用来加大散
热面积的涨铝,大大限制了焊枪移动范围,加大
了
T
型管相贯线自动化焊接难度。
双焊枪自动焊接机控制系统设计
Study of control system on automatic welding machine for two-welding torch
刘江涛,弋景刚
LIU Jiang-tao, YI Jing-gang
(河北农业大学
机电工程学院,保定
071001
)
摘
要:
针对散热器
T
型多立管相贯线壁障连续焊接难题,设计了基于工控机(IPC)
和多轴运动控制
器(6K4)
的双焊枪自动焊接机控制系统。该系统采用
VB
编程控制各个子功能模块,并利用
6000
运动语言开发底层伺服驱动程序,上位机(IPC)
直接通过以太网接口调用。整机控制
系统能够完成各轴状态实时显示、电机伺服驱动、焊接路径规划、焊接参数自动调节等任务。
实际焊接实验表明,该系统满足散热器焊接精度要求,能很好地完成
T
型管散热器相贯线处
的焊接,提高了生产效率和焊接质量。
关键词:
双焊枪;焊接机;6K4运动控制器;工控机;散热器
中图分类号
:TP23
文献标识码
:A
文章编号
:1009-0134(2012)10(上)-0015-03
Doi:
-
LabView读取单片机串口输出数据.vi
2020-06-17 20:14:39上位机LabView读取单片机串口输出的数据,获取一次读取字节数,检索数组中的数据并显示,超出预警发出报警声音和指示灯亮。 -
实时读取串口数据并绘图的Labview程序
2021-03-06 23:42:29利用Labview实时读取串口数据并绘图,适用于单片机等嵌入式系统的在线实时调试,例如给Arduino调试PID参数 -
LabVIEW,串口,读取数据,简单实用
2018-10-01 21:08:12资源一分,LabVIEW的程序,尽量选用版本较高的,可以确信的是LabVIEW 2015可以打开资源。大神绕道,仅仅给LabVIEW初学者提供一个串口读取数据的范例 -
labview串口数据读取与通讯程序.vi
2019-11-01 17:55:35运用labview读取RE232的串口数据,可以实现与单片机等仪器的通讯 -
Labview读取数据的多串口同时完全关闭
2019-08-04 23:10:19每次打开labview串口采集数据,要开始下一次采集,需要把labview软件关闭再次重新打开,不然数据接收不上来 原因是:上一次数据采集的串口没有完全关闭,特别是针对于多串口关闭时又具有一定的操作复杂性 解决: ...效果:
每次打开labview串口采集数据,要开始下一次采集,需要把labview软件关闭再次重新打开,不然数据接收不上来
原因是:上一次数据采集的串口没有完全关闭,特别是针对于多串口关闭时又具有一定的操作复杂性
解决:
并行循环
循环1内定义停止按钮,当停止按钮按下时内部的所有循环停止,
并将该停止按钮创建局部变量,在循环2内设定当停止按钮按下时内部所有循环停止。
部分程序框图展示:
- 序列结构的连接:
- 循环内停止的操作:
其中的错误输出来自保存文件和串口关闭
例如:
参考:
http://bbs.elecfans.com/jishu_213498_1_1.html
增加序列结构复位停止按钮
-
LabView中串口通信读取数据出现乱码的情况说明
2017-06-16 10:53:09因为通信过程中不定时,偶尔,随机出现传送数据乱码,困扰了我好多天,在各大论坛上也未找到解决办法,问了很多于是精简自己的程序框图,从最...导致每次循环时,又会重新去配置串口,造成了延时,导致后面的数据读取因为通信过程中不定时,偶尔,随机出现传送数据乱码,困扰了我好多天,在各大论坛上也未找到解决办法,问了很多于是精简自己的程序框图,从最基本的串口读写入手,寻找问题,发现是因为自己把串口配置函数放在了大循环while里面,而且等待时间设置不合理,导致每次循环时,又会重新去配置串口,造成了延时,导致后面的数据读取紊乱。
因此,像我一样的初学者得注意了,有两种修改方法都是可以的:
1.串口配置以及串口关闭最好是放在while循环外面,而且当串口配置放在外面时,接收到的数据显示速度明显加快了很多;
由于生成应用程序后,LabVIEW界面自动处于运行状态,此时,我在运行的状态下,去配置串口号,波特率等信息(由于在大循环外面),就会导致命令发送不出去,得关闭运行状态,配置好参数后重新打开,这对于应用者来说很不方便,于是就又寻找一种解决办法:
2.把串口配置放在大循环里面,设置合理的等待下一个整数倍毫秒函数。这样自动运行状态时,用户可以配置参数,比较方便。该函数功能:
等待直至毫秒计时器的值为毫秒倍数中指定值的整数倍。该函数用于同步各操作。可在循环中调用该函数,控制循环执行的速率。但是,第一个循环周期可能很短。连线0至 毫秒倍数输入,可迫使当前线程放弃对CPU的控制。
我方法一中设置的为
,自以为已经够可以了,可是当后来对这个函数有了深入的了解过后,重新配置参数,发现在方法二中设置为
时,不再出现收到消息乱码的问题。这就是我的实际经验,由于开始学,找了很久找不出问题所在,终于在一步步摸索中找到问题所在。遇到跟一样问题的学习者,可以参考我上述的方法试试,看看这能不能给你指引方向。
-
读取串口数据画图
2012-02-21 16:45:14同学在用FPGA做读卡器,上位机准备用labview做,因为不熟悉所以让我用C#做个备份,备不时之需。 菜鸟级别就跑去给人家帮忙,越帮越忙。...2、读取的串口数据存储到txt中 3、在winform中画图 从实习开始同学在用FPGA做读卡器,上位机准备用labview做,因为不熟悉所以让我用C#做个备份,备不时之需。
菜鸟级别就跑去给人家帮忙,越帮越忙。他的要求是自定义串口属性,上位机发送命令,然后读取每次8096bytes的回复数据,然后利用接收到的数据画图,做一些统计和计算。自己做的过程中将问题分解了下:
1、串口读取数据
2、读取的串口数据存储到txt中
3、在winform中画图
从实习开始就有接触到串口,控制GSM模块的时候有用过,自以为比较有点认识。首先是发现原来串口的可选择的波特率是与电脑的配置有关的。我的直接使用主机自带的串口最大支持的波特率为115200;然后通过USB转串口可以支持最高的256000。接着直接将ReceivedBytesThreshold设置成了8096,准备坐等其成。貌似需要加大ReadBufferSize。
直到sleep 2秒才能保证正确的数据接收,而且还会出现完成数据接收后还会触发接收事件的现象,接收到的明显是0,搞不清楚。去查各种C#书,想要看明白串口操作,结果发现C#貌似对网络支持的很强大的样子,串口几乎没有提及,发帖,qq群 有的也就是之言片语。有说是开个线程专门去接收的,但是接收事件不是本身就是一个单独的线程吗。最后通过一直读知道收到足够的数据的方式加快了点速度。 但是同学的labview做出来的没有什么明显的需要接收时间的问题,看来串口操作还是没设置好啊
当还在读数据的时候关闭串口,会报错,添加了个标志。
将接收数据存储下来,网上抄袭各种代码,结果总是得到乱码。不解啊,看了下之前的一个人家的代码,原来少了码制转换。总算可以存储了。
画图,折腾了好久才知道是用graphics来做的,panel上面做图片问题老是会有闪烁的很厉害的问题。picturebox的绘制不是说画上去马上就表现出来的。
顺便贴上自己粗略的代码,记忆一下。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.IO.Ports;
using System.Threading;
namespace UpperConputer
{
public partial class Form1 : Form
{
private SerialPort m_serialport = new SerialPort();
//private string fullData = "";
private byte[] fulldata = new byte[8005];
private List<byte> buffer = new List<byte>(8005);
private uint[] intData = new uint[2001];
private bool serialPortMark=false;
private string xmark;
public Graphics graphicsObject;
private Thread threadshow;
private bool portclosing = false;
private bool localPortListening = false;
private delegate void showdelegate();
private DateTime begin, end;
//private string selectedFrequency;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
comboBoxSerialPortN.SelectedIndex = 3;
comboBoxStopBit.SelectedIndex = 0;
comboBoxDataBit.SelectedIndex = 3;
comboBoxBuadRate.SelectedIndex = 6;
comboBoxSelF.SelectedIndex = 7;
//设置双缓冲
this.SetStyle(ControlStyles.UserPaint, true);
this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);
this.SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
//newthread=new Thread(new ThreadStart(rec));
//newthread.Start();
CreateImage();
}
private void showtext(string str)
{
textBox1.Text = str;
}
private void initializeSerialPort()
{
m_serialport.PortName = comboBoxSerialPortN.Text;
m_serialport.BaudRate =Convert.ToInt32( comboBoxBuadRate.Text);
m_serialport.DataBits = Convert.ToInt16(comboBoxDataBit.Text);
m_serialport.Parity = Parity.None;
//m_serialport.ReadTimeout = 1000;
switch (comboBoxStopBit.Text)
{
case"1":
m_serialport.StopBits = StopBits.One;
break;
case"1.5":
m_serialport.StopBits = StopBits.OnePointFive;
break;
case"2":
m_serialport.StopBits = StopBits.Two;
break;
}
//can used
m_serialport.ReadBufferSize = 10000;
m_serialport.ReceivedBytesThreshold = 1;
//thread_com_read();
}
private void m_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
if (portclosing) return;
try
{
localPortListening = true;
byte firstByte = Convert.ToByte(m_serialport.ReadByte());
int bytesRead = m_serialport.BytesToRead;
byte[] bytesData = new byte[bytesRead + 1];
bytesData[0] = firstByte;
int count = buffer.Count();
for (int i = 1; i <= bytesRead; i++)
{
bytesData[i] = Convert.ToByte(m_serialport.ReadByte());
}
//MessageBox.Show(Convert.ToString(bytesRead));
for (int j = 0; j <=bytesRead; j++)
{
buffer.Add(bytesData[j]);
}
count = buffer.Count();
if (buffer.Count() == 8004)
{
for (int i = 0; i < 8004; i++)
{
fulldata[i] = buffer[i];
}
for (int i = 0, j = 0; i < 8004; i += 4, ++j)
{
intData[j] = System.BitConverter.ToUInt32(fulldata, i);
}
//Thread.Sleep(100);
drawImage(intData);
//Thread.Sleep(100);
buffer.Clear();
}
string str = byteToHexStr(bytesData);
File.WriteAllText("data1.txt", str);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message+" At datareceived");
//处理超时错误
}
finally
{
localPortListening = false;
}
//can used
//if (portclosing) return;
//try
//{
// localPortListening = true;
// System.Threading.Thread.Sleep(2000);
// byte[] receivedData = new byte[m_serialport.BytesToRead];
// int count = m_serialport.Read(receivedData, 0, m_serialport.BytesToRead);
// //m_serialport.DiscardInBuffer();//清空接收缓冲区数据
// if (count == 8004)
// {
// for (int i = 0, j = 0; i < 8004; i += 4, ++j)
// {
// intData[j] = System.BitConverter.ToUInt32(receivedData, i);
// }
// }
// else
// {
// return;
// }
// for (int i = 0, j = 0; i < 8004; i += 4, ++j)
// {
// intData[j] = System.BitConverter.ToUInt32(receivedData, i);
// }
// drawImage(intData);
//}
//catch (Exception ex)
//{
// MessageBox.Show(ex.Message);
//}
//finally
//{
// localPortListening = false;
//}
}
public string byteToHexStr(byte[] bytes)
{
string returnStr = "";
if (bytes != null)
{
for (int i = 0; i < bytes.Length; i++)
{
returnStr += bytes[i].ToString("X2");
}
}
return returnStr;
}
private void drawImage(uint[] intData)
{
float xcoordone,xcoordtwo;
double xmax,ymax;
double y1, y2;
int count = 0;
double centreFrequency;
Graphics g = Graphics.FromImage(pictureBox1.Image);
//pictureBox1.Refresh();
//Graphics g = pictureBox1.CreateGraphics();
if (xmark == "0")
{
xcoordone = 40;
g.DrawString("0",new Font("Arial",16),Brushes.Red,new Point(30,378));
}
else
{
xcoordone = 100;
g.DrawString(xmark, new Font("Arial", 16), Brushes.Red, new PointF(90, 378));
}
xmax = xcoordone;
ymax = 0;
xcoordtwo = xcoordone + (float)0.3;
Pen mypen = new Pen(Brushes.Blue, 1);
Pen dashLinePen = new Pen(Brushes.Red, 1);
dashLinePen.DashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
//draw every point and using line to link each other
for (int i = 0; i < intData.Count()-1; ++i)
{
y1 = (double)intData[i] / 16777216 * 300;
y2=(double)intData[i+1]/16777216*300;
// obtain the max point
if (ymax < y1)
{
ymax = y1;
xmax = xcoordone;
count=i;
}
g.DrawLine(new Pen(Color.Black,1),new PointF(xcoordone,(float)(378 - y1)),new PointF(xcoordtwo, (float)(378 - y2)));
xcoordone += (float)0.3;
xcoordtwo += (float)0.3;
}
//画x轴第二个标示点
int nextxcoord = int.Parse(xmark);
nextxcoord=nextxcoord+2;
g.DrawString(Convert.ToString( nextxcoord),new System.Drawing.Font("Arial",16),Brushes.Red,new PointF(xcoordone,378));
//画最高频率线并加注释
nextxcoord -= 2;
g.DrawLine(dashLinePen, (float)xmax, (float)(378-ymax), (float)xmax, 378);
centreFrequency=nextxcoord+count*0.001;
g.DrawString("f:" + Convert.ToString(centreFrequency),new Font("Arial",16), Brushes.Red, (float)xmax, 388);
//寻找0.707两点,画线,计算Q值
mypen.Dispose();
dashLinePen.Dispose();
g.Dispose();
showdelegate show = new showdelegate(showpicture);
this.Invoke(show);
}
private void showpicture()
{
pictureBox1.Visible = false;
pictureBox1.Visible = true;
}
private void CreateImage()
{
pictureBox1.Refresh();
int height = 418, width = 820;
Image image = new Bitmap(820, 418);//定义图象大小
Graphics g = Graphics.FromImage(image); //定义gdi绘图对象
Pen mypen = new Pen(Brushes.DeepSkyBlue, 1);
try
{
g.Clear(Color.White);//清除整个绘图面并以指定背景色填充。
//g.FillRectangle(Brushes.WhiteSmoke, 0, 0, width, height);//填充由一对坐标、一个宽度和一个高度指定的矩形的内部。
//画边框
g.DrawRectangle(mypen, 0, 0, width - 9, height - 3);//绘制由坐标对、宽度和高度指定的矩形。
g.DrawLine(new Pen(Brushes.Black, 1), 40, height - 40, width - 40, height - 40);//x轴
g.DrawLine(new Pen(Brushes.Black, 1), width - 50, height - 30, width - 40, height - 40);//箭头
g.DrawLine(new Pen(Brushes.Black, 1), width - 50, height - 50, width - 40, height - 40);
g.DrawLine(new Pen(Brushes.Black, 1), 40, height - 40, 40, 40);//y轴
g.DrawLine(new Pen(Brushes.Black, 1), 30, 50, 40, 40);
g.DrawLine(new Pen(Brushes.Black, 1), 50, 50, 40, 40);
g.DrawString("频率、Q值测试图", new Font("宋体", 16), Brushes.Green, new PointF(300, 20));
g.DrawString("电压值", new Font("Arial", 16), Brushes.Aqua, new PointF(50, 40));
g.DrawString("频率", new Font("宋体", 16), Brushes.Aqua, new PointF(width - 90, height - 30));
g.DrawString("中心频率:", new Font("宋体", 16), Brushes.Aqua, new PointF(width - 190, 30));
g.DrawString("Q值:", new Font("宋体", 16), Brushes.Aqua, new PointF(width - 140, 50));
mypen.Dispose();
g.Dispose();
pictureBox1.Image = image;
}
catch
{ }
}
private void button1_Click(object sender, EventArgs e)
{
if (!m_serialport.IsOpen)
{
MessageBox.Show("打开串口!");
return;
}
if (comboBoxSelF.Text == "")
{
MessageBox.Show("请选择测试频率!");
}
else
{
xmark = comboBoxSelF.Text;
m_serialport.Write(comboBoxSelF.Text);
}
}
private void button2_Click(object sender, EventArgs e)
{
}
private void buttonOpen_Click(object sender, EventArgs e)
{
try
{
if (!m_serialport.IsOpen)
{
//CreateImage();
initializeSerialPort();
m_serialport.Close();
m_serialport.Open();
//thread_com_read();
m_serialport.DataReceived += new SerialDataReceivedEventHandler(m_DataReceived);
serialPortMark = true;
buttonOpen.Text = "关闭串口";
}
else
{
portclosing = true;
while (localPortListening) Application.DoEvents();
serialPortMark = false;
buttonOpen.Text = "打开串口";
m_serialport.DataReceived -= new SerialDataReceivedEventHandler(m_DataReceived);
m_serialport.Close();
portclosing = false;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void buttonRefresh_Click(object sender, EventArgs e)
{
CreateImage();
}}
} -
Labview串口数据接收和解析程序设计
2021-01-31 15:27:51Labview串口数据接收和解析程序设计 1.基本需求 下位机按固定的频率上传数据,数据帧包含帧头和帧尾,帧头帧尾的长度以两个字节为例,上传的数据被上位机接收并存储在缓冲区,labview程序对缓冲区的数据进行周期性的... -
LabVIEW,双通道切换,串口读取数据,实时显示
2018-10-01 22:00:06LabVIEW,双通道切换,串口读取数据,实时显示,东西是别人的,只是借平台分享给大家,很想0分,可惜没这选项。见谅,有需要的可以下载,帮助自己改改自己的程序就好。相互学习! -
关于LabVIEW VISA串口读取的属性节点bytes at port的值为0的问题分析
2019-01-26 14:40:26当上位机按下某个按钮之后,LabVIEW执行相应的事件结构,通过串口发送指令,当下位机开始执行对应的程序时,给上位机发送一个字符“D”,作为准备就绪指令,上位机接收到字符,就开始发送数据。 下位机程序段:... -
GPS串口数据读取及解析的LABVIEW程序
2009-05-20 21:30:56使用LBVIEW写的GPS串口读取及解析程序 -
基于LabVIEW的串口通信
2019-06-10 19:11:47将串口数据送入MATLAB中分析,在串口保存数据的时候注意两个问题: 第一:串口传输的是字符串,所以默认带有回车,自己在保存数据的时候,如果原样保存,千万不能加“回车换行符号”,不然保存的txt是无法读取的 第... -
串口读取labview上位机程序
2015-08-02 19:06:13用labview编写的串口读取上位机程序,实现与单片机的串口通信,并能将数据实时显示在示波图表界面上,还能将采集的数据以文本形式保存。 -
labview 串口连续读写
2015-01-19 15:44:07labview 串口连续读写。可以轻松的完成串口数据的读取任务和写人物。 -
labview的VISA无法读取数据
2017-04-20 12:47:16单片机的程序应该是没问题的,因为用串口助手能读到数据。  ![提示错误]... -
【LabVIEW串口编程】03 串口接收
2020-10-28 21:14:28上一篇说到,串口发送一次数据的步骤为:打开串口-->发送数据-->关闭串口。 参照串口发送的思路,串口接收一次数据的步骤为:打开串口-->接收数据-->关闭串口。但是这里有一个问题,数据的接收方是不... -
labview初始学习过程中遇到串口读取框红蓝色交替闪烁的处理
2018-12-14 10:41:00labview工程的程序框图VISA串口读取框红蓝交替闪烁,前面板接收数据错乱,或者是接受不了,这是你不小心设置了断点。 转载于:https://www.cnblogs.com/weir1214/p/10118089.html... -
LabVIEW上位机与串口通信
2017-08-21 17:16:52主要功能包括:对帧中的类型字节进行解析,并多通道显示在示波器上帧偏差校正(这个一般人可能都没有做,造成数据丢失,而我这只要串口传输的数据没错,就能无错漏的解析每一帧)实时显示读取的每个字节... -
关于Labview串口通讯的进制转换
2020-05-23 11:33:08我们在编写串口通讯或者modbus的时候,往往读到数据但是总是解析出错,这个原因是在串口通讯中实际传输的是ASCLL码,但是一般字符串控件显示出来的并不是ASCLL码,则造成解析出错。 解决此方法需要正常显示和16进制... -
20180110labview串口传输实时显示相关内容
2018-01-10 20:16:002.在一次测量OK的那个文件里用while指定字节读取,注意不用属性节点,3.加一组数据读数完毕的结束命令,可以的话再完善,不可以的话,用延时加属性节点的情况,并完善4.清空文件缓存区5.取数据并压入队列的方式,用... -
哈夫曼labview实现_LABVIEW如何保证读取文件从上次读取末尾开始的?
2021-01-13 18:19:28满意答案fasf2225k2018.12.24采纳率:41%等级:8已帮助:811人1 8.6版本需要安装labview VISA附加工具包,网上很多2 串口工具在控件----数据通信目录下..点任何一个串口控件的帮助,里面有例程,10分钟就能看懂了。... -
串口数据帧接收和解析.vi
2021-01-31 15:14:22Labview串口通信,可以实现对帧头帧尾寻找,提取其中的有效信息,针对读取接收缓存区存在对数据以及帧头帧尾截断的情况作了处理,欢迎大家分析参考 -
LABVIEW蓝牙读实现心率数据并显示心率波形
2020-12-08 13:31:452020年电子设计大赛A题——文件工程包含用LABVIEW实现心率读取,接受蓝牙转串口,读取接受的数据,最后在显示界面实时显示心率波形、步数、距离、温度。 -
LabVIEW——随机产生明文并验证串口回传结果
2020-12-20 21:49:56字节总数是指从缓冲区接收的数据大小,如图中所示是每次从缓冲区读取64字节的数据。 循环次数是指整个程序循环执行的次数,每一次执行会随机生成一组明文,得到一组密文,从缓冲区接收一组数据。 明文秘钥生成模块:... -
labview问题清单
2020-11-12 16:35:141、使用VISA读取串口打印信息 a、配置后,打开串口失败----解决-----com口及波特率配对的情况下,别的串口工具能链接串口的情况下、拔掉串口,关闭Labview,重新打开串口(若打开串口,上一次串口打开后没有关闭,... -
3D_MPU9250_SEEK_labview
2018-11-23 21:49:283D_MPU9250_SEEK_labview串口数据读取,进行3d绘图。请多多指教 -
基于LabVIEW虚拟仪器的数据访问及报表生成论文(本科设计论文
2018-04-11 11:08:232.5.2 LabVIEW 与多线程............................................................................................................................. 9 2.5.3 多线程技术在本设计中的应用..................... -
Labview温度采集系统
2020-06-20 08:30:34选项卡控件,更改头名称,温度采集数据,读取历史数据 ➕温度计,匹配至源 ➕布尔灯,改名报警灯 ➕输入控件,改名温度阈值(超过温度阈值灯要一闪一闪) ➕波形图表,纵坐标改温度,名称改温度采集图表(可以把颜色... -
VC与Labview、Matlab编程论文资料
2014-05-05 21:41:37基于LabVIEW的串口数据采集的实现及应用.pdf 基于LabVIEW的串口通信应用.pdf 基于LabVIEW的信号处理技术应用演示及实验系统设计.pdf 基于LabVIEW的倒立摆控制系统研究.pdf 基于LabVIEW的光纤傅里叶变换光谱仪数据...