Просмотр исходного кода

add: 添加air105的usb串口摄像头的demo,需要配合上位机程序使用

Wendal Chen 4 лет назад
Родитель
Сommit
75e0cfbc61

+ 336 - 0
demo/camera/Air105/capture_usb/GC032A_InitReg.txt

@@ -0,0 +1,336 @@
+0xf3,0xff,
+0xf7,0x01,
+0xf8,0x03,
+0xf9,0xce,
+0xfa,0x00,
+0xfc,0x02,
+0xfe,0x02,
+0x81,0x03,
+0xfe, 0x00,
+0x77, 0x64,
+0x78, 0x40,
+0x79, 0x60,
+
+0xfe, 0x00,
+0x03, 0x01,
+0x04, 0xcb,
+0x05, 0x01,
+0x06, 0xb2,
+0x07, 0x00,
+0x08, 0x10,
+
+0x0a, 0x00,
+0x0c, 0x00,
+0x0d, 0x01,
+0x0e, 0xe8,
+0x0f, 0x02,
+0x10, 0x88,
+
+0x17, 0x54,
+0x19, 0x08,
+0x1a, 0x0a,
+0x1f, 0x40,
+0x20, 0x30,
+0x2e, 0x80,
+0x2f, 0x2b,
+0x30, 0x1a,
+0xfe, 0x02,
+0x03, 0x02,
+0x05, 0xd7,
+0x06, 0x60,
+0x08, 0x80,
+0x12, 0x89,
+
+
+0xfe, 0x00,
+0x18, 0x02,
+0xfe, 0x02,
+0x40, 0x22,
+0x45, 0x00,
+0x46, 0x00,
+0x49, 0x20,
+0x4b, 0x3c,
+0x50, 0x20,
+0x42, 0x10,
+
+
+0xfe, 0x01,
+0x0a, 0xc5,
+0x45, 0x00,
+0xfe, 0x00,
+0x40, 0xff,
+0x41, 0x25,
+0x42, 0xef,
+0x43, 0x10,
+0x44, 0x82,
+0x46, 0x22,
+0x49, 0x03,
+0x52, 0x02,
+0x54, 0x00,
+0xfe, 0x02,
+0x22, 0xf6,
+
+
+0xfe, 0x01,
+0xc1, 0x38,
+0xc2, 0x4c,
+0xc3, 0x00,
+0xc4, 0x2c,
+0xc5, 0x24,
+0xc6, 0x18,
+0xc7, 0x28,
+0xc8, 0x11,
+0xc9, 0x15,
+0xca, 0x20,
+0xdc, 0x7a,
+0xdd, 0xa0,
+0xde, 0x80,
+0xdf, 0x88,
+
+
+0xfe, 0x01,
+0x50, 0xc1,
+0x56, 0x34,
+0x58, 0x04,
+0x65, 0x06,
+0x66, 0x0f,
+0x67, 0x04,
+0x69, 0x20,
+0x6a, 0x40,
+0x6b, 0x81,
+0x6d, 0x12,
+0x6e, 0xc0,
+0x7b, 0x2a,
+0x7c, 0x0c,
+0xfe, 0x01,
+0x90, 0xe3,
+0x91, 0xc2,
+0x92, 0xff,
+0x93, 0xe3,
+0x95, 0x1c,
+0x96, 0xff,
+0x97, 0x44,
+0x98, 0x1c,
+0x9a, 0x44,
+0x9b, 0x1c,
+0x9c, 0x64,
+0x9d, 0x44,
+0x9f, 0x71,
+0xa0, 0x64,
+0xa1, 0x00,
+0xa2, 0x00,
+0x86, 0x00,
+0x87, 0x00,
+0x88, 0x00,
+0x89, 0x00,
+0xa4, 0xc2,
+0xa5, 0x9b,
+0xa6, 0xc8,
+0xa7, 0x92,
+0xa9, 0xc9,
+0xaa, 0x96,
+0xab, 0xa9,
+0xac, 0x99,
+0xae, 0xce,
+0xaf, 0xa9,
+0xb0, 0xcf,
+0xb1, 0x9d,
+0xb3, 0xcf,
+0xb4, 0xac,
+0xb5, 0x00,
+0xb6, 0x00,
+0x8b, 0x00,
+0x8c, 0x00,
+0x8d, 0x00,
+0x8e, 0x00,
+0x94, 0x55,
+0x99, 0xa6,
+0x9e, 0xaa,
+0xa3, 0x0a,
+0x8a, 0x00,
+0xa8, 0x55,
+0xad, 0x55,
+0xb2, 0x55,
+0xb7, 0x05,
+0x8f, 0x00,
+0xb8, 0xc7,
+0xb9, 0xa0,
+
+0xfe, 0x01,
+0xd0, 0x40,
+0xd1, 0x00,
+0xd2, 0x00,
+0xd3, 0xfa,
+0xd4, 0x4a,
+0xd5, 0x02,
+
+0xd6, 0x44,
+0xd7, 0xfa,
+0xd8, 0x04,
+0xd9, 0x08,
+0xda, 0x5c,
+0xdb, 0x02,
+0xfe, 0x00,
+
+
+0xfe, 0x00,
+0xba, 0x00,
+0xbb, 0x06,
+0xbc, 0x0b,
+0xbd, 0x10,
+0xbe, 0x19,
+0xbf, 0x26,
+0xc0, 0x33,
+0xc1, 0x3f,
+0xc2, 0x54,
+0xc3, 0x68,
+0xc4, 0x7c,
+0xc5, 0x8c,
+0xc6, 0x9c,
+0xc7, 0xb4,
+0xc8, 0xc9,
+0xc9, 0xd8,
+0xca, 0xe4,
+0xcb, 0xee,
+0xcc, 0xf4,
+0xcd, 0xf9,
+0xce, 0xfa,
+0xcf, 0xff,
+
+
+0xfe, 0x00,
+0x5a, 0x08,
+0x5b, 0x0f,
+0x5c, 0x15,
+0x5d, 0x1c,
+0x5e, 0x28,
+0x5f, 0x36,
+0x60, 0x45,
+0x61, 0x51,
+0x62, 0x6a,
+0x63, 0x7d,
+0x64, 0x8d,
+0x65, 0x98,
+0x66, 0xa2,
+0x67, 0xb5,
+0x68, 0xc3,
+0x69, 0xcd,
+0x6a, 0xd4,
+0x6b, 0xdc,
+0x6c, 0xe3,
+0x6d, 0xf0,
+0x6e, 0xf9,
+0x6f, 0xff,
+
+
+0xfe, 0x00,
+0x70, 0x50,
+
+
+0xfe, 0x00,
+0x4f, 0x01,
+0xfe, 0x01,
+0x0c, 0x01,
+0x0d, 0x00,
+0x12, 0xa0,
+0x13, 0x4a,
+0x44, 0x04,
+0x1f, 0x40,
+0x20, 0x40,
+0x23, 0x0a,
+0x26, 0x9a,
+0x3e, 0x20,
+0x3f, 0x2d,
+0x40, 0x40,
+0x41, 0x5b,
+0x42, 0x82,
+0x43, 0xb7,
+0x04, 0x0a,
+0x02, 0x79,
+0x03, 0xc0,
+
+
+0xfe, 0x01,
+0xcc, 0x08,
+0xcd, 0x08,
+0xce, 0xa4,
+0xcf, 0xec,
+
+
+0xfe, 0x00,
+0x81, 0xb8,
+0x82, 0x04,
+0x83, 0x10,
+0x84, 0x01,
+0x86, 0x50,
+0x87, 0x18,
+0x88, 0x10,
+0x89, 0x70,
+0x8a, 0x20,
+0x8b, 0x10,
+0x8c, 0x08,
+0x8d, 0x0a,
+
+
+0xfe, 0x00,
+0x8f, 0xaa,
+0x90, 0x1c,
+0x91, 0x52,
+0x92, 0x03,
+0x93, 0x03,
+0x94, 0x08,
+0x95, 0x6a,
+0x97, 0x00,
+0x98, 0x00,
+
+
+0xfe, 0x00,
+0x9a, 0x30,
+0x9b, 0x50,
+0xa1, 0x30,
+0xa2, 0x66,
+0xa4, 0x28,
+0xa5, 0x30,
+0xaa, 0x28,
+0xac, 0x32,
+
+
+0xfe, 0x00,
+0xd1, 0x3f,
+0xd2, 0x3f,
+0xd3, 0x38,
+0xd6, 0xf4,
+0xd7, 0x1d,
+0xdd, 0x72,
+0xde, 0x84,
+
+0xfe, 0x00,
+0x05, 0x01,
+0x06, 0xad,
+0x07, 0x00,
+0x08, 0x10,
+
+0xfe, 0x01,
+0x25, 0x00,
+0x26, 0x4d,
+
+0x27, 0x01,
+0x28, 0xce,
+0x29, 0x01,
+0x2a, 0xce,
+0x2b, 0x01,
+0x2c, 0xce,
+0x2d, 0x01,
+0x2e, 0xce,
+0x2f, 0x01,
+0x30, 0xce,
+0x31, 0x01,
+0x32, 0xce,
+0x33, 0x01,
+0x34, 0xce,
+0x3c, 0x10,
+0xfe, 0x00,
+0xfe,0x00,
+0x44,0x06,
+0x46,0x0f,
+#此为注释

