From 98f08be2dfe70fc461802884a59135d609fad8fe Mon Sep 17 00:00:00 2001
From: lgq <1015864684@qq.com>
Date: 星期四, 09 十月 2025 10:28:31 +0800
Subject: [PATCH] 1. 添加1.8寸屏显示脚本,并添加到app.ini服务列表中  要提交的变更: 	新文件:   local/app/display 	修改:     local/default/app.ini

---
 local/default/app.ini |    3 
 local/app/display     |  250 ++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 252 insertions(+), 1 deletions(-)

diff --git a/local/app/display b/local/app/display
new file mode 100755
index 0000000..3ae38db
--- /dev/null
+++ b/local/app/display
@@ -0,0 +1,250 @@
+#!/bin/sh
+
+# -------------------------- 鏍稿績閰嶇疆鍙傛暟 --------------------------
+CONFIG_FILE="/work/config.json"          # 缃戝彛閰嶇疆鏂囦欢璺緞
+SYS_CONFIG_FILE="/work/sysConfig.json"   # 绯荤粺閰嶇疆鏂囦欢璺緞
+SEND_CMD="/home/test/SendToM4"           # 鍙戦�佸懡浠よ矾寰�
+IMAGE_SWITCH_INTERVAL=0.15  # 鍥剧墖鍒囨崲闂撮殧锛堢锛�
+TEXT_SCENE_INTERVAL=10      # 鏂囨湰鍦烘櫙鍒囨崲闂撮殧锛堢锛�
+TOTAL_IMAGE_IDS=3           # 鍥剧墖ID锛�0銆�1銆�2寰幆
+TOTAL_TEXT_SCENES=3         # 鏂囨湰鍦烘櫙锛�0銆�1銆�2寰幆
+REMOTEPROC_STATE_PATH="/sys/class/remoteproc/remoteproc0/state"  # 鏄剧ず绋嬪簭鐘舵�佽矾寰�
+# ------------------------------------------------------------------
+
+# 搴旂敤鎸囧畾鐨勪腑鏂囧崄鍏繘鍒剁紪鐮�
+HEX_SYSTEM_RUN_TIME="CFB5CDB3D4CBD0D0CAB1BCE4"  # 鈥滅郴缁熻繍琛屾椂闂粹��
+HEX_DAY="CCEC"                                   # 鈥滃ぉ鈥�
+HEX_HOUR="D0A1CAB1"                              # 鈥滃皬鏃垛��
+HEX_SPACE="20"                                   # 绌烘牸鐨勫崄鍏繘鍒�
+# ------------------------------------------------------------------
+
+# 1. 妫�鏌ュ苟鍚姩鏄剧ず绋嬪簭
+check_and_start_display() {
+    # 妫�鏌ョ姸鎬佹枃浠舵槸鍚﹀瓨鍦�
+    if [ ! -f "$REMOTEPROC_STATE_PATH" ]; then
+        echo "銆愰敊璇�戞樉绀虹▼搴忕姸鎬佹枃浠� $REMOTEPROC_STATE_PATH 涓嶅瓨鍦�"
+        exit 1
+    fi
+    
+    # 璇诲彇褰撳墠鐘舵��
+    local state=$(cat "$REMOTEPROC_STATE_PATH" | tr -d '[:space:]')  # 鍘婚櫎绌烘牸鍜屾崲琛�
+    echo "銆愭樉绀虹▼搴忕姸鎬併�戝綋鍓嶇姸鎬�: $state"
+    
+    # 鏍规嵁鐘舵�佹墽琛屾搷浣�
+    if [ "$state" = "offline" ]; then
+        echo "銆愭樉绀虹▼搴忋�戞湭鍚敤锛屽皾璇曞惎鍔�..."
+        # 鎵ц鍚姩鍛戒护
+        if ! echo "start" > "$REMOTEPROC_STATE_PATH"; then
+            echo "銆愰敊璇�戝惎鍔ㄦ樉绀虹▼搴忓け璐ワ紝璇锋鏌ユ潈闄愭垨璁惧鐘舵��"
+            exit 1
+        fi
+        
+        # 绛夊緟鍚姩瀹屾垚锛堟渶澶氱瓑寰�5绉掞級
+        local wait_count=0
+        while [ $wait_count -lt 5 ]; do
+            sleep 1
+            state=$(cat "$REMOTEPROC_STATE_PATH" | tr -d '[:space:]')
+            if [ "$state" = "running" ]; then
+                echo "銆愭樉绀虹▼搴忋�戝惎鍔ㄦ垚鍔�"
+                return 0
+            fi
+            wait_count=$((wait_count + 1))
+        done
+        
+        # 瓒呮椂妫�鏌�
+        if [ "$state" != "running" ]; then
+            echo "銆愰敊璇�戞樉绀虹▼搴忓惎鍔ㄨ秴鏃讹紝褰撳墠鐘舵��: $state"
+            exit 1
+        fi
+        
+    elif [ "$state" = "running" ]; then
+        echo "銆愭樉绀虹▼搴忋�戝凡鍚姩锛屾棤闇�鎿嶄綔"
+        return 0
+        
+    else
+        echo "銆愰敊璇�戞樉绀虹▼搴忓浜庢湭鐭ョ姸鎬�: $state"
+        exit 1
+    fi
+}
+
+# 2. 渚濊禆妫�鏌�
+check_dependencies() {
+    if ! command -v jsoner >/dev/null 2>&1; then
+        echo "銆愰敊璇�戞湭鎵惧埌 jsoner 鍛戒护锛岃瀹夎骞堕厤缃埌PATH"
+        exit 1
+    fi
+    
+    if [ ! -f "$CONFIG_FILE" ]; then
+        echo "銆愰敊璇�戠綉鍙i厤缃枃浠� $CONFIG_FILE 涓嶅瓨鍦�"
+        exit 1
+    fi
+    
+    if [ ! -f "$SYS_CONFIG_FILE" ]; then
+        echo "銆愰敊璇�戠郴缁熼厤缃枃浠� $SYS_CONFIG_FILE 涓嶅瓨鍦�"
+        exit 1
+    fi
+    
+    if [ ! -x "$SEND_CMD" ]; then
+        echo "銆愰敊璇��$SEND_CMD 涓嶅彲鎵ц锛岃妫�鏌ヨ矾寰勬垨鎵ц chmod +x $SEND_CMD"
+        exit 1
+    fi
+}
+
+# 3. 鑾峰彇骞堕獙璇佺郴缁熷紑濮嬫椂闂达紙YYYYMMDD锛�
+get_start_time() {
+    start_time=$(jsoner -g "$SYS_CONFIG_FILE" usedTime)
+    
+    if [ -z "$start_time" ]; then
+        echo "銆愰敊璇�憉sedTime涓虹┖"
+        exit 1
+    elif [ ${#start_time} -ne 8 ]; then
+        echo "銆愰敊璇�憉sedTime闇�8浣嶆暟瀛楋紝褰撳墠鍊硷細$start_time"
+        exit 1
+    elif ! echo "$start_time" | grep -q '^[0-9][0-9]*$'; then
+        echo "銆愰敊璇�憉sedTime鍚潪鏁板瓧瀛楃锛屽綋鍓嶅�硷細$start_time"
+        exit 1
+    fi
+    
+    echo "$start_time"
+}
+
+# 4. 璁$畻杩愯鏃堕棿锛堣繑鍥炲崄鍏繘鍒舵嫾鎺ョ粨鏋滐紝娣诲姞绌烘牸鍒嗛殧锛�
+calculate_run_time_hex() {
+    start_time="$1"
+    start_date="${start_time:0:4}-${start_time:4:2}-${start_time:6:2}"
+    
+    # 杞崲寮�濮嬫椂闂翠负鏃堕棿鎴�
+    start_timestamp=$(date -d "$start_date" +%s 2>/dev/null)
+    if [ $? -ne 0 ]; then
+        echo "CAE4BCFEB8F6CAAEDC8B1"  # 鏃堕棿鏍煎紡閿欒鐨勫崄鍏繘鍒�
+        return 1
+    fi
+    
+    # 璁$畻杩愯绉掓暟
+    current_timestamp=$(date +%s)
+    run_seconds=$((current_timestamp - start_timestamp))
+    run_seconds=$((run_seconds < 0 ? 0 : run_seconds))
+    
+    # 杞崲涓哄ぉ鍜屽皬鏃�
+    days=$((run_seconds / 86400))
+    remaining_seconds=$((run_seconds % 86400))
+    hours=$((remaining_seconds / 3600))
+    
+    # 杞崲鏁板瓧涓哄崄鍏繘鍒�
+    days_hex=$(echo -n "$days" | xxd -p | tr -d '\n')
+    hours_hex=$(echo -n "$hours" | xxd -p | tr -d '\n')
+    
+    # 鎷兼帴鏍煎紡锛氬ぉ鏁� + 绌烘牸 + 澶� + 灏忔椂鏁� + 绌烘牸 + 灏忔椂
+    echo "${days_hex}${HEX_SPACE}${HEX_DAY}${HEX_SPACE}${hours_hex}${HEX_SPACE}${HEX_HOUR}"
+}
+
+# 5. 鍒囨崲鍒嗗尯3鐨勫浘鐗�
+switch_image() {
+    image_id="$1"
+    image_id_hex=$(echo -n "$image_id" | xxd -p | tr -d '\n')
+    cmd="5345545F42544E5F494D4728332C302C${image_id_hex}293B0D0A"
+    $SEND_CMD -x "$cmd" >/dev/null 2>&1
+}
+
+# 6. 鍙戦�佹枃鏈埌鎸囧畾鍒嗗尯锛堟敮鎸佺洿鎺ヤ娇鐢ㄥ崄鍏繘鍒舵垨鍔ㄦ�佽浆鎹級
+send_text() {
+    local zone="$1"
+    local is_hex="$2"  # 1=鐩存帴浣跨敤鍗佸叚杩涘埗鍐呭, 0=鍔ㄦ�佽浆鎹㈡枃鏈�
+    local content="$3"
+    
+    # 杞崲鍒嗗尯鍙蜂负鍗佸叚杩涘埗
+    local zone_hex=$(echo -n "$zone" | xxd -p | tr -d '\n')
+    
+    # 澶勭悊鍐呭
+    local content_hex
+    if [ "$is_hex" -eq 1 ]; then
+        content_hex="$content"  # 浣跨敤鎸囧畾鍗佸叚杩涘埗
+    else
+        content_hex=$(echo -n "$content" | xxd -p | tr -d '\n')  # 鍔ㄦ�佽浆鎹�
+    fi
+    
+    # 鍙戦�佸懡浠�
+    local cmd="5345545F54585428${zone_hex}2C27${content_hex}27293B0D0A"
+    $SEND_CMD -x "$cmd" >/dev/null 2>&1
+}
+
+# 7. 鍔犺浇缃戠粶閰嶇疆
+load_network_config() {
+    IP1=$(jsoner -g "$CONFIG_FILE" eth0.ip)
+    MAC1=$(jsoner -g "$CONFIG_FILE" eth0.mac)
+    IP2=$(jsoner -g "$CONFIG_FILE" eth1.ip)
+    MAC2=$(jsoner -g "$CONFIG_FILE" eth1.mac)
+}
+
+# 8. 搴旂敤鏂囨湰鍦烘櫙
+apply_text_scene() {
+    local scene="$1"
+    local run_time_hex="$2"
+    
+    case $scene in
+        0)  # 鍦烘櫙涓�锛歀an1淇℃伅
+            send_text 0 0 "Lan1"
+            send_text 1 0 "$IP1"
+            send_text 2 0 "$MAC1"
+            echo "銆愭枃鏈満鏅�慙an1 | IP: $IP1 | MAC: $MAC1"
+            ;;
+        1)  # 鍦烘櫙浜岋細Lan2淇℃伅
+            send_text 0 0 "Lan2"
+            send_text 1 0 "$IP2"
+            send_text 2 0 "$MAC2"
+            echo "銆愭枃鏈満鏅�慙an2 | IP: $IP2 | MAC: $MAC2"
+            ;;
+        2)  # 鍦烘櫙涓夛細绯荤粺鏃堕棿淇℃伅锛堝垎鍖�0鏄剧ず^_^锛�
+            send_text 0 0 "^_^"                            # 鍒嗗尯0鏄剧ず^_^
+            send_text 1 1 "$HEX_SYSTEM_RUN_TIME"           # 绯荤粺杩愯鏃堕棿锛堟寚瀹氬崄鍏繘鍒讹級
+            send_text 2 1 "$run_time_hex"                  # 杩愯鏃堕棿锛堝惈绌烘牸鍒嗛殧锛�
+            echo "銆愭枃鏈満鏅�戝垎鍖�0: ^_^ | 杩愯鏃堕棿(鍗佸叚杩涘埗): $run_time_hex"
+            ;;
+    esac
+}
+
+# 9. 涓诲嚱鏁�
+main() {
+    # 鍏堟鏌ュ苟鍚姩鏄剧ず绋嬪簭锛堝湪鎵�鏈夊垵濮嬪寲鎿嶄綔涔嬪墠锛�
+    check_and_start_display
+    
+    # 鍏朵粬鍒濆鍖栨搷浣�
+    check_dependencies
+    local start_time=$(get_start_time)
+    load_network_config
+    
+    local image_id=0
+    local text_scene=0
+    local loop_count=0
+    local text_scene_interval_count=$(echo "scale=0; $TEXT_SCENE_INTERVAL / $IMAGE_SWITCH_INTERVAL" | bc)
+    
+    echo "銆愬惎鍔ㄦ垚鍔熴�戝浘鐗囬棿闅�: $IMAGE_SWITCH_INTERVAL绉� | 鏂囨湰闂撮殧: $TEXT_SCENE_INTERVAL绉�"
+    echo "銆愮郴缁熷紑濮嬫椂闂淬��$start_time锛堟潵鑷� $SYS_CONFIG_FILE锛�"
+    echo "銆愬満鏅笁閰嶇疆銆戝垎鍖�0灏嗘樉绀�: ^_^"
+    
+    # 鍒濆鍔犺浇鍦烘櫙
+    local run_time_hex=$(calculate_run_time_hex "$start_time")
+    apply_text_scene $text_scene "$run_time_hex"
+    
+    # 涓诲惊鐜�
+    while true; do
+        # 鍒囨崲鍥剧墖
+        switch_image $image_id
+        image_id=$(( (image_id + 1) % TOTAL_IMAGE_IDS ))
+        
+        # 鍒囨崲鏂囨湰鍦烘櫙
+        if [ $loop_count -ge $text_scene_interval_count ]; then
+            loop_count=0
+            run_time_hex=$(calculate_run_time_hex "$start_time")
+            text_scene=$(( (text_scene + 1) % TOTAL_TEXT_SCENES ))
+            apply_text_scene $text_scene "$run_time_hex"
+        else
+            loop_count=$((loop_count + 1))
+        fi
+        
+        sleep $IMAGE_SWITCH_INTERVAL
+    done
+}
+
+# 鍚姩绋嬪簭
+main
diff --git a/local/default/app.ini b/local/default/app.ini
index 6ebbe1c..2f36733 100644
--- a/local/default/app.ini
+++ b/local/default/app.ini
@@ -9,5 +9,6 @@
 mul=MulticastIP
 lk=linkage
 rtsp=rtsp
-export applist=" $main $dc $net $gate $svr $lk $mul start_snmpd"
+dp=display
+export applist=" $main $dc $net $gate $svr  $mul $dp"
 

--
Gitblit v1.9.3