
# 使用代码生成器
#### 概述
SDK提供了设备代码生成器，需要下载[SDK源码](https://github.com/huaweicloud/huaweicloud-iot-device-sdk-java)。用户只需要提供产品模型文件，就能自动生成设备代码框架。代码生成器可以解析设备模型文件，然后对模型里定义的每个服务，生成对应的service类，然后生成一个设备主类，在main函数中创建设备并注册设备服务实例。
#### 操作步骤
1. 生成物模型代码。
   1. 下载huaweicloud-iot-device-sdk-java工程，解压缩后进入huaweicloud-iot-device-sdk-java目录执行"mvn install"。
      图1执行编译命令   
      ![](https://support.huaweicloud.com/sdkreference-iothub/figure/zh-cn_image_0000002357721522.png "点击放大") 
   
   2. 执行完成会在iot-device-code-generator的target下生成可执行jar包。
      图2生成可执行jar包   
      ![](https://support.huaweicloud.com/sdkreference-iothub/figure/zh-cn_image_0000002391161661.png "点击放大") 
   
   3. 将产品模型文件保存到本地，比如模型文件"smokeDetector.zip"放到D盘。
   
   4. 访问SDK根目录，执行"java -jar .\\iot-device-code-generator\\target\\iot-device-code-generator-1.2.0-with-deps.jar D:\\smokeDetector.zip"。
      图3执行代码生成命令   
      ![](https://support.huaweicloud.com/sdkreference-iothub/figure/zh-cn_image_0000002357561594.png "点击放大") 
   
   5. 查看huaweicloud-iot-device-sdk-java目录下已生成generated-demo包则设备代码成功生成。
      图4代码生成成功   
      ![](https://support.huaweicloud.com/sdkreference-iothub/figure/zh-cn_image_0000002391201525.png "点击放大") 
    
2. 编译及运行物模型代码。
   1. 访问"huaweicloud-iot-device-sdk-java\\generated-demo"，执行"mvn install"。 ![](https://support.huaweicloud.com/sdkreference-iothub/figure/zh-cn_image_0000002357721530.png "点击放大")
      ![](https://support.huaweicloud.com/sdkreference-iothub/figure/zh-cn_image_0000002391161669.png "点击放大")
      
   
   2. 执行java -jar .\\target\\iot-device-demo-ganerated-1.2.0-with-deps.jar ssl://***域名信息*** :8883***device_id*** ***secret*** ，三个参数分别为设备接入地址、设备id和密码，运行生成的demo。
      ```
      D:\git\huaweicloud-iot-device-sdk-java\generated-demo>java -jar .\target\iot-device-demo-ganerated-1.2.0-with-deps.jar ssl://域名信息:8883 5e06bfee334dd4f33759f5b3_demo secret
      2024-04-17 15:50:53  INFO AbstractService:73 - create device, the deviceId is 5e06bfee334dd4f33759f5b3_demo
      2024-04-17 15:50:54  INFO MqttConnection:204 - try to connect to ssl://域名信息:8883
      2024-04-17 15:50:55  INFO MqttConnection:228 - connect success, the uri is ssl://域名信息:8883
      ```
      
    
3. 修改物模型代码。生成的代码已经完成了服务的定义和注册，用户只需要进行少量的修改即可。
   - 命令接口，需要添加具体的实现逻辑。 ![](https://support.huaweicloud.com/sdkreference-iothub/figure/zh-cn_image_0000002357561602.png "点击放大")
     
   
   - getter方法，生成的代码是返回随机值，需要改为从传感器读取数据。
   
   - setter方法，生成的代码只完成了属性的修改保存，还需要添加真实的逻辑处理，比如向传感器下发指令。
    
 