+ 457 - 0
demo/camera/Air105/capture_usb/main.lua

@@ -0,0 +1,457 @@
+
+
+PROJECT = "usbcamera"
+VERSION = "1.0.0"
+
+local sys = require "sys"
+
+--[[
+-- LCD接法示例, 以Air105开发板的HSPI(SPI5)为例
+LCD管脚       Air105管脚
+GND          GND
+VCC          3.3V
+SCL          (PC15/HSPI_SCK)
+SDA          (PC13/HSPI_MOSI)
+RES          (PC12/HSPI_MISO)
+DC           (PE08) --开发板上的U3_RX
+CS           (PC14/HSPI_CS)
+BL           (PE09) --开发板上的U3_TX
+
+
+提示:
+1. 只使用SPI的时钟线(SCK)和数据输出线(MOSI), 其他均为GPIO脚
+2. 数据输入(MISO)和片选(CS), 虽然是SPI, 但已复用为GPIO, 并非固定,是可以自由修改成其他脚
+]]
+
+if wdt then
+    wdt.init(15000)--初始化watchdog设置为15s
+    sys.timerLoopStart(wdt.feed, 10000)--10s喂一次狗
+end
+
+spi_lcd = spi.deviceSetup(5,pin.PC14,0,0,8,48*1000*1000,spi.MSB,1,1)
+
+-- log.info("lcd.init",
+-- lcd.init("st7735s",{port = "device",pin_dc = pin.PE08 ,pin_rst = pin.PC12,pin_pwr = pin.PE09,direction = 2,w = 160,h = 80,xoffset = 1,yoffset = 26},spi_lcd))
+
+log.info("lcd.init",
+lcd.init("st7789",{port = "device",pin_dc = pin.PE08 ,pin_rst = pin.PC12,pin_pwr = pin.PE09,direction = 0,w = 240,h = 320,xoffset = 0,yoffset = 0},spi_lcd))
+
+-- log.info("lcd.init",
+-- lcd.init("st7735",{port = "device",pin_dc = pin.PE08 ,pin_rst = pin.PC12,pin_pwr = pin.PE09,direction = 0,w = 128,h = 160,xoffset = 2,yoffset = 1},spi_lcd))
+
+-- log.info("lcd.init",
+-- lcd.init("gc9306x",{port = "device",pin_dc = pin.PE08 ,pin_rst = pin.PC12,pin_pwr = pin.PE09,direction = 0,w = 240,h = 320,xoffset = 0,yoffset = 0},spi_lcd))
+
+--GC032A输出rgb图像初始化命令
+local GC032A_InitReg =
+{
+	zbar_scan = 0,--是否为扫码
+    draw_lcd = 0,--是否向lcd输出
+    i2c_id = 0,
+	i2c_addr = 0x21,
+    pwm_id = 5;
+    pwm_period  = 12*1000*1000,
+    pwm_pulse = 0,
+	sensor_width = 640,
+	sensor_height = 480,
+    color_bit = 16,
+	init_cmd ="/luadb/GC032A_InitReg.txt"--此方法将初始化指令写在外部文件,支持使用 # 进行注释
+    --如不使用外部文件可直接使用下方初始化指令表
+	-- {
+    --     0xf3,0xff,
+    --     0xf7,0x01,
+    --     0xf8,0x03,
+    --     0xf9,0xce,
+    --     0xfa,0x00,
+    --     0xfc,0x02,
+    --     0xfe,0x02,
+    --     0x81,0x03,
+    --     0xfe, 0x00,
+    --     0x77, 0x64,
+    --     0x78, 0x40,
+    --     0x79, 0x60,
+
+    --     0xfe, 0x00,
+    --     0x03, 0x01,
+    --     0x04, 0xcb,
+    --     0x05, 0x01,
+    --     0x06, 0xb2,
+    --     0x07, 0x00,
+    --     0x08, 0x10,
+
+    --     0x0a, 0x00,
+    --     0x0c, 0x00,
+    --     0x0d, 0x01,
+    --     0x0e, 0xe8,
+    --     0x0f, 0x02,
+    --     0x10, 0x88,
+
+    --     0x17, 0x54,
+    --     0x19, 0x08,
+    --     0x1a, 0x0a,
+    --     0x1f, 0x40,
+    --     0x20, 0x30,
+    --     0x2e, 0x80,
+    --     0x2f, 0x2b,
+    --     0x30, 0x1a,
+    --     0xfe, 0x02,
+    --     0x03, 0x02,
+    --     0x05, 0xd7,
+    --     0x06, 0x60,
+    --     0x08, 0x80,
+    --     0x12, 0x89,
+       
+
+    --     0xfe, 0x00,
+    --     0x18, 0x02,
+    --     0xfe, 0x02,
+    --     0x40, 0x22,
+    --     0x45, 0x00,
+    --     0x46, 0x00,
+    --     0x49, 0x20,
+    --     0x4b, 0x3c,
+    --     0x50, 0x20,
+    --     0x42, 0x10,
+
+
+    --     0xfe, 0x01,
+    --     0x0a, 0xc5,
+    --     0x45, 0x00,
+    --     0xfe, 0x00,
+    --     0x40, 0xff,
+    --     0x41, 0x25,
+    --     0x42, 0xef,
+    --     0x43, 0x10,
+    --     0x44, 0x82,
+    --     0x46, 0x22,
+    --     0x49, 0x03,
+    --     0x52, 0x02,
+    --     0x54, 0x00,
+    --     0xfe, 0x02,
+    --     0x22, 0xf6,
+
+
+    --     0xfe, 0x01,
+    --     0xc1, 0x38,
+    --     0xc2, 0x4c,
+    --     0xc3, 0x00,
+    --     0xc4, 0x2c,
+    --     0xc5, 0x24,
+    --     0xc6, 0x18,
+    --     0xc7, 0x28,
+    --     0xc8, 0x11,
+    --     0xc9, 0x15,
+    --     0xca, 0x20,
+    --     0xdc, 0x7a,
+    --     0xdd, 0xa0,
+    --     0xde, 0x80,
+    --     0xdf, 0x88,
+
+
+    --     0xfe, 0x01,
+    --     0x50, 0xc1,
+    --     0x56, 0x34,
+    --     0x58, 0x04,
+    --     0x65, 0x06,
+    --     0x66, 0x0f,
+    --     0x67, 0x04,
+    --     0x69, 0x20,
+    --     0x6a, 0x40,
+    --     0x6b, 0x81,
+    --     0x6d, 0x12,
+    --     0x6e, 0xc0,
+    --     0x7b, 0x2a,
+    --     0x7c, 0x0c,
+    --     0xfe, 0x01,
+    --     0x90, 0xe3,
+    --     0x91, 0xc2,
+    --     0x92, 0xff,
+    --     0x93, 0xe3,
+    --     0x95, 0x1c,
+    --     0x96, 0xff,
+    --     0x97, 0x44,
+    --     0x98, 0x1c,
+    --     0x9a, 0x44,
+    --     0x9b, 0x1c,
+    --     0x9c, 0x64,
+    --     0x9d, 0x44,
+    --     0x9f, 0x71,
+    --     0xa0, 0x64,
+    --     0xa1, 0x00,
+    --     0xa2, 0x00,
+    --     0x86, 0x00,
+    --     0x87, 0x00,
+    --     0x88, 0x00,
+    --     0x89, 0x00,
+    --     0xa4, 0xc2,
+    --     0xa5, 0x9b,
+    --     0xa6, 0xc8,
+    --     0xa7, 0x92,
+    --     0xa9, 0xc9,
+    --     0xaa, 0x96,
+    --     0xab, 0xa9,
+    --     0xac, 0x99,
+    --     0xae, 0xce,
+    --     0xaf, 0xa9,
+    --     0xb0, 0xcf,
+    --     0xb1, 0x9d,
+    --     0xb3, 0xcf,
+    --     0xb4, 0xac,
+    --     0xb5, 0x00,
+    --     0xb6, 0x00,
+    --     0x8b, 0x00,
+    --     0x8c, 0x00,
+    --     0x8d, 0x00,
+    --     0x8e, 0x00,
+    --     0x94, 0x55,
+    --     0x99, 0xa6,
+    --     0x9e, 0xaa,
+    --     0xa3, 0x0a,
+    --     0x8a, 0x00,
+    --     0xa8, 0x55,
+    --     0xad, 0x55,
+    --     0xb2, 0x55,
+    --     0xb7, 0x05,
+    --     0x8f, 0x00,
+    --     0xb8, 0xc7,
+    --     0xb9, 0xa0,
+
+    --     0xfe, 0x01,
+    --     0xd0, 0x40,
+    --     0xd1, 0x00,
+    --     0xd2, 0x00,
+    --     0xd3, 0xfa,
+    --     0xd4, 0x4a,
+    --     0xd5, 0x02,
+
+    --     0xd6, 0x44,
+    --     0xd7, 0xfa,
+    --     0xd8, 0x04,
+    --     0xd9, 0x08,
+    --     0xda, 0x5c,
+    --     0xdb, 0x02,
+    --     0xfe, 0x00,
+
+
+    --     0xfe, 0x00,
+    --     0xba, 0x00,
+    --     0xbb, 0x06,
+    --     0xbc, 0x0b,
+    --     0xbd, 0x10,
+    --     0xbe, 0x19,
+    --     0xbf, 0x26,
+    --     0xc0, 0x33,
+    --     0xc1, 0x3f,
+    --     0xc2, 0x54,
+    --     0xc3, 0x68,
+    --     0xc4, 0x7c,
+    --     0xc5, 0x8c,
+    --     0xc6, 0x9c,
+    --     0xc7, 0xb4,
+    --     0xc8, 0xc9,
+    --     0xc9, 0xd8,
+    --     0xca, 0xe4,
+    --     0xcb, 0xee,
+    --     0xcc, 0xf4,
+    --     0xcd, 0xf9,
+    --     0xce, 0xfa,
+    --     0xcf, 0xff,
+
+
+    --     0xfe, 0x00,
+    --     0x5a, 0x08,
+    --     0x5b, 0x0f,
+    --     0x5c, 0x15,
+    --     0x5d, 0x1c,
+    --     0x5e, 0x28,
+    --     0x5f, 0x36,
+    --     0x60, 0x45,
+    --     0x61, 0x51,
+    --     0x62, 0x6a,
+    --     0x63, 0x7d,
+    --     0x64, 0x8d,
+    --     0x65, 0x98,
+    --     0x66, 0xa2,
+    --     0x67, 0xb5,
+    --     0x68, 0xc3,
+    --     0x69, 0xcd,
+    --     0x6a, 0xd4,
+    --     0x6b, 0xdc,
+    --     0x6c, 0xe3,
+    --     0x6d, 0xf0,
+    --     0x6e, 0xf9,
+    --     0x6f, 0xff,
+
+
+    --     0xfe, 0x00,
+    --     0x70, 0x50,
+
+
+    --     0xfe, 0x00,
+    --     0x4f, 0x01,
+    --     0xfe, 0x01,
+    --     0x0c, 0x01,
+    --     0x0d, 0x00,
+    --     0x12, 0xa0,
+    --     0x13, 0x4a,
+    --     0x44, 0x04,
+    --     0x1f, 0x40,
+    --     0x20, 0x40,
+    --     0x23, 0x0a,
+    --     0x26, 0x9a,
+    --     0x3e, 0x20,
+    --     0x3f, 0x2d,
+    --     0x40, 0x40,
+    --     0x41, 0x5b,
+    --     0x42, 0x82,
+    --     0x43, 0xb7,
+    --     0x04, 0x0a,
+    --     0x02, 0x79,
+    --     0x03, 0xc0,
+
+
+    --     0xfe, 0x01,
+    --     0xcc, 0x08,
+    --     0xcd, 0x08,
+    --     0xce, 0xa4,
+    --     0xcf, 0xec,
+
+
+    --     0xfe, 0x00,
+    --     0x81, 0xb8,
+    --     0x82, 0x04,
+    --     0x83, 0x10,
+    --     0x84, 0x01,
+    --     0x86, 0x50,
+    --     0x87, 0x18,
+    --     0x88, 0x10,
+    --     0x89, 0x70,
+    --     0x8a, 0x20,
+    --     0x8b, 0x10,
+    --     0x8c, 0x08,
+    --     0x8d, 0x0a,
+
+
+    --     0xfe, 0x00,
+    --     0x8f, 0xaa,
+    --     0x90, 0x1c,
+    --     0x91, 0x52,
+    --     0x92, 0x03,
+    --     0x93, 0x03,
+    --     0x94, 0x08,
+    --     0x95, 0x6a,
+    --     0x97, 0x00,
+    --     0x98, 0x00,
+
+
+    --     0xfe, 0x00,
+    --     0x9a, 0x30,
+    --     0x9b, 0x50,
+    --     0xa1, 0x30,
+    --     0xa2, 0x66,
+    --     0xa4, 0x28,
+    --     0xa5, 0x30,
+    --     0xaa, 0x28,
+    --     0xac, 0x32,
+
+
+    --     0xfe, 0x00,
+    --     0xd1, 0x3f,
+    --     0xd2, 0x3f,
+    --     0xd3, 0x38,
+    --     0xd6, 0xf4,
+    --     0xd7, 0x1d,
+    --     0xdd, 0x72,
+    --     0xde, 0x84,
+
+    --     0xfe, 0x00,
+    --     0x05, 0x01,
+    --     0x06, 0xad,
+    --     0x07, 0x00,
+    --     0x08, 0x10,
+
+    --     0xfe, 0x01,
+    --     0x25, 0x00,
+    --     0x26, 0x4d,
+
+    --     0x27, 0x01,
+    --     0x28, 0xce,
+    --     0x29, 0x01,
+    --     0x2a, 0xce,
+    --     0x2b, 0x01,
+    --     0x2c, 0xce,
+    --     0x2d, 0x01,
+    --     0x2e, 0xce,
+    --     0x2f, 0x01,
+    --     0x30, 0xce,
+    --     0x31, 0x01,
+    --     0x32, 0xce,
+    --     0x33, 0x01,
+    --     0x34, 0xce,
+    --     0x3c, 0x10,
+    --     0xfe, 0x00,
+    --     0xfe,0x00,
+    --     0x44,0x06,--RGB565输出
+    --     0x46,0x0f,
+	-- }
+}
+
+local uartid = 1 -- 根据实际设备选取不同的uartid
+--初始化
+local result = uart.setup(
+    uartid,--串口id
+    115200,--波特率
+    8,--数据位
+    1--停止位
+)
+
+local camera_pwdn = gpio.setup(pin.PD06, 1, gpio.PULLUP) -- PD06 camera_pwdn引脚
+local camera_rst = gpio.setup(pin.PD07, 1, gpio.PULLUP) -- PD07 camera_rst引脚
+
+camera_rst(0)
+
+-- 拍照, 自然就是RGB输出了
+local camera_id = camera.init(GC032A_InitReg)--屏幕输出rgb图像
+
+log.info("摄像头启动")
+camera.start(camera_id)--开始指定的camera
+log.info("摄像头启动完成")
+
+usbapp.start(0)
+
+-- 按开发板上的按钮触发拍照
+gpio.setup(pin.PA10, function()
+    sys.publish("CAPTURE", true)
+end, gpio.PULLUP,gpio.FALLING)
+
+sys.taskInit(function()
+    
+    while 1 do
+        -- result, data = sys.waitUntil("CAPTURE", 30000)
+        -- log.info("main", result, data)
+        -- if result==true and data==true then
+        sys.wait(1000)
+            log.debug("摄像头捕获图像")
+            os.remove("/temp.jpg")
+            camera.capture(camera_id, "/temp.jpg", 1)
+            sys.wait(1000)
+            local f = io.open("/temp.jpg", "r")
+            local data
+            if f then
+                data = f:read("*a")
+                log.info("fs", #data)
+                f:close()
+            end
+        
+            -- uart.write(uartid, data) --找个能保存数据的串口工具保存成文件就能在电脑上看了, 格式为JPG
+            uart.write(uart.VUART_0, "Air105 USB JPG " .. tostring(#data) .. "\r\n")
+            uart.write(uart.VUART_0, data)
+        -- end
+    end
+    
+end)
+
+-- 用户代码已结束---------------------------------------------
+-- 结尾总是这一句
+sys.run()
+-- sys.run()之后后面不要加任何语句!!!!!