多通道数据采集
上位机程序代码
Public Class 多通道数据采集
Public Delegate Sub myDelegate()
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
For i As Integer = 0 To My.Computer.Ports.SerialPortNames.Count - 1
cmbSerialPort.Items.Add(My.Computer.Ports.SerialPortNames(i))
Next
btnCloseSerialPort.Enabled = False
SerialPort.Close()
Timer.Enabled = False
picState.BackColor = Color.Red
cmbBoadrate.Items.Add("4800")
cmbBoadrate.Items.Add("9600")
cmbBoadrate.Items.Add("57600")
cmbChanel.Items.Add("通道一")
cmbChanel.Items.Add("通道二")
cmbChanel.Items.Add("通道三")
cmbChanel.Items.Add("通道四")
End Sub
Private Sub btnOpenSerialPort_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnOpenSerialPort.Click
If SerialPort.IsOpen = True Then
SerialPort.Close()
End If
If cmbSerialPort.Text = "" Then
MessageBox.Show("请选择一个串口", "串口选择警告", MessageBoxButtons.OK, MessageBoxIcon.Error)
Else
SerialPort.PortName = cmbSerialPort.Text
SerialPort.ReadBufferSize = 4096
SerialPort.BaudRate = cmbBoadrate.Text
SerialPort.Parity = IO.Ports.Parity.None
SerialPort.DataBits = 8
SerialPort.StopBits = IO.Ports.StopBits.One
SerialPort.DiscardNull = True
SerialPort.DtrEnable = False
SerialPort.Encoding = System.Text.Encoding.ASCII
SerialPort.RtsEnable = False
SerialPort.Open()
picState.BackColor = Color.Green
btnCloseSerialPort.Enabled = True
End If
End Sub
Private Sub btnClear_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnClear.Click
If MessageBox.Show("清空文本框显示请选择Yes,清零计数器请选择No", "选择一个删除对象", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Information) = Windows.Forms.DialogResult.Yes Then
txtDataReceive.Text = String.Empty
Else
txtNumOfReceive.Text = "0"
txtNumOfSendChar.Text = "0"
End If
End Sub
Public Sub SendtoSbuf()
Dim TestArray() As String = Split("fe")
'Dim str(0)="fe" as string
Dim hexBytes() As Byte
ReDim hexBytes(TestArray.Length - 1)
Dim i As Integer
For i = 0 To TestArray.Length - 1
hexBytes(i) = Val("&h" & TestArray(0))
Next
SerialPort.Write(hexBytes, 0, 1)
txtNumOfSendChar.Text = (Val(txtNumOfSendChar.Text) + 1).ToString
End Sub
Public Function DecToHex(ByVal DecNumber As Byte) As String '转换成十六进制字符串
If DecNumber <= 15 Then
DecToHex = " 0" & Hex(DecNumber)
Else : DecToHex = " " & Hex(DecNumber)
End If
End Function
Public Sub GetCharFromAndSendToTextBox()
Dim str_indata As String
Dim byteToRead As Int16
byteToRead = SerialPort.BytesToRead '(读取缓冲区的字节长度)
txtNumOfReceive.Text = (Val(txtNumOfReceive.Text) + byteToRead).ToString
Dim ch(byteToRead) As Byte
Dim bytesRead As Int16 = 0
' str_indata = SerialPort1.ReadExisting()
bytesRead = SerialPort.Read(ch, 0, byteToRead)
If bytesRead > 0 Then
For i As Int16 = 0 To bytesRead - 1
'System.Threading.Thread.Sleep(50) ' 这个很重要!
str_indata = str_indata & DecToHex(ch(i))
Next
End If
With txtDataReceive
.Font = New Font("Garamond", 12.0!, FontStyle.Bold)
.AppendText(str_indata)
.ScrollToCaret()
End With
End Sub
Private Sub btnStartCollectData_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStartCollectData.Click
If SerialPort.IsOpen = True Then
SendtoSbuf()
Else : MessageBox.Show("请打开串口", "警告", MessageBoxButtons.OK, MessageBoxIcon.Asterisk)
End If
End Sub
Private Sub btnCloseSerialPort_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCloseSerialPort.Click
SerialPort.Close()
picState.BackColor = Color.Red
End Sub
Private Sub SerialPort_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort.DataReceived
txtDataReceive.Invoke(New myDelegate(AddressOf GetCharFromAndSendToTextBox), New Object() {})
End Sub
Private Sub btnCycleCollect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCycleCollect.Click
If SerialPort.IsOpen = True Then
SendtoSbuf()
Timer.Enabled = True
Else : MessageBox.Show("请打开串口", "警告", MessageBoxButtons.OK, MessageBoxIcon.Asterisk)
End If
End Sub
Private Sub Timer_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer.Tick
SendtoSbuf()
End Sub
Private Sub btnStopCollect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStopCollect.Click
Timer.Enabled = False
End Sub
End Class相关推荐
基于LabVIEW的多通道数据采集系统,labview多通道数据采集例子,LabView
### 多通道数据采集1. **硬件接口**: LabVIEW支持多种数据采集硬件,如DAQ(Data Acquisition)卡,可以连接到不同的传感器,实现多通道同步或异步采集。2.
LabVIEW多通道数据采集实战指南
LabVIEW(Laboratory Virtual Instrument Engineering Workbench)是由美国国家仪器(National Instruments,简称NI)开发的一种图形化编程语言。自1986年推出以来,它因其直观的编程方式和强大的数据处理能力,已经成为测试、测量和控制领域工程师和科学家的重要工具。LabVIEW广泛应用于工业自动化、数据分析、原型设计以及嵌入式系统开发,特别适合于那些需要实时数据采集和控制的场合。
STM32F103多通道ADC数据采集与处理实战
STM32F103是STMicroelectronics推出的一款高性能的ARM Cortex-M3微控制器。它适用于广泛的嵌入式应用,从简单的工业控制到复杂的通信设备。此微控制器的主要特性包括:高性能ARM Cortex-M3 32位核心,运行频率可达72MHz。丰富的外设接口,如USART, SPI, I2C, CAN等。256KB的闪存和48KB的SRAM。多个模拟和数字输入/输出端口。内置ADC,具有多个通道,且支持多种分辨率。
STM32多通道ADC数据采集与DMA优化
嵌入式系统广泛应用于工业控制、消费电子、医疗设备等领域,其中模数转换器(ADC)作为关键组成部分,扮演着至关重要的角色。ADC负责将模拟信号转换为数字信号,使得微控制器可以处理和分析传感器、声音等非数字源的数据。通过将连续的信号采样、量化并最终转换成数字格式,ADC使得数字系统能够理解和使用这些模拟信息,进而实现更加复杂和智能的功能。接下来的章节将深入探讨DMA原理及其在数据采集中的应用,以及STM32系列微控制器ADC模块的特性,为理解和应用ADC打下坚实的基础。
LabVIEW编写的多通道数据采集程序,labview多通道数据采集例子,LabView
在本案例中,我们讨论的是一个利用LabVIEW编写的多通道数据采集程序,该程序能够实现对多个数据源的同步采集和显示。首先,我们要理解"DAQ"的含义,即Data Acquisition,数据采集。


VB基础类
