Created
September 12, 2021 14:53
-
-
Save dj1711572002/c1bc13afb7a66b0701fc4b98773b962d to your computer and use it in GitHub Desktop.
VB.NET Serial_Receiving_DataGridView Log
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
'Serial Port Recieve Sample Program | |
'Form1 Object must create ,button1,2 & textbox 1,2 | |
Imports System.IO.Ports | |
Public Class Form1 | |
Dim dArr(500000) As String | |
Dim rn, rn_start, rn_pause As Integer | |
Dim sflag As Integer | |
'dgv初期設定 | |
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load | |
'dgv1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells 'セル幅を自動調整 | |
dgv1.ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableWithoutHeaderText | |
dgv1.RowHeadersWidth = 60 | |
dgv1.ColumnCount = 16 | |
dgv1.RowCount = 1 | |
dgv1.Rows.Add("CH数", "", "COM No", " ", "BaudRate", "115200") | |
Button1.Enabled = True | |
Button2.Enabled = False | |
CheckBox1.Checked = True | |
End Sub | |
Delegate Sub DataDelegate(ByVal sdata As String) | |
Private Sub PrintData(ByVal sdata As String) | |
rn = rn + 1 | |
dArr(rn) = sdata | |
'Dim cnmastr() As String = sdata.Split(vbCrLf) | |
'If cnmastr.Length > 1 Then | |
' ' Dim arr1() As String = cnmastr(0).Split(",") | |
TextBox1.Text = rn.ToString | |
' 'dgv1.Rows.Add(arr1) | |
' 'dgv1.Rows(rn).HeaderCell.Value = rn.ToString() '行ヘッダーにデータ番号rn | |
' 'dgv1.FirstDisplayedScrollingRowIndex = dgv1.Rows.Count - 1 '最新データの最下行を表示 | |
'End If | |
End Sub | |
'スタートボタン押し | |
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click | |
'シリアル設定値読み込む | |
If SerialPort1.IsOpen = False Then | |
If dgv1.Rows(0).Cells(3).Value <> " " And dgv1.Rows(0).Cells(5).Value <> " " Then | |
Dim portName As String = "COM" + dgv1.Rows(0).Cells(3).Value 'dgv1からポート番号読み込み | |
SerialPort1.PortName = portName ' portName オープンするポート名を格納 | |
Dim baudrate As String = dgv1.Rows(0).Cells(5).Value 'dgv1からバーレート読み込み | |
SerialPort1.BaudRate = baudrate 'baudrate ボーレートを格納 | |
SerialPort1.Open() 'ポートオープン | |
Button1.Enabled = False | |
Button2.Enabled = True | |
rn_start = 1 | |
Else | |
TextBox1.Text = "*******Please Input COM No*******" | |
End If | |
End If | |
End Sub | |
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click | |
If SerialPort1.IsOpen = True Then 'ポートオープン済み | |
'CheckBox1.Checked = False | |
System.Threading.Thread.Sleep(2000) '受信タスク停止するまでdelay1秒いれてからクローズする | |
SerialPort1.Close() | |
dgv1.CurrentCell = dgv1(0, dgv1.Rows.Count - 1) '最下行にカーソルを維持 | |
dgv1.Rows.Clear() | |
rn = 0 | |
dgv1.RowHeadersWidth = 60 | |
dgv1.ColumnCount = 16 | |
dgv1.RowCount = 1 | |
dgv1.Rows.Add("CH数", "", "COM No", " ", "BaudRate", "115200") | |
End If | |
Button1.Enabled = True | |
Button2.Enabled = False | |
End Sub | |
Private Sub SerialPort1_DataReceived(sender As Object, e As SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived | |
Dim ReceivedData As String = " " '受信データ用変数を宣言します | |
If CheckBox1.Checked = True Then | |
Try | |
ReceivedData = SerialPort1.ReadLine 'データを受信します | |
Catch ex As Exception | |
ReceivedData = ex.Message '例外処理を行います | |
End Try | |
'SerialPort1.DiscardInBuffer() | |
'Invokeメソッドにより実行されるメソッドへのデリゲートの宣言を行い、受信データを表示します | |
Dim adre As New DataDelegate(AddressOf PrintData) | |
Me.Invoke(adre, ReceivedData) | |
End If | |
End Sub | |
Private Sub CheckBox1_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox1.CheckedChanged | |
If CheckBox1.Checked = True And SerialPort1.IsOpen = True Then | |
TextBox1.Text = "****Sampling****" | |
rn_start = rn | |
ElseIf CheckBox1.Checked = False And SerialPort1.IsOpen = True Then | |
TextBox1.Text = "****Paused****" | |
Dim i As Integer | |
For i = rn_start To rn | |
'Dim cnmastr() As String = dArr.Split(vbCrLf) | |
'If cnmastr.Length > 1 Then | |
Dim arr1() As String = dArr(i).Split(",") | |
TextBox1.Text = i.ToString | |
dgv1.Rows.Add(arr1) | |
dgv1.Rows(i).HeaderCell.Value = i.ToString() '行ヘッダーにデータ番号rn | |
dgv1.FirstDisplayedScrollingRowIndex = dgv1.Rows.Count - 1 '最新データの最下行を表示 | |
'End If | |
Next | |
End If | |
End Sub | |
Private Sub dgv1_MouseClick(sender As Object, e As MouseEventArgs) Handles dgv1.MouseClick | |
If dgv1.CurrentCell.RowIndex = 0 And dgv1.CurrentCell.ColumnIndex = 3 Then | |
TextBox1.Text = "" | |
End If | |
End Sub | |
End Class |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment