Option Explicit Sub EasyCommTest() Dim A$ Dim n '①初期設定 ec.COMn = 11 'COM4を指定します ec.Setting = "9600,n,8,2" '通信条件(ボーレート,パリティビット数,データビット数,ストップビット数)の設定 ec.HandShaking = ec.HANDSHAKEs.RTSCTS '通信ハンドシェークの設定 ec.Delimiter = "CR" 'データの区切りをCrに設定する A$ = ec.AsciiLine 'デリミタの手前までの受信文字列をA$に代入します. ec.InBufferClear '受信バッファをクリア '1行ずつデータを入れていく n = Cells(Rows.Count, "A").End(xlUp).Row + 1 Range("A" & n).Value = A$ '1秒おきにデータを見に行く If Range("A10") = "" Then Application.OnTime Now() + TimeValue("00:00:01"), "EasyCommTest" Else Range("A1:A10").Clear End If '⑤ポートを閉じる ec.COMn = -1 '終了処理 End Sub ************************************************** コード
EasyCommというモジュールを使用して、Arduinoからのシリアルを変数の中に格納することはできたのですが、
Arduino側でデータを不定期に吐き出す場合、Excel側でデータを受信したときに何かアクションを起こすということがしたいです。
例えば、Arduino側からシリアルが来たら、Excelのセルにその値を入れるなどです。
何か方法あればご教示ください。
その変数の中に格納できたというコードを提示しましょう
下記のコードで、A$に格納したデータを順番にセルに書き込んでいくということはできました。
ただこのコードだと、1秒おきにしかデータを更新できません。
これを、Arduinoからシリアルを受信したタイミングでデータを更新するという流れにしたいです。
プログラム初心者のため、わかりにくい点もあるかと思いますが、
よろしくお願いします。
**************************************************
Option Explicit
Sub EasyCommTest()
Dim A$
Dim n
'①初期設定
ec.COMn = 11 'COM4を指定します
ec.Setting = "9600,n,8,2" '通信条件(ボーレート,パリティビット数,データビット数,ストップビット数)の設定
ec.HandShaking = ec.HANDSHAKEs.RTSCTS '通信ハンドシェークの設定
ec.Delimiter = "CR" 'データの区切りをCrに設定する
A$ = ec.AsciiLine
'デリミタの手前までの受信文字列をA$に代入します.
ec.InBufferClear '受信バッファをクリア
'1行ずつデータを入れていく
n = Cells(Rows.Count, "A").End(xlUp).Row + 1
Range("A" & n).Value = A$
'1秒おきにデータを見に行く
If Range("A10") = "" Then
Application.OnTime Now() + TimeValue("00:00:01"), "EasyCommTest"
Else
Range("A1:A10").Clear
End If
'⑤ポートを閉じる
ec.COMn = -1 '終了処理
End Sub
**************************************************
そのコードを質問に追記しましょう
質問を編集し、<code>ボタンを押し、出てくる’’’の枠の中にコードを貼り付けてください
ご指導ありがとうございます。
回答1件
あなたの回答
tips
プレビュー