Excel Data Streamer の使い方

初版作成  2021.5.28
最終更新  2021.05.28


◆◆ Data Streamer とは ◆◆


Excel に組み込むアドインらしい。
これを組み込むと、Excel から仮想シリアルポートを読み書きできるように
なる。

● アドインを有効化する

(1) ファイル --- オプション ---  アドイン
(2) Microsoft Data Streamer for Excel の行を選択
(3) 管理を Excel アドイン ---> COM アドインに変更して「設定」
(4) Microsoft Data Streamer for Excel にチェックを入れて OK

Data Streamer というリボンが現れる。

(5) デバイスの接続を実行すると以下のシートが自動生成される

入力データ 出力データ 設定 マニフェスト

◆◆ シリアル通信の設定 ◆◆


(1) デバイスの接続で arduino を接続しておく
(2) 詳細:詳細(歯車マーク)---> 設定 でボーレートを設定

◆◆ シリアルからの入力 ◆◆


「データの開始」をクリックすると、シリアルからの入力を
取り込むモードに入る。抜けるには「データの停止」

arduino から

1,2,3,4(改行)

のような文字列を送信すると、シート「入力データ」の
ch1 -- ch4 に入る。チャンネルはデータの順番を表すようだ。

改行は (0x0d 0x0a), (0x0a) のどちらでも可

○ Arduino におけるサンプルプログラム

int i = 0;
char moji[100];

void loop() {
  sprintf(moji, "%d,%d,%d%c%c", i, i*10, i*100,13, 10);
  i++;
  Serial.print(moji);
  delay(1000);
}

上記のプログラムを実行すると ch1 -- ch3 に数値が入る。


◆◆ シリアルへの出力 ◆◆


シート「出力データ」において、enter キーを押すと、
その時点での ch1 -- ch10 のうち、空でないセルについて、

1,2,3(改行)

のように送出する。

○ Arduino サンプルプログラム

#define PIN1 2
#define PIN2 13

int serial_read_char();                  //  1 個読み込む
void serial_read_line(char buf[],int n);  //  1 行読み込む

void setup() {
  Serial.begin(9600);
  pinMode(PIN1, OUTPUT);
  pinMode(PIN2, OUTPUT);
}

int serial_read_char(){   // 未使用
  int cha;
  while(1){
    cha = Serial.read();     // 入力なしのとき -1
    if ( cha != -1 ) break;  // 何か入力があったなら、ループ脱出
  }
  return cha;
}

void serial_read_line(char buf[], int n){
  int i = 0, input;

  while(1){
    input = Serial.read();
    if ( input == -1 ) continue;
    if ( input == int('\n') ) {
      buf[i] = '\0';
      return;
    }
    buf[i] = input;
    i++;
    if ( i >= n-1 ) {
      buf[n-1] = '\0';
      return;
    }
  }
}

void loop() {
  char moji[1000];
  int a, b;

  serial_read_line(moji, 1000);
  sscanf(moji, "%d,%d", &a, &b);

  if ( a == 1 ){
    digitalWrite(PIN1, HIGH);
  } else {
    digitalWrite(PIN1, LOW);
  }
  if ( b == 1 ){
    digitalWrite(PIN2, HIGH);
  } else {
    digitalWrite(PIN2, LOW);
  }
}


◆◆ 活用法 ◆◆


arduino のようなマイコンでは、シリアルの入力と出力を
別のプロセス(あるいはプロセス)で処理するのが難しいので、
Raspberry Pi の方が Excel との相性がよいかも知れない。

ラズパイならマルチプロセス、マルチスレッドが可能である。