This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/MSP-EXP430F5529LP:GUI Composer v2不工作

Guru**** 2540720 points
Other Parts Discussed in Thread: MSP-EXP430F5529LP, BQ76PL536EVM-3, ENERGIA

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/576960/ccs-msp-exp430f5529lp-gui-composer-v2-not-working

部件号:MSP-EXP430F5529LP
主题中讨论的其他部件: BQ76PL536EVM-3,ENERGIA

工具/软件:Code Composer Studio

您好论坛

我正在尝试使用GUI Composer v2为使用MSP-EXP430F5529LP和bq76PL536EVM-3的SLAA478电池管理系统应用程序创建GUI。 我已验证该代码在CCS v7中是否有效。 LaunchPad正在读取变量,但没有数据发送到主机PC。  

在CCS云上,代码不能正常显示,因为并非所有单元电压都被正确读取(在调试模式下可见)。 此外,CCS云中的任何操作运行/调试都会显示消息"未知断点ID:117"。 我已经从代码中删除了所有断点,因此我不确定这意味着什么。

当我尝试使用GUI Composer v2时,我为目标通信选择USB/串行IO,然后单击"Connect"(连接)以5.76万波特率连接到COM3。 这些是LaunchPad所连接到的COM端口的正确设置。

我在GUI中放置组件,并在选择了TARGET_DEVICE (目标设备)后,使用'value'(值)字段旁边的链路将它们链接到程序中的变量。 我运行GUI (启动板上的程序正在运行,而不运行),GUI中没有任何反应。 未显示数据。

我尝试使用XDS调试端口/目标监视器设置,但系统提示我上传'目标可执行文件',我不确定这是什么。 事实上,上载到CCS云的唯一文件是整个项目文件夹。

我搜索了论坛和更广泛的Web,寻找答案,但有关GUI Composer v2的正确文档似乎很少/根本不存在。 我尝试恢复到CCS v6,但我正在运行的程序太大,CCS v6无法对LaunchPad进行编程。

是否有其他人遇到过此问题? 有人能帮我解决这个问题吗?

是否可以构建一个GUI,仅显示启动板上存储的变量值,而不通过串行端口发送到主机PC?

是否应在使用GUI Composer v2之前连接至CCS云? 在GUI Composer v2中选择‘运行’之前,程序是否需要运行?

