Arduinoの出力値をExcelに取り込む その2
Comポート開けっ放しで読込むバージョン Comポートつかみっぱなしなので、途中でArduino IDEでの書込みや、シリアルポートモニターは使えません。
VBAの方はイベント使わないのでシンプルになりました。
あとはBlutoothで飛ばしたいなあ。受信側のアプリどうすればいいのかなあ
サミスターは室外にケーブル伸ばしておいているのですが、こんなに温度差有ったのかとびっくり
今の時期 昼は暖かいけど夜はグーっと冷えてくるんだね
画面構成などはその1と全く同じです
Excel本体はこちら EasyComも入り
***Sheet Macro*****************************************************
Option Explicit
Private Sub cb_Start_Click()
Call RcvData
End Sub
Private Sub cb_Stop_Click()
StopFlag = True
End Sub
'***Module1*****************************************
Public StopFlag As Boolean 'Loopを終了させるためのボタン用
Const Adr_Start As String = "A3" '書込み開始セル
Const Adr_Cnt As String = "A1" 'カウンター書込み位置
Sub RcvData()
Dim Rcv As String
Dim CountOld As Long '前回の受信データ数
Dim CountNew As Long '今回の受信データ数
Dim I As Long
Dim J As Long
Dim wTime As Date
Dim ChkTime As Date
Dim B() As String
wTime = Range("B1").Value '待ち時間
ec.COMn = 3 'Arduino接続PortNum 'ポートが違う場合はここ修正
ec.Setting = "9600,n,8,1"
StopFlag = False
I = Range("A1").Value + 1
Range(Adr_Start).Offset(I, 0).Activate
Do
If StopFlag = True Then
If MsgBox("中断しますか?", vbQuestion + vbYesNo) = vbYes Then
Exit Do
Else
StopFlag = False
End If
End If
Do
CountOld = ec.InBuffer '受信データ数を読み取ります
DoEvents
Loop While CountOld = 0 '受信開始まで待ちます
Do
ec.WAITmS = 100 '100mS待ちます
CountNew = ec.InBuffer '受信データ数を取得します
If CountNew = CountOld Then '変化がなければ Loopを抜けます
Exit Do
End If
CountOld = CountNew '前回のデータ数を更新
Loop
''''' 受信文字を処理します '''''
Rcv = ec.Ascii '文字列を読み込みます.
Rcv = Replace(Rcv, vbLf, "")
'''''' 待ち時間になるまで パス
If Now > ChkTime + wTime Then
B = Split(Rcv, ",")
For J = LBound(B) To UBound(B)
Range(Adr_Start).Offset(I, J + 2).Value = Val(B(J))
Next
With Range(Adr_Start)
.Offset(I, 0).Value = I
.Offset(I, 1).Value = Now
.Offset(I, 1).Value = Format(Now, "yyyy/mm/dd hh:mm:ss")
End With
Range(Adr_Cnt).Value = I
I = I + 1
ChkTime = Now
ActiveWindow.SmallScroll Up:=-1, ToLeft:=-0
End If
Loop
ec.COMn = 0 'ポートを閉じます.
End Sub







