2025年12月20日土曜日

HSPのhspext.asは超便利

#include "hspext.as"

    com_port = 10 ; arduinoのシリアルモニタは使えなくなる

    com_baud = "baud=9600 parity=N data=8 stop=1"

    comopen com_port, com_baud

    if stat != 0 : dialog "COMポートを開けませんでした。": end

    mes "COM" + com_port + " を開きました。"

    ; --- 重要:Arduinoがリセットから立ち上がるのを待つ --- これがないと

ArduinoはPCから接続(comopen)された瞬間に再起動(リセット)がかかります。

    mes "Arduinoの準備を待っています..."

    wait 300  ; 3秒間待機(これがないと送信データが無視されます)

再起動中のArduinoはデータを受け取れないため、送信前に待ち時間を入れる必要があります。

    ; --- データの送信 ---

    comput "Hello HSP3.7"

    mes "データを送信しました。LEDが4秒間光るはずです。"

    ; 送信が物理的に完了するまで少し待ってから閉じる

    wait 100 

    comclose

    mes "ポートを閉じました。"

    stop

----------------対応arduino code-----------------

void setup() {
  // 内蔵LED(13番ピン)を出力モードに設定
  pinMode(LED_BUILTIN, OUTPUT);
  digitalWrite(LED_BUILTIN, LOW); // 最初は消灯
  // HSP側の設定に合わせて 9600bps で開始
  Serial.begin(9600);
}

void loop() {
  // シリアルバッファにデータが届いているか確認
  if (Serial.available() > 0) {
    // 送信された文字列を読み取る
    String data = Serial.readString();
    // 受信した文字列に "Hello HSP3.7" が含まれているか判定
  // これならcr/lf処理が省けるので便利
    if (data.indexOf("Hello HSP3.7") != -1) {
      digitalWrite(LED_BUILTIN, HIGH); // LEDを点灯
      delay(4000);
      digitalWrite(LED_BUILTIN, LOW);
    }
  }
}


0 件のコメント:

コメントを投稿