此致

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    没有人有任何可能的解决方案?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好,Raheem,  

    《用户指南》包含一些与TARGET交互的信息。 直接链接如下。  

    5529 (所有MSP430器件)有一些限制,即当CPU运行时,不能进行调试访问。也就是说,您必须先停止CPU,然后才能在表达式视图中看到变量。 至少这是默认行为,有一种方法可以将CCS Desktop配置为强制暂停,更新视图然后运行CPU。 但是,在刷新期间,CPU会停止运行,因此应用程序不会运行。  

    仅当5529 CPU具有可发送/编码要以JSON格式显示的数据的代码时,USB/串行IO通信模式才起作用。 根据您的使用情况,这可能适合您,但您需要更改在5529 CPU上运行的程序。  

    XDS /目标监视器:对于某些设备,调试探测器可以访问设备内存,而无需对程序进行任何特殊更改。 遗憾的是,MSP430不支持此功能,因此它需要一个目标监视器。 目标监视器(至少目标侧与 下面记录的GCv1相同)。 实际上,您需要在5520上运行的程序中添加处理内存读/写的相同实现。  

    以上两个选项都可以用于5529,但是,这两个选项都要求您更改目标程序(即,当您单击“生成”时CCS项目的输出,通常具有.out扩展名)。 发送带有编码数据的JSON字符串或可提供读/写存储器服务的目标监视器。  

    马丁

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好Martin

    感谢您的回复,以及这些链接。 我已经决定最好使用JSON进行USB/串行IO路由。

    我从BlinkJsonUart教程项目开始,并已验证它是否有效。 此项目提供的代码为:

    #include <aJson.h>//
    
    大多数启动板都有一个红色LED
    #define LED red_LED
    
    //有关更多LED定义,请参见pins_energia.h
    void printled_statewithjson (int state){
    aJsonObject* root = aJson.CreateObject();
    if (root == NULL){
    return;
    }
    
    aJson.addItemToObject(root,"LED", aJson.createItem(state);
    
    char* string = aJson.print(root);
    
    如果(string != NULL){
    serial.println(string);
    免费(string);
    }
    
    aJson.deleteItem(root);
    }//
    
    当您按RESET:
    void setup()时,设置例程运行一次
    //将数字引脚初始化为输出。
    引脚模式(LED);
    Serial.begin(9600);
    }//
    
    循环例程永远反复运行:
    void loop(){
    digitalWrite(LED, high );//打开LED (高为电压级别)
    printled_statewithjson(1);//打印LED状态设置为1到UART
    delay(1000)的json对象; //等待第二
    个数字写(LED, low);//通过使电压低
    printled-statewithjson(0)关闭LED;//打印LED状态设置为0至UART
    DELAY (1000)的json对象; //等待一秒钟
    } 

    在这3个函数中,我了解loop()和setup()函数的作用。 但我不完全理解printled_statewithjson()[line 19]的工作原理。 根据通过COM端口发送的信息,我可以知道第25行包含要发送的信息。 虽然我不确定"root"变量的确切作用,这里的"LED"必须是指GUI中小部件的名称,"aJson.createItem(state)"必须告诉GUI LED是开还是关(1或0)。 这是否正确?

    最后,要在我的程序中实现类似的代码,我认为必要的步骤是包括"aJson.h"和"Energia.h"标题,然后使用类似于 printled_statewithjson()的函数。


    此致

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好,Raheem,

     printled-statewithjson函数正在使用Json Energia库。 如果您阅读文档,应该会更清楚该函数的工作方式。下面是指向GitHub的链接,GitHub中包含该库和一些文档。  

    当需要发送复杂的JSON对象时,使用该库可能很有用。 但是,如果您只想发送几个简单的变量,那么只打印到序列可能会更简单。下面是一个简单的示例,几乎可以执行相同的操作。即发送  

    {"LED":"0"}

    或  

    {"LED":"1"}  

    串行端口上的字符串取决于闪烁示例是打开还是关闭LED。  

    _________________________________

    //大多数启动板都有一个红色LED

    #define LED red_LED

    volatile unsigned int blinkCounter;

     

    //有关LED的详细定义,请参见pins_energia.h

    //#定义LED绿色_LED

     

    //当您按下RESET时,设置例程将运行一次:

    void setup(){                

     //将数字引脚初始化为输出。

     引脚模式(LED,输出);     

       //初始化串行并等待端口打开:

     Serial.begin(9600);

    }

     

    //循环例程永远反复运行:

    void loop(){

     DigitalWrite (LED,高);  //打开LED (高为电压电平)

     DELAY (1000);              //等待一秒钟

     serial.println ("{\"LED\":1\"}");

     BlinkCounter++;

     DigitalWrite (LED,LOW);   //通过降低电压关闭LED

     DELAY (1000);              //等待一秒钟

     serial.println ("{\"LED\":0\}");

     BlinkCounter++;

    }

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    好的,谢谢。

    Serial.print()方法更容易,但CCS v7是否随安装的库一起提供以使用它? CCS云怎么样?

    从我所做的每一件事来看,图书馆似乎有Energia,而我并没有使用它。 我尝试在CCS v7中包括“aJson.h”和“Energia.h”库,但总是出现错误,指出需要包括更多头文件/库。

    此致

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Martin,

    我继续尝试使用程序中使用的不同功能进行串行打印。 这是我的代码片段:

    如果(g%2 == 0){
    strcpy (OutputString,"{\"LED\":0\"}");
    #ifdef UART_COMM
    //通过UART将消息发送到主机
    putUART ((bytes*) OutputString,strlen (OutputString));
    #endif
    }
    else {
    strcpy (OutputString,"{\"LED\":1\"}");
    #ifdef UART_COMM
    //通过UART将消息发送到主机
    putUART ((bytes*) OutputString,strlen (OutputString));
    #endif
    }g++
    ; 

    代码应交替发送{"LED":"0"}或{"LED":"1"}。 我使用PuTTY确认这种方法有效:

    但当我尝试通过GUI Composer v2连接到设备时,服务要么不连接,要么不接收数据。 这就是我所看到的:

    底部的红色条形会一直持续下去;控制台中从未显示任何数据。

    您知道如何解决此问题吗?

    此致

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好,Raheem,  

    查看您所附的PuTTY图片,需要引用名称和值。例如,它应该是{"LED":"0"}Putty正在显示{"LED":0}

    马丁

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好Martin

    这是我的错误。 我已经调整了代码,以便输出为{"LED":"0"},而GUI Composer v2现在可以识别数据。 感谢你的帮助。

    此致