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