Created
September 15, 2021 20:42
-
-
Save dj1711572002/82779ce58006b41e9fd5416fb5f11aca to your computer and use it in GitHub Desktop.
VB.NET GNSS_MovingBase_3PortReceiving_Monitor_Program(DataGridView Log to CSV file)_rev00
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 relP As Double(,) | |
'Dim relPN As Double() | |
'Dim relPE As Double() | |
'Dim relPD As Double() | |
'Dim relLen As Double() | |
Dim rn, rn_start, rn_pause As Integer | |
Dim sflag As Integer | |
Dim ReceivedDataTotal As String = "" | |
Dim ReceivedData1 As String = " " '受信データ用変数を宣言します | |
Dim ReceivedData2 As String = " " '受信データ用変数を宣言します | |
Dim ReceivedData3 As String = " " '受信データ用変数を宣言します | |
Dim strPVT As String | |
Dim sbPVT As String() | |
Dim bPVT As Byte() | |
Dim strRELP As String | |
Dim sbRELP As String() | |
Dim bRELP As Byte() | |
Dim parPVT As Integer() | |
Dim parRELP As Integer() | |
Dim NVC As Integer = 0 'NAV data Counter | |
Dim radioNo As Integer | |
'=============File declarations ================ | |
Public file As System.IO.StreamWriter | |
Public fileH As System.IO.StreamWriter | |
Public fopen As Integer | |
Public f1open As Integer | |
Public fnameH As String | |
Public fStr1, fstr2 As String | |
Public copyCol() | |
Public copyRow() | |
'dgv初期設定 | |
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load | |
dgv1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells 'セル幅を自動調整 | |
dgv2.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells 'セル幅を自動調整 | |
dgv2.Font = New Font(“MS ゴシック”, 14, FontStyle.Bold) | |
dgv1.ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableWithoutHeaderText | |
dgv1.ColumnCount = 172 | |
dgv1.RowCount = 1 | |
dgv1.RowHeadersWidth = 60 | |
For Each sp As String In My.Computer.Ports.SerialPortNames | |
ComboBox1.Items.Add(sp) | |
Next | |
Dim k As Integer | |
For k = 0 To 171 | |
dgv1.Columns(k).HeaderText = k + 1 | |
Next | |
dgv1.Rows.Add("COM1", "5 ", "COM2", "6", "COM3", "8 ", "BaudRate", "115200") | |
Button1.Enabled = True | |
Button2.Enabled = False | |
CheckBox1.Checked = True | |
'===========dgv2 初期設定================================== | |
dgv2.ColumnCount = 10 | |
dgv2.RowCount = 1 | |
dgv2.RowHeadersWidth = 100 | |
'dgv2.Rows.Add("BaseLon", "BaseLat", "Antenna_No", "date", "relPosN", "relPosE", "relPosD ", "relPosLen") | |
'==============dgv2 header text========================== | |
dgv2.Columns(0).HeaderText = "BaseNo" | |
dgv2.Columns(1).HeaderText = "radioNo" | |
dgv2.Columns(2).HeaderText = "relPosN" | |
dgv2.Columns(3).HeaderText = "relPosE" | |
dgv2.Columns(4).HeaderText = "relPosD" | |
dgv2.Columns(5).HeaderText = "relPosLen" | |
dgv2.Columns(6).HeaderText = "Base_lon" | |
dgv2.Columns(7).HeaderText = "Base_lat" | |
'------------ | |
ReDim relP(4, 1000) '0=relPosN,1=relPosE,2=relPosD,3=relPosLength | |
'ReDim relPN(1000) | |
'ReDim relPE(1000) | |
'ReDim relPD(1000) | |
'ReDim relLen(1000) | |
ReDim sbPVT(100) | |
ReDim sbRELP(72) | |
ReDim bPVT(200) | |
ReDim bRELP(172) | |
'ReDim dgArry(60000, 48) | |
'dgv1.ColumnCount = 172 | |
'dgv1.RowCount = 2000 | |
ReDim parPVT(100) | |
ReDim parRELP(80) | |
'ReDim headPVTArry(47) | |
'ReDim headRELPArry(15) | |
End Sub | |
Delegate Sub DataDelegate(ByVal sdata As String) | |
Private Sub PrintData(ByVal sdata As String) | |
Dim slen As Integer = sdata.Length | |
Dim sd1, sd2, sd3 As String | |
Dim setN As Integer | |
setN = 515 '172*2文字+171デリミタ=515文字 | |
sd1 = "" | |
sd2 = "" | |
sd3 = "" | |
' 'Debug.print("Org_sdata.length-" & CStr(sdata.Length) & "-Result_sdata-" & sdata) | |
' 'Debug.print("Org_sd2.length-" & CStr(sd2.Length) & "-Result_sd2-" & sd2) | |
'----半端データsd2がある場合は足してsdata 515Byte完成させる | |
If sd2 = "" Then | |
Else | |
sdata = sd2 + "-" + sdata | |
End If | |
''Debug.print("Add_sdata.length-" & CStr(sdata.Length) & "-Result_sdata-" & sdata) | |
'----バイナリーデータが515BYTEない場合は次のsdataを足して515byteにしてからSPLITしてPVT100ByteRELP72byteを得る | |
If sdata.Length < setN Then | |
sd2 = sdata | |
''Debug.print("short_sd1=" & sd1) | |
Exit Sub | |
ElseIf sdata.Length > setN Then | |
sd1 = sdata.Substring(0, setN) '[0]-[setN-1] setN個 | |
'sd2 = sdata.Substring(setN, sdata.Length - 1 - setN) '[setN]-[sdata.Length-1] | |
If sdata.Length = setN Then | |
sd2 = "" | |
Else | |
sd2 = sdata.Replace(sd1, "") | |
End If | |
''Debug.print("Replaced_sd2.length-" & CStr(sd2.Length) & "-Replaced_sd2-" & sd2) | |
If sd2.Substring(0, 1) = "-" Then | |
sd2 = sd2.Substring(1, sd2.Length - 1) | |
End If | |
''Debug.print("Pre_sd1.length-" & CStr(sd1.Length) & "-Pre_sd1-" & sd1) | |
''Debug.print("Pre_sd2.length-" & CStr(sd2.Length) & "-Pre_sd2-" & sd2) | |
' | |
Dim topN As Integer = sd1.IndexOf("B5-62-01-07") | |
Dim topStr As String = sd1.Substring(topN, sd1.Length - topN) | |
Dim lastStr As String | |
If topN = 0 Then | |
sd3 = topStr | |
Else | |
lastStr = sd1.Substring(0, topN - 1) | |
sd3 = topStr + "-" + lastStr | |
End If | |
ElseIf sdata.Length = setN Then | |
sd3 = sdata | |
''Debug.print("Just515Result_sd3.length-" & CStr(sd3.Length) & "-Result_sd3-" & sd3) | |
End If | |
''Debug.print("Rcv_K=" & CStr(k) & "sdata_Sort_time=" & sw.ElapsedMilliseconds) | |
' If CheckBox4.Checked = True Then | |
'RichTextBox1.AppendText("Rcv_K=" & CStr(k) & "=sdata_Sort_time=" & sw.ElapsedMilliseconds & vbCrLf) | |
'End If | |
''Debug.print("Result_sd1.length-" & CStr(sd1.Length) & "-Result_sd1-" & sd1) | |
''Debug.print("Result_sd2.length-" & CStr(sd2.Length) & "-REsult_sd2-" & sd2) | |
''Debug.print("Result_sd3.length-" & CStr(sd3.Length) & "-Result_sd3-" & sd3) | |
'PVT to binStr | |
strPVT = sd3.Substring(0, 299) | |
sbPVT = strPVT.Split("-") | |
strRELP = sd3.Substring(300, 215) | |
sbRELP = strRELP.Split("-") | |
'dgv1.Rows.Add(sbRELP) | |
rn = rn + 1 | |
'dgv1.Rows(rn).HeaderCell.Value = rn.ToString() '行ヘッダーにデータ番号rn | |
'dgv1.FirstDisplayedScrollingRowIndex = dgv1.Rows.Count - 1 '最新データの最下行を表示 | |
NVC += 1 'NAV data set Counter | |
'Debug.print("NVC=" & CStr(NVC)) | |
'--------PVTとRELPOSNED16進数string配列を2次元Byte配列に変換-------------------------------------------- | |
For i = 0 To 99 | |
bPVT(i) = Convert.ToByte(sbPVT(i), 16) | |
'Debug.print("bPVT(" & CStr(NVC) & "," & CStr(i) & ")=" & CStr(bPVT(i)) & ":" & sbPVT(i)) | |
Next | |
For i = 0 To 71 | |
bRELP(i) = Convert.ToByte(sbRELP(i), 16) | |
'Debug.print("bRELP(" & CStr(NVC) & "," & CStr(i) & ")=" & CStr(bRELP(i)) & ":" & sbRELP(i)) | |
Next | |
'DGVデータ表示================= | |
Dim rowN As Integer | |
rowN = (NVC - 1) 'Data Printing 繰り返し行指定 | |
'----------------変換 SUB----------------------------------------------- | |
PVT_Trans(NVC) ' PVT Binary を実数データに変換 parPVT(1-33) as integer | |
RELP_Trans(NVC) ' RELPOSNED Binary を実数データに変換 parRELP(1-15) as integer | |
'--------------ファイルWrite parPVTとparRELP dgv表示ではなく全データ保存---------------------------------------------------- | |
If fopen = 1 Then | |
Dim fStr As String | |
fStr = CStr(NVC) | |
For i = 1 To 33 'parPVT(1-33) to fStr | |
fStr = fStr + "," + CStr(parPVT(i)) | |
Next | |
For i = 1 To 15 'parRELP(1-15) to fStr | |
fStr = fStr + "," + CStr(parRELP(i)) | |
Next | |
fStr = fStr + vbCrLf | |
file.Write(fStr) | |
End If | |
'-------------DGV1 サイズ決め------------------------------- | |
dgv1.ColumnCount = 60 | |
'----Rows(0)=time sec | |
dgv1.Columns(0).HeaderText = "Sec" | |
dgv1.Columns(0).Width = 40 | |
Dim tSec As Single = NVC * 0.125 ' Sampling time sec | |
'--PVTヘッダー | |
'For i = 0 To 32 | |
' dgv1.Columns(i + 1).HeaderText = headPVTArry(i) | |
'Next | |
'1:iTow------------------------------- | |
dgv1.Columns(1).HeaderText = "iTow" | |
Dim iTow As Integer = parPVT(1) | |
dgv1.Columns(1).Width = 60 | |
'2:Year--------------------------- | |
dgv1.Columns(2).HeaderText = "Year" | |
Dim Year As Integer = parPVT(2) | |
'3:month--------------------------- | |
dgv1.Columns(3).HeaderText = "month" | |
Dim month As Integer = parPVT(3) | |
'4:day--------------------------- | |
dgv1.Columns(4).HeaderText = "day" | |
Dim day As Integer = parPVT(4) | |
'5:hour--------------------------- | |
dgv1.Columns(5).HeaderText = "hour" | |
Dim hour As Integer = parPVT(5) | |
'6:min--------------------------- | |
dgv1.Columns(6).HeaderText = "min" | |
Dim min As Integer = parPVT(6) | |
'7:sec--------------------------- | |
dgv1.Columns(7).HeaderText = "sec" | |
Dim sec As Integer = parPVT(7) | |
'8:valid--------------------------- | |
dgv1.Columns(8).HeaderText = "valid" | |
Dim valid As Integer = parPVT(8) | |
'9:tAcc--------------------------- | |
dgv1.Columns(9).HeaderText = "tAcc" | |
Dim tAcc As Integer = parPVT(9) | |
'10:nano--------------------------- | |
dgv1.Columns(10).HeaderText = "nano" | |
Dim nano As Integer = parPVT(10) | |
'11:fixType------------------------------- | |
dgv1.Columns(11).HeaderText = "fixType" | |
Dim fixType As Integer = parPVT(11) | |
'12:flags------------------------------- | |
dgv1.Columns(12).HeaderText = "flags" | |
Dim flags As Integer = parPVT(12) | |
'13:flags2------------------------------- | |
dgv1.Columns(13).HeaderText = "flags2" | |
Dim flags2 As Integer = parPVT(13) | |
'14:numSV--------------------------------- | |
dgv1.Columns(14).HeaderText = "numSV" | |
Dim numSV As Integer = parPVT(14) | |
'15:lon----------------------------------- | |
dgv1.Columns(15).HeaderText = "lon" | |
Dim lon As Integer = parPVT(15) | |
'16:lat----------------------------------- | |
dgv1.Columns(16).HeaderText = "lat" | |
Dim lat As Integer = parPVT(16) | |
'17:height----------------------------------- | |
dgv1.Columns(17).HeaderText = "height" | |
Dim height As Integer = parPVT(17) | |
'18:hMSL----------------------------------- | |
dgv1.Columns(18).HeaderText = "hMSL" | |
Dim hMSL As Integer = parPVT(18) | |
'19:hAcc----------------------------------- | |
dgv1.Columns(19).HeaderText = "hAcc" | |
Dim hAcc As Integer = parPVT(19) | |
'20:vAcc--------------------------------- | |
dgv1.Columns(20).HeaderText = "vAcc" | |
Dim vAcc As Integer = parPVT(20) | |
'21:velN--------------------------------- | |
dgv1.Columns(21).HeaderText = "velN" | |
Dim velN As Integer = parPVT(21) | |
'22:velE--------------------------------- | |
dgv1.Columns(22).HeaderText = "velE" | |
Dim velE As Integer = parPVT(22) | |
'23:velD------------------------------------ | |
dgv1.Columns(23).HeaderText = "velD" | |
Dim velD As Integer = parPVT(23) | |
'24:gSpeed------------------------------------ | |
dgv1.Columns(24).HeaderText = "gSpeed" | |
Dim gSpeed As Integer = parPVT(24) | |
'25:headMot------------------------------------ | |
dgv1.Columns(25).HeaderText = "headMot" | |
Dim headMot As Integer = parPVT(25) | |
'26:sAcc------------------------------------ | |
dgv1.Columns(26).HeaderText = "sAcc" | |
Dim sAcc As Integer = parPVT(26) | |
'27:headAcc------------------------------------ | |
dgv1.Columns(27).HeaderText = "headAcc" | |
Dim headAcc As Integer = parPVT(27) | |
'28:pDDOP------------------------------------ | |
dgv1.Columns(28).HeaderText = "pDOP" | |
Dim pDOP As Integer = parPVT(28) | |
'29:flags3------------------------------------ | |
dgv1.Columns(29).HeaderText = "flags3" | |
Dim flags3 As Integer = parPVT(29) | |
'30:reserved1------------------------------------ | |
dgv1.Columns(30).HeaderText = "reserved1" | |
Dim reserved1 As Integer = parPVT(30) | |
'31:headVeh------------------------------------ | |
dgv1.Columns(31).HeaderText = "headVeh" | |
Dim headVeh As Integer = parPVT(31) | |
'32:magDec------------------------------------ | |
dgv1.Columns(32).HeaderText = "magDec" | |
Dim magDec As Integer = parPVT(32) | |
'33:magAcc------------------------------------ | |
dgv1.Columns(33).HeaderText = "magAcc" | |
Dim magAcc As Integer = parPVT(33) | |
'--RELPOSNED ヘッダー | |
'1:iTow | |
dgv1.Columns(34).HeaderText = "RELP_iTow" | |
Dim RELP_iTOW As Integer = parRELP(1) | |
dgv1.Columns(35).HeaderText = "relPosN" | |
Dim relPosN As Single = parRELP(2) + parRELP(8) * 0.01 ' | |
relP(0, rn Mod 1000) = relPosN | |
'Debug.Print("relPosN=" & CStr(relPosN)) | |
dgv1.Columns(36).HeaderText = "relPosE" | |
Dim relPosE As Single = parRELP(3) + parRELP(9) * 0.01 | |
relP(1, rn Mod 1000) = relPosE | |
' Debug.Print("relPosE=" & CStr(relPosE)) | |
dgv1.Columns(37).HeaderText = "relPosD" | |
Dim relPosD As Single = parRELP(4) + parRELP(10) * 0.01 | |
relP(2, rn Mod 1000) = relPosD | |
'Debug.Print("relPosD=" & CStr(relPosD)) | |
dgv1.Columns(38).HeaderText = "relPosLength" | |
Dim relPosLength As Single = parRELP(5) + parRELP(11) * 0.01 | |
relP(3, rn Mod 1000) = relPosLength | |
dgv1.Columns(39).HeaderText = "relPosHeading" | |
Dim relPosHeading As Single = parRELP(6) * 0.00001 | |
dgv1.Columns(40).HeaderText = "reserved2" | |
Dim reserved2 As Single = parRELP(7) '* 0.00001 | |
dgv1.Columns(41).HeaderText = "relPosHPN" | |
Dim relPosHPN As Single = parRELP(8) '* 0.00001 | |
dgv1.Columns(42).HeaderText = "relPosHPE" | |
Dim relPosHPE As Single = parRELP(9) '* 0.00001 | |
dgv1.Columns(43).HeaderText = "relPosHPD" | |
Dim relPosHPD As Single = parRELP(10) '* 0.00001 | |
dgv1.Columns(44).HeaderText = "relPosHPLength" | |
Dim relPosHPLength As Single = parRELP(11) '* 0.00001 | |
dgv1.Columns(45).HeaderText = "accN" | |
Dim accN As Single = parRELP(12) * 0.01 | |
dgv1.Columns(46).HeaderText = "accE" | |
Dim accE As Single = parRELP(13) * 0.01 | |
dgv1.Columns(47).HeaderText = "accD" | |
Dim accD As Single = parRELP(14) * 0.01 | |
dgv1.Columns(48).HeaderText = "accLength" | |
Dim accLength As Single = parRELP(15) * 0.01 | |
dgv1.Columns(49).HeaderText = "accHeading" | |
Dim accHeading As Single = parRELP(16) * 0.00001 | |
'Debug.print("parRELP(16)=" + CStr(parRELP(16)) + "accHeading=", CStr(accHeading)) | |
dgv1.Columns(50).HeaderText = "reserved3" | |
Dim reserved3 As Single = parRELP(17) | |
'Debug.print("parRELP(17)=" + CStr(parRELP(17)) + "reserved3=", CStr(reserved3)) | |
dgv1.Columns(51).HeaderText = "flags" | |
Dim rflags As Single = parRELP(18) | |
'Debug.print("parRELP(18)=" + CStr(parRELP(18)) + "flags=", CStr(flags)) | |
'===================行追加と一括書き込み=============================== | |
'PVT = 1 : iTow, 11: fixType, 14: numSV, 15: lon, 16: lat, 17: height, 19: hAcc , 20: vAcc, 21: velN, 22: velE, 23: velD | |
' RELPOSNED = 1 : iTow, 2: relPosN, 3: relPosE, 4: relPosD, 5: relPosLength, 6: relPosHeading, | |
'11:accN,12:accE,13:accD,14:accLength,15:accHeading | |
If CheckBox2.Checked = False Then | |
dgv1.Rows.Add(tSec, iTow, Year, month, day, hour, min, sec, valid, tAcc, nano, fixType, flags, flags2, numSV, lon, lat, height, hMSL, hAcc, vAcc, velN, velE, velD, gSpeed, headMot, sAcc, headAcc, pDOP, flags3, reserved1, headVeh, magDec, magAcc, | |
RELP_iTOW, relPosN, relPosE, relPosD, relPosLength, relPosHeading, reserved2, relPosHPN, relPosHPE, relPosHPD, relPosHPLength, | |
accN, accE, accD, accLength, accHeading, reserved3, rflags) | |
'------------dgv1 行ヘッダー番号 -------------------------------- | |
dgv1.Rows(rowN).HeaderCell.Value = NVC.ToString() '行ヘッダーにデータ番号NVC | |
dgv1.RowHeadersWidth = 60 | |
'-----Focus Row------------------------------------ | |
If rowN > 5 Then | |
dgv1.FirstDisplayedScrollingRowIndex = rowN | |
End If | |
Else | |
TextBox1.Text = CStr(rn) | |
End If | |
End Sub | |
'OPENボタン押し | |
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click | |
'シリアル設定値読み込む | |
If SerialPort1.IsOpen = False Then | |
If dgv1.Rows(0).Cells(1).Value <> " " Then | |
Dim portName As String = "COM" + dgv1.Rows(0).Cells(1).Value 'dgv1からポート番号読み込み | |
SerialPort1.PortName = portName ' portName オープンするポート名を格納 | |
Dim baudrate As String = dgv1.Rows(0).Cells(7).Value 'dgv1からバーレート読み込み | |
SerialPort1.BaudRate = baudrate 'baudrate ボーレートを格納 | |
SerialPort1.Open() | |
Button1.Enabled = False | |
Button2.Enabled = True | |
End If | |
End If | |
If SerialPort2.IsOpen = False Then | |
If dgv1.Rows(0).Cells(3).Value <> " " Then | |
Dim portName As String = "COM" + dgv1.Rows(0).Cells(3).Value 'dgv1からポート番号読み込み | |
SerialPort2.PortName = portName ' portName オープンするポート名を格納 | |
Dim baudrate As String = dgv1.Rows(0).Cells(7).Value 'dgv1からバーレート読み込み | |
SerialPort2.BaudRate = baudrate 'baudrate ボーレートを格納 | |
SerialPort2.Open() | |
Button1.Enabled = False | |
Button2.Enabled = True | |
End If | |
End If | |
If SerialPort3.IsOpen = False Then | |
If dgv1.Rows(0).Cells(5).Value <> " " Then | |
Dim portName As String = "COM" + dgv1.Rows(0).Cells(5).Value 'dgv1からポート番号読み込み | |
SerialPort3.PortName = portName ' portName オープンするポート名を格納 | |
Dim baudrate As String = dgv1.Rows(0).Cells(7).Value 'dgv1からバーレート読み込み | |
SerialPort3.BaudRate = baudrate 'baudrate ボーレートを格納 | |
SerialPort3.Open() | |
Button1.Enabled = False | |
Button2.Enabled = True | |
End If | |
End If | |
'SerialPort2.PortName = "COM6" | |
'SerialPort2.Open() | |
'SerialPort3.PortName = "COM8" | |
'SerialPort3.Open() | |
'ポートオープン | |
' rn_start = 1 | |
'Else | |
' TextBox1.Text = "*******Please Input COM No*******" | |
'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 = 172 | |
dgv1.RowCount = 1 | |
dgv1.Rows.Add("COM1", "5 ", "COM2", "6", "COM3", "8 ", "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 And RadioButton1.Checked = True Then | |
Try | |
'Port1 | |
Dim arrByte1 As Byte() = New Byte(SerialPort1.BytesToRead - 1) {} | |
SerialPort1.Read(arrByte1, 0, arrByte1.GetLength(0)) 'Binary Receive | |
ReceivedData1 = BitConverter.ToString(arrByte1) ' | |
''Port2 | |
'Dim arrByte2 As Byte() = New Byte(SerialPort1.BytesToRead - 1) {} | |
'SerialPort1.Read(arrByte2, 0, arrByte2.GetLength(0)) 'Binary Receive | |
'ReceivedData2 = BitConverter.ToString(arrByte2) ' | |
''Port3 | |
'Dim arrByte3 As Byte() = New Byte(SerialPort1.BytesToRead - 1) {} | |
'SerialPort1.Read(arrByte3, 0, arrByte3.GetLength(0)) 'Binary Receive | |
'ReceivedData3 = BitConverter.ToString(arrByte3) ' | |
'ReceivedData1 = SerialPort1.ReadLine 'データを受信します | |
'ReceivedData2 = SerialPort2.ReadLine | |
'ReceivedData3 = SerialPort3.ReadLine | |
'ReceivedDataTotal = ReceivedData1 '& "," & ReceivedData2 & "," & ReceivedData3 | |
Catch ex As Exception | |
ReceivedData1 = ex.Message '例外処理を行います | |
End Try | |
'SerialPort1.DiscardInBuffer() | |
'Invokeメソッドにより実行されるメソッドへのデリゲートの宣言を行い、受信データを表示します | |
Dim adre As New DataDelegate(AddressOf PrintData) | |
Me.Invoke(adre, ReceivedData1) | |
SerialPort1.DiscardInBuffer() | |
End If | |
End Sub | |
Private Sub SerialPort2_DataReceived(sender As Object, e As SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived | |
If CheckBox1.Checked = True And RadioButton2.Checked = True Then | |
Try | |
'Port1 | |
Dim arrByte2 As Byte() = New Byte(SerialPort2.BytesToRead - 1) {} | |
SerialPort2.Read(arrByte2, 0, arrByte2.GetLength(0)) 'Binary Receive | |
ReceivedData2 = BitConverter.ToString(arrByte2) ' | |
Catch ex As Exception | |
ReceivedData2 = ex.Message '例外処理を行います | |
End Try | |
'SerialPort1.DiscardInBuffer() | |
'Invokeメソッドにより実行されるメソッドへのデリゲートの宣言を行い、受信データを表示します | |
Dim adre As New DataDelegate(AddressOf PrintData) | |
Me.Invoke(adre, ReceivedData2) | |
SerialPort2.DiscardInBuffer() | |
End If | |
End Sub 'SerialPort2 | |
Private Sub SerialPort3_DataReceived(sender As Object, e As SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived | |
If CheckBox1.Checked = True And RadioButton3.Checked = True Then | |
Try | |
'Port1 | |
Dim arrByte3 As Byte() = New Byte(SerialPort3.BytesToRead - 1) {} | |
SerialPort3.Read(arrByte3, 0, arrByte3.GetLength(0)) 'Binary Receive | |
ReceivedData3 = BitConverter.ToString(arrByte3) ' | |
Catch ex As Exception | |
ReceivedData3 = ex.Message '例外処理を行います | |
End Try | |
'SerialPort1.DiscardInBuffer() | |
'Invokeメソッドにより実行されるメソッドへのデリゲートの宣言を行い、受信データを表示します | |
Dim adre As New DataDelegate(AddressOf PrintData) | |
Me.Invoke(adre, ReceivedData3) | |
SerialPort3.DiscardInBuffer() | |
End If | |
End Sub 'SerialPort2 | |
'====================================================================================================== | |
'=====================CHECKBOX1 On/OFF================================================================ | |
'====================================================================================================== | |
Private Sub CheckBox1_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox1.CheckedChanged | |
Dim sum As Double = 0 | |
Dim suma As Double = 0 | |
Dim av(4) As Double | |
Dim ava As Double = 0 | |
If CheckBox1.Checked = True And SerialPort1.IsOpen = True And rn > 2 Then | |
TextBox1.Text = "****Sampling****" | |
rn_start = rn | |
ElseIf CheckBox1.Checked = False And SerialPort1.IsOpen = True Then | |
TextBox1.Text = "****Paused****rn=" & CStr(rn) | |
'------------------Averaging-------------------------------- | |
Dim i, j As Integer | |
dgv1.FirstDisplayedScrollingColumnIndex = 35 | |
For j = 35 To 38 '桁 | |
sum = 0 | |
av(j - 35) = 0 | |
For i = 1 To rn - 1 '行 | |
sum = sum + CDbl(dgv1.Rows(i).Cells(j).Value) | |
'suma = suma + relP(j - 35, i) | |
Next i | |
av(j - 35) = sum / (rn - 1) | |
'ava = suma / (rn - 1) | |
dgv1.Rows(rn - 1).Cells(j).Value = av(j - 35) | |
'dgv2.Rows.Add(av, ava) | |
Next j | |
For j = 35 To 38 '桁 | |
Dim sumd As Double = 0 | |
Dim sd As Double = 0 | |
Dim sigma3 As Double = 0 | |
Dim avd As Double = CDbl(dgv1.Rows(rn).Cells(j).Value) | |
For i = 1 To rn - 1 '行 | |
sumd = sumd + (CDbl(dgv1.Rows(i).Cells(j).Value) - avd) ^ 2 | |
Next i | |
sd = (sumd / (rn - 1)) ^ 0.5 | |
sigma3 = sd * 3 | |
dgv1.Rows(rn).Cells(j).Value = sd * 2 '2sigma 95% | |
Next j | |
dgv2.Rows.Add(TextBox4.Text, radioNo, Format(av(0), "###.#"), Format(av(1), "###.#"), Format(av(2), "###.#"), Format(av(3), "###.#")) | |
'Dim crn As Integer = dgv2.CurrentRow.Index | |
'------------dgv2 copy------------------------------ | |
'Dim lowestRow As Integer = dgv2.Rows.Count - 1 | |
'dgv2.Rows(lowestRow).Cells(0).Value = radioNo | |
'For j = 0 To 3 '桁 | |
' dgv2.Rows(lowestRow).Cells(j + 4).Value = Format(dgv1.Rows(rn - 1).Cells(j + 35).Value, "###.#") | |
'Next j | |
End If | |
End Sub | |
'========================--測定ポート選択 選択するとリセット========================================================= | |
Private Sub RadioButton1_CheckedChanged(sender As Object, e As EventArgs) Handles RadioButton1.CheckedChanged | |
dgv1.CurrentCell = dgv1(0, dgv1.Rows.Count - 1) '最下行にカーソルを維持 | |
dgv1.Rows.Clear() | |
rn = 0 | |
dgv1.RowHeadersWidth = 60 | |
dgv1.ColumnCount = 172 | |
dgv1.RowCount = 1 | |
dgv1.Rows.Add("COM1", "5 ", "COM2", "6", "COM3", "8 ", "BaudRate", "115200") | |
rn = 0 | |
NVC = 0 | |
If RadioButton1.Checked = True Then | |
radioNo = 1 | |
End If | |
End Sub | |
Private Sub RadioButton2_CheckedChanged(sender As Object, e As EventArgs) Handles RadioButton2.CheckedChanged | |
dgv1.CurrentCell = dgv1(0, dgv1.Rows.Count - 1) '最下行にカーソルを維持 | |
dgv1.Rows.Clear() | |
rn = 0 | |
dgv1.RowHeadersWidth = 60 | |
dgv1.ColumnCount = 172 | |
dgv1.RowCount = 1 | |
dgv1.Rows.Add("COM1", "5 ", "COM2", "6", "COM3", "8 ", "BaudRate", "115200") | |
rn = 0 | |
NVC = 0 | |
If RadioButton2.Checked = True Then | |
radioNo = 2 | |
End If | |
End Sub | |
Private Sub RadioButton3_CheckedChanged(sender As Object, e As EventArgs) Handles RadioButton3.CheckedChanged | |
dgv1.CurrentCell = dgv1(0, dgv1.Rows.Count - 1) '最下行にカーソルを維持 | |
dgv1.Rows.Clear() | |
rn = 0 | |
dgv1.RowHeadersWidth = 60 | |
dgv1.ColumnCount = 172 | |
dgv1.RowCount = 1 | |
dgv1.Rows.Add("COM1", "5 ", "COM2", "6", "COM3", "8 ", "BaudRate", "115200") | |
rn = 0 | |
NVC = 0 | |
If RadioButton3.Checked = True Then | |
radioNo = 3 | |
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 | |
'================================================================================================================ | |
'==================================PVT RELPOSNED =============================================================== | |
'================================================================================================================ | |
Private Sub PVT_Trans(ByVal NVC As Integer) | |
'----------------PVT Trans--------------------------------------- | |
' headPVT = "iTOW,Year,month,day,hour,min,sec,valid,tAcc,nano,fixType,flags,flags2,numSV,lon,lat,height,hMSL,hAcc,vAcc,velN,velE,velD,gSpeed,headMot,sAcc,headAcc,pDOP,flags3,reserved1,headVeh,magDec,magAcc" | |
'Byte OFFSET=5 (header: B5,62,01,07,5C 5 Byte) | |
Dim off As Integer = 6 | |
'1:iTOW 0-3 | |
parPVT(1) = pvtI4(NVC, 0 + off) | |
'Debug.print("parPVT(1)=" & CStr(parPVT(1))) | |
'2:Year 4-5 | |
parPVT(2) = pvtI2(NVC, 4 + off) | |
'Debug.print("parPVT(2)=" & CStr(parPVT(2))) | |
'3:month 6 | |
parPVT(3) = CInt(bPVT(6 + off)) | |
'Debug.print("parPVT(3)=" & CStr(parPVT(3))) | |
'4:day 7 | |
parPVT(4) = CInt(bPVT(7 + off)) | |
'Debug.print("parPVT(4)=" & CStr(parPVT(4))) | |
'5:hour 8 | |
parPVT(5) = CInt(bPVT(8 + off)) | |
'Debug.print("parPVT(5)=" & CStr(parPVT(5))) | |
'6:min 9 | |
parPVT(6) = CInt(bPVT(9 + off)) | |
'Debug.print("parPVT(6)=" & CStr(parPVT(6))) | |
'7:sec 10 | |
parPVT(7) = CInt(bPVT(10 + off)) | |
'Debug.print("parPVT(7)=" & CStr(parPVT(7))) | |
'8:valid 11 | |
parPVT(8) = CInt(bPVT(11 + off)) | |
'Debug.print("parPVT(8)=" & CStr(parPVT(8))) | |
'9:tAcc 12,13,14,15 | |
parPVT(9) = pvtI4(NVC, 12 + off) | |
'Debug.print("parPVT(9)=" & CStr(parPVT(9))) | |
'10:nano 16 | |
parPVT(10) = CInt(bPVT(16 + off)) | |
'Debug.print("parPVT(10)=" & CStr(parPVT(10))) | |
'11:fixType 20 | |
parPVT(11) = CInt(bPVT(20 + off)) | |
'Debug.print("parPVT(11)=" & CStr(parPVT(11))) | |
'12:flags 21 | |
parPVT(12) = CInt(bPVT(21 + off)) | |
'Debug.print("parPVT(12)=" & CStr(parPVT(12))) | |
'13:flags2 22 | |
parPVT(13) = CInt(bPVT(22 + off)) | |
'Debug.print("parPVT(13)=" & CStr(parPVT(13))) | |
'14:numSV 23 | |
parPVT(14) = CInt(bPVT(23 + off)) | |
'Debug.print("parPVT(14)=" & CStr(parPVT(14))) | |
'15:lon'24,25,26,27 | |
parPVT(15) = pvtI4(NVC, 24 + off) | |
'Debug.print("parPVT(15)=" & CStr(parPVT(15))) | |
'16:lat 28,29,30,31 | |
parPVT(16) = pvtI4(NVC, 28 + off) | |
'Debug.print("parPVT(16)=" & CStr(parPVT(16))) | |
'17:height 32,33,34,35 | |
parPVT(17) = pvtI4(NVC, 32 + off) | |
'Debug.print("parPVT(17)=" & CStr(parPVT(17))) | |
'18:hMSL 36,37,38,39 | |
parPVT(18) = pvtI4(NVC, 36 + off) | |
'Debug.print("parPVT(18)=" & CStr(parPVT(18))) | |
'19:hAcc 40,41,42,43 | |
parPVT(19) = pvtI4(NVC, 40 + off) | |
'Debug.print("parPVT(19)=" & CStr(parPVT(19))) | |
'20:vAcc 44,45,46,47 | |
parPVT(20) = pvtI4(NVC, 44 + off) | |
'Debug.print("parPVT(20)=" & CStr(parPVT(20))) | |
'21:velN 48,49,50,51 | |
parPVT(21) = pvtI4(NVC, 48 + off) | |
'Debug.print("parPVT(21)=" & CStr(parPVT(21))) | |
'22:velE 52,53,54,55 | |
parPVT(22) = pvtI4(NVC, 52 + off) | |
'Debug.print("parPVT(22)=" & CStr(parPVT(22))) | |
'23:velD 56,57,58,59 | |
parPVT(23) = pvtI4(NVC, 56 + off) | |
'Debug.print("parPVT(23)=" & CStr(parPVT(23))) | |
'24:gSpeed 60,61,62,63 | |
parPVT(24) = pvtI4(NVC, 60 + off) | |
'Debug.print("parPVT(24)=" & CStr(parPVT(24))) | |
'25:headMot 64,65,66,67 | |
parPVT(25) = pvtI4(NVC, 64 + off) | |
' 'Debug.print("parPVT(25)=" & CStr(parPVT(25))) | |
'26:sAcc 68,69,70,71 | |
parPVT(26) = pvtI4(NVC, 68 + off) | |
'Debug.print("parPVT(26)=" & CStr(parPVT(26))) | |
'27:headAcc 72,73,74,75 | |
'Debug.print("parPVT(27)=" & CStr(parPVT(27))) | |
'28:pDOP 76,77 | |
parPVT(28) = pvtI2(NVC, 76 + off) | |
'Debug.print("parPVT(28)=" & CStr(parPVT(28))) | |
'29:flags3 78 | |
parPVT(29) = CInt(bPVT(78 + off)) | |
'Debug.print("parPVT(29)=" & CStr(parPVT(29))) | |
'30:reserved1 79,80,81,82 | |
parPVT(30) = pvtI4(NVC, 79 + off) | |
'Debug.print("parPVT(30)=" & CStr(parPVT(30))) | |
'31:headVeh 83,84,85,86 | |
parPVT(31) = pvtI4(NVC, 83 + off) | |
'Debug.print("parPVT(31)=" & CStr(parPVT(31))) | |
'32:magDec 88,89 | |
parPVT(32) = pvtI2(NVC, 88 + off) | |
'Debug.print("parPVT(32)=" & CStr(parPVT(32))) | |
'33:magAcc 90,91 | |
parPVT(33) = pvtI2(NVC, 90 + off) | |
'Debug.print("parPVT(33)=" & CStr(parPVT(33))) | |
End Sub | |
Private Sub RELP_Trans(ByVal NVC As Integer) | |
'----------------PVT Trans--------------------------------------- | |
' headRELP = "R_iTOW,relPosN,relPosE,relPosD,relPosLength,relPosHeading,relPosHPN,relPosHPE,relPosHPD,relPosHPLength,accN,accE,accD,accLength,accHeading" | |
'Byte OFFSET=5 (header: B5,62,01,07,5C 5 Byte) | |
Dim off As Integer = 6 | |
'---------1:iTOW 4-7 | |
parRELP(1) = relpI4(NVC, 4 + off) | |
'Debug.print("parRELP(1)=" & CStr(parRELP(1))) | |
'---------2:relPosN 8-11 | |
parRELP(2) = relpI4(NVC, 8 + off) | |
'Debug.print("parRELP(2)=" & CStr(parRELP(2))) | |
'---------3:relPosE 12-15 | |
parRELP(3) = relpI4(NVC, 12 + off) | |
Debug.Print("parRELP(3)=" & CStr(parRELP(3))) | |
'---------4:relPosD 16-19 | |
parRELP(4) = relpI4(NVC, 16 + off) | |
'Debug.print("parRELP(4)=" & CStr(parRELP(4))) | |
'---------5:relPosLength 20-23 | |
parRELP(5) = relpI4(NVC, 20 + off) | |
'Debug.print("parRELP(5)=" & CStr(parRELP(5))) | |
'---------6:relPosHeading 24-27 | |
parRELP(6) = relpI4(NVC, 24 + off) | |
'Debug.print("parRELP(6)=" & CStr(parRELP(6))) | |
'---------7:reserved 28-31 | |
parRELP(7) = relpI4(NVC, 28 + off) | |
'Debug.print("parRELP(7)=" & CStr(parRELP(7))) | |
'---------8:relPosHPN 32 | |
' parRELP(8) = CInt(bRELP(32 + off)) | |
parRELP(8) = relpI1(NVC, 32 + off) | |
Debug.Print("parRELP(8)=" & CStr(parRELP(8))) | |
'---------9:relPosHPE 33 | |
'parRELP(9) = CInt(bPVT(33 + off)) | |
parRELP(9) = relpI1(NVC, 33 + off) | |
Debug.Print("parRELP(9)=" & CStr(parRELP(9))) | |
'---------10:relPosHPD 34 | |
'parRELP(10) = CInt(bPVT(34 + off)) | |
parRELP(10) = relpI1(NVC, 34 + off) | |
Debug.Print("parRELP(10)=" & CStr(parRELP(10))) | |
'--------11:relPosHPLength 35 | |
parRELP(11) = CInt(bPVT(35 + off)) | |
'Debug.print("parRELP(11)=" & CStr(parRELP(11))) | |
'--------12:accN 36-39 | |
parRELP(12) = relpI4(NVC, 36 + off) | |
'Debug.print("parRELP(12)=" & CStr(parRELP(12))) | |
'--------13:accE 40-43 | |
parRELP(13) = relpI4(NVC, 40 + off) | |
'Debug.print("parRELP(12)=" & CStr(parRELP(13))) | |
'--------14:accD 44-47 | |
parRELP(14) = relpI4(NVC, 44 + off) | |
'Debug.print("parRELP(14)=" & CStr(parRELP(14))) | |
'--------15:accLength 48-51 | |
parRELP(15) = relpI4(NVC, 48 + off) | |
'Debug.print("parRELP(15)=" & CStr(parRELP(15))) | |
'--------16:accHeading 52-55 | |
parRELP(16) = relpI4(NVC, 52 + off) | |
'Debug.print("parRELP(16)=" & CStr(parRELP(16))) | |
'--------17:reserved3 56-59 | |
parRELP(17) = relpI4(NVC, 56 + off) | |
'Debug.print("parRELP(17)=" & CStr(parRELP(17))) | |
'--------18:flags 60-63 | |
parRELP(18) = relpI4(NVC, 60 + off) | |
'Debug.print("parRELP(18)=" & CStr(parRELP(18))) | |
End Sub | |
'-------------------------------PVT---------------------------------------------------- | |
Private Function pvtI4(ByVal dnum As Integer, ByVal sN As Integer) As Integer | |
Dim i4 As Integer | |
' 'Debug.print("In_pvtI4:bPVT()=" & CStr(sN) & "::" & CStr(bPVT(sN)) & "," & CStr(bPVT(sN + 1)) & "," & CStr(bPVT(sN + 2)) & "," & CStr(bPVT(sN + 3))) | |
If (bPVT(sN + 3) And &H80) And &H80 Then '{//4番目のBYTEの最上位ビットたっていればマイナス | |
''Debug.print("-bPVT*65536=" & CStr(CLng((bPVT( sN + 2) * 65536)))) | |
''Debug.print("-bPVT*256*256*256=" & CStr(CLng(255 - bPVT( sN + 3)) * 16777216)) | |
i4 = -CLng(256 - (bPVT(sN)) + CLng(255 - bPVT(sN + 1)) * 256 + CLng(255 - bPVT(sN + 2)) * 65536 + CLng(255 - bPVT(sN + 3)) * 16777216) | |
Else | |
''Debug.print("+bPVT*65536=" & CStr(sN) & "::" & CStr(bPVT( sN + 2) * 65536)) | |
''Debug.print("+bPVT*256*256*256=" & CStr(sN) & "::" & CStr(bPVT( sN + 3) * 256 * 256 * 256)) | |
i4 = CLng(bPVT(sN) * 1 + CLng(bPVT(sN + 1)) * 256 + CLng(bPVT(sN + 2)) * 65536 + CLng(bPVT(sN + 3)) * 256 * 256 * 256) | |
End If | |
Return i4 | |
End Function | |
Private Function pvtI2(ByVal dnum As Integer, ByVal sN As Integer) As Integer | |
Dim i2 As Integer | |
i2 = bPVT(sN + 1) * 1 + bPVT(sN) * 256 | |
Return i2 | |
End Function | |
'=====dgv1 CSV保存================================================================== | |
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click | |
Dim fnameH As String | |
'---------dgv1 保存ファイル準備------------------------------ | |
fnameH = Format(Now, "yyyyMMdd_HHmmss") | |
fStr1 = "dgv1_" 'ComboBox9.SelectedItem.ToString() | |
fnameH = "C:\sokuryou\" & "dgv1_Rover" & CStr(radioNo) & "_" & fnameH & ".csv" | |
fstr2 = "FileOpen:" + fnameH | |
' RichTextBox1.AppendText(fStr2) | |
' RichTextBox1.ScrollToCaret() | |
Dim enc As System.Text.Encoding = System.Text.Encoding.GetEncoding(“Shift_JIS”) | |
fileH = My.Computer.FileSystem.OpenTextFileWriter(fnameH, False, enc) | |
f1open = 1 | |
TextBox2.Text = fnameH | |
'--------dgvから読んでファイル保存----------------------- | |
Dim SCPheadstr As String = "" | |
'---Header Str Save------------------ | |
For i = 0 To dgv1.ColumnCount - 1 | |
SCPheadstr += dgv1.Columns(i).HeaderText + "," | |
Next i | |
SCPheadstr += vbCrLf | |
fileH.Write(SCPheadstr) | |
'----------LoadNo,X,Y,Z save------------ | |
Dim SCPstr As String = "" | |
For i = 0 To dgv1.RowCount - 1 | |
'If CStr(dgv(dgN).Rows(i).Cells(0).Value) <> "" Then | |
'---Header Str Save------------------ | |
For j = 0 To dgv1.ColumnCount - 1 | |
SCPstr += CStr(dgv1.Rows(i).Cells(j).Value) + "," | |
'End If | |
Next j | |
SCPstr += vbCrLf | |
fileH.Write(SCPstr) | |
SCPstr = "" | |
Next i | |
fileH.Close() | |
End Sub | |
'=====dgv2 CSV保存================================================================== | |
Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click | |
Dim fnameH As String | |
Dim comNo As Integer | |
'---------dgv1 保存ファイル準備------------------------------ | |
fnameH = Format(Now, "yyyyMMdd_HHmmss") | |
fStr1 = "dgv2_" 'ComboBox9.SelectedItem.ToString() | |
fnameH = "C:\sokuryou\" & "dgv2_Rover" & CStr(radioNo) & "_" & fnameH & ".csv" | |
fstr2 = "FileOpen:" + fnameH | |
' RichTextBox1.AppendText(fStr2) | |
' RichTextBox1.ScrollToCaret() | |
Dim enc As System.Text.Encoding = System.Text.Encoding.GetEncoding(“Shift_JIS”) | |
fileH = My.Computer.FileSystem.OpenTextFileWriter(fnameH, False, enc) | |
f1open = 1 | |
TextBox3.Text = fnameH | |
'--------dgvから読んでファイル保存----------------------- | |
Dim SCPheadstr As String = "" | |
'---Header Str Save------------------ | |
For i = 0 To dgv2.ColumnCount - 1 | |
SCPheadstr += dgv2.Columns(i).HeaderText + "," | |
Next i | |
SCPheadstr += vbCrLf | |
fileH.Write(SCPheadstr) | |
'----------LoadNo,X,Y,Z save------------ | |
Dim SCPstr As String = "" | |
For i = 0 To dgv2.RowCount - 1 | |
'If CStr(dgv(dgN).Rows(i).Cells(0).Value) <> "" Then | |
'---Header Str Save------------------ | |
For j = 0 To dgv2.ColumnCount - 1 | |
SCPstr += CStr(dgv2.Rows(i).Cells(j).Value) + "," | |
'End If | |
Next j | |
SCPstr += vbCrLf | |
fileH.Write(SCPstr) | |
SCPstr = "" | |
Next i | |
fileH.Close() | |
End Sub | |
'------------------RELPOSNED -------------------------------------------------- | |
Private Function relpI4(ByVal dnum As Integer, ByVal sN As Integer) As Integer | |
Dim i4 As Integer | |
Debug.Print("In_relpI4:bRELP()=" & CStr(sN) & "::" & CStr(bRELP(sN)) & "," & CStr(bRELP(sN + 1)) & "," & CStr(bRELP(sN + 2)) & "," & CStr(bRELP(sN + 3))) | |
If (bRELP(sN + 3) And &H80) And &H80 Then '{//4番目のBYTEの最上位ビットたっていればマイナス | |
i4 = -CLng(256 - (bRELP(sN)) + CLng(255 - bRELP(sN + 1)) * 256 + CLng(255 - bRELP(sN + 2)) * 65536 + CLng(255 - bRELP(sN + 3)) * 16777216) | |
Else | |
i4 = CLng(bRELP(sN) * 1 + CLng(bRELP(sN + 1)) * 256 + CLng(bRELP(sN + 2)) * 65536 + CLng(bRELP(sN + 3)) * 256 * 256 * 256) | |
End If | |
Return i4 | |
End Function | |
Private Function relpI2(ByVal dnum As Integer, ByVal sN As Integer) As Integer | |
Dim i2 As Integer | |
i2 = bRELP(sN + 1) * 1 + bRELP(sN) * 256 | |
Return i2 | |
End Function | |
Private Sub dgv2_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles dgv2.CellContentClick | |
End Sub | |
Private Function relpI1(ByVal dnum As Integer, ByVal sN As Integer) As Integer | |
Dim i1 As Integer | |
If bRELP(sN) And &H80 Then | |
i1 = 256 - Int(bRELP(sN)) | |
Else | |
i1 = Int(bRELP(sN)) | |
End If | |
Return i1 | |
End Function | |
'=====================列or行削除Remove Columns of Current Cursor==== | |
Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click | |
'-------------列消去----------------------------- | |
'------------行消去------------------------------- | |
Dim rX As Integer = dgv2.ColumnCount | |
Dim rY As Integer = dgv2.CurrentCell.RowIndex | |
If rY > 0 And rY < dgv2.Rows.Count - 1 Then | |
dgv2.Rows.RemoveAt(rY) | |
Label1.Text = "Deleted RowNo" & rY | |
'maxRowCol() | |
End If | |
End Sub | |
Private Sub maxRowCol() | |
Label1.Text = "DataRow_" & dgv2.RowCount & "行" & dgv2.ColumnCount & "列" | |
End Sub | |
Private Sub dgv2_MouseClick(sender As Object, e As MouseEventArgs) Handles dgv2.MouseClick | |
Label1.Text = "(" & dgv2.CurrentCell.ColumnIndex & "," & dgv2.CurrentCell.RowIndex & ")" | |
End Sub | |
End Class | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment