【项目实战】利用AI生成式编程生成控制镜头变倍,变焦,光圈的Shell脚本(一)

发布于:2025-08-17 ⋅ 阅读:(13) ⋅ 点赞:(0)

【项目实战】利用AI生成式编程生成控制镜头变倍,变焦,光圈的Shell脚本(一)

在这里插入图片描述

按以下步骤生成程序
帮我生成串口控制镜头的shell脚本,是sh脚本,不是bash,不用case,因为嵌入式sh 功能比较弱

串口地址 /dev/ttyAMA2 波特率 9600 用AT命令控制镜头变倍+(AT+ZOOM_IN\r\n)、变倍-(AT+ZOOM_OUT\r\n)、聚焦+(AT+FOCUS_NEAR\r\n)、聚焦-(AT+FOCUS_FAR\r\n)、光圈+(AT+IRIS_OPEN\r\n)、光圈-(AT+IRIS_CLOSE\r\n)

#!/bin/sh

SERIAL_DEV="/dev/ttyAMA2"
BAUD_RATE="9600"

# 配置串口参数
stty -F $SERIAL_DEV $BAUD_RATE raw -echo -echoe -echok

# 发送AT命令函数
send_at_command() {
    printf "%s\r\n" "$1" > $SERIAL_DEV
}

# 参数处理
if [ $# -eq 0 ]; then
    echo "Usage: $0 [zoom_in|zoom_out|focus_near|focus_far|iris_open|iris_close]"
    exit 1
fi

# 命令映射
if [ "$1" = "zoom_in" ]; then
    send_at_command "AT+ZOOM_IN"
elif [ "$1" = "zoom_out" ]; then
    send_at_command "AT+ZOOM_OUT"
elif [ "$1" = "focus_near" ]; then
    send_at_command "AT+FOCUS_NEAR"
elif [ "$1" = "focus_far" ]; then
    send_at_command "AT+FOCUS_FAR"
elif [ "$1" = "iris_open" ]; then
    send_at_command "AT+IRIS_OPEN"
elif [ "$1" = "iris_close" ]; then
    send_at_command "AT+IRIS_CLOSE"
else
    echo "Invalid command: $1"
    echo "Valid commands: zoom_in, zoom_out, focus_near, focus_far, iris_open, iris_close"
    exit 1
fi

echo "Command sent: $1"

2、整体逻辑没有问题,但是需要调用命令的格式不对,手动调整下即可

#!/bin/sh

SERIAL_DEV="/dev/ttyAMA2"
BAUD_RATE="9600"

# 配置串口参数
stty -F $SERIAL_DEV $BAUD_RATE raw -echo -echoe -echok

# 发送AT命令函数
send_at_command() {
    printf "%s\r\n" "$1" > $SERIAL_DEV
}

# 参数处理
if [ $# -eq 0 ]; then
    echo "Usage: $0 [A50F01104C4C409D|A50F01204C4C40AD|A50F01424C000043|A50F01414C000042|A50F0144004C0045|A50F0148004C0049]"
    exit 1
fi

# 命令映射
if [ "$1" = "A50F01104C4C409D" ]; then
    send_at_command "AT+ZOOM_IN"
elif [ "$1" = "A50F01204C4C40AD" ]; then
    send_at_command "AT+ZOOM_OUT"
elif [ "$1" = "A50F01424C000043" ]; then
    send_at_command "AT+FOCUS_NEAR"
elif [ "$1" = "A50F01414C000042" ]; then
    send_at_command "AT+FOCUS_FAR"
elif [ "$1" = "A50F0144004C0045" ]; then
    send_at_command "AT+IRIS_OPEN"
elif [ "$1" = "A50F0148004C0049" ]; then
    send_at_command "AT+IRIS_CLOSE"
else
    echo "Invalid command: $1"
    echo "Valid commands: A50F01104C4C409D, A50F01204C4C40AD, A50F01424C000043, A50F01414C000042, A50F0144004C0045, A50F0148004C0049"
    exit 1
fi

echo "Command sent: $1"

网站公告

今日签到

点亮在社区的每一天
去签到