【项目实战】利用AI生成式编程生成控制镜头变倍,变焦,光圈的Shell脚本(一)
【项目实战】利用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/shSERIAL_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 ]; thenecho "Usage: $0 [zoom_in|zoom_out|focus_near|focus_far|iris_open|iris_close]"exit 1
fi# 命令映射
if [ "$1" = "zoom_in" ]; thensend_at_command "AT+ZOOM_IN"
elif [ "$1" = "zoom_out" ]; thensend_at_command "AT+ZOOM_OUT"
elif [ "$1" = "focus_near" ]; thensend_at_command "AT+FOCUS_NEAR"
elif [ "$1" = "focus_far" ]; thensend_at_command "AT+FOCUS_FAR"
elif [ "$1" = "iris_open" ]; thensend_at_command "AT+IRIS_OPEN"
elif [ "$1" = "iris_close" ]; thensend_at_command "AT+IRIS_CLOSE"
elseecho "Invalid command: $1"echo "Valid commands: zoom_in, zoom_out, focus_near, focus_far, iris_open, iris_close"exit 1
fiecho "Command sent: $1"
2、整体逻辑没有问题,但是需要调用命令的格式不对,手动调整下即可
#!/bin/shSERIAL_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 ]; thenecho "Usage: $0 [A50F01104C4C409D|A50F01204C4C40AD|A50F01424C000043|A50F01414C000042|A50F0144004C0045|A50F0148004C0049]"exit 1
fi# 命令映射
if [ "$1" = "A50F01104C4C409D" ]; thensend_at_command "AT+ZOOM_IN"
elif [ "$1" = "A50F01204C4C40AD" ]; thensend_at_command "AT+ZOOM_OUT"
elif [ "$1" = "A50F01424C000043" ]; thensend_at_command "AT+FOCUS_NEAR"
elif [ "$1" = "A50F01414C000042" ]; thensend_at_command "AT+FOCUS_FAR"
elif [ "$1" = "A50F0144004C0045" ]; thensend_at_command "AT+IRIS_OPEN"
elif [ "$1" = "A50F0148004C0049" ]; thensend_at_command "AT+IRIS_CLOSE"
elseecho "Invalid command: $1"echo "Valid commands: A50F01104C4C409D, A50F01204C4C40AD, A50F01424C000043, A50F01414C000042, A50F0144004C0045, A50F0148004C0049"exit 1
fiecho "Command sent: $1"