工具/软件:Code Composer Studio
我的 javascript 知识有限、因此我不知道如何做我要实现的目标。 当我使用 USB UART 监视器协议时、很容易将 GUI 参数绑定到我的目标全局变量。 在 GUI 或目标两侧发生更改的任何内容在另一侧进行更新。 现在、我要执行相同的操作、但要使用 USB UART 自定义编解码器流协议。 我希望持续向目标发送一个二进制数据包、目标将在接收到数据包时做出响应。 例如、我要发送的数据包是来自 GUI 的参数(StartTest、SystemType、 TestType)、该参数绑定到 ti_model_streaming。 我添加了一个新的定制编解码器 JS 文件、这里是我的定制编解码器编码和解码函数:
document.addEventListener ('gC-DataBind 就绪'、function(){
CustomCodec = function(){};
CustomCodec.prototype = new gc.DataBind.IPollingPacketCodec();
CustomCodec.prototype.rxPktCtr = 0;
CustomCodec.prototype.rxMsgCtr = 0;
CustomCodec.prototype.txPktCtr = 0;
CustomCodec.prototype.txMsgCtr = 0;
CustomCodec.prototype.strRxBuffer ="";
CustomCodec.prototype.strTxBuffer ="";
CustomCodec.prototype.isConnected = false;
CustomCodec.prototype.initComplete = false;
CustomCodec.prototype.templateObj =未定义;
CustomCodec.prototype.encode =函数(target、jsonObj){
thed.txPktCTL++;
尝试{
此.txMsgCtr ++;
if (this.txMsgCtr % 256){
gc.console.log ("CustomCodec"、"要发送到目标的 TX 消息数:"+this.txMsgCtr);
}
VAR dataToSend =[];//json.Stringify (jsonObj)+"\n";
dataToSend.PUSH (0x55);//startbyte
dataToSend.PUSH (jsonObj.StartTest);
dataToSend.PUSH (jsonObj.SystemType);
dataToSend.PUSH (jsonObj.TestType);
//将字符串发送到目标
目标(dataToSend);
} 获取(例如){
console.log ("CustomCodec.encode (到目标):exception="+ ex);
}
};
CustomCodec.prototype.decode =函数(目标、数据){
isconnected = true;
the.rxPktCTR++;
VAR StartByte = DATA[0];
var jsonObj ={
循环计数器:DATA[1]、
StartTest:Data[2]、
DataReciped:Data[3]
}
目标(jsonObj);
//返回 true 以在状态栏中设置“硬件已连接”状态
返回此.isconnected;
};
我可以将数据包发送到我的目标、但我遇到了牵引问题。
首先、当我单击 GUI 上的某个内容时、数据包才会被发送。 我猜这是因为编码函数位于事件侦听器 document.addEventListener ('GC-DataBind 就绪'、function()内,该函数会对某些 GUI 事件作出反应。 但是、如何在1ms 的间隔内持续发送独立于 GUI 事件的数据包呢?
其次、当数据包被发送时、只有改变的参数值(点击)被发送到我的目标、其他参数在我的调试观察窗口和目标上显示"未定义"。
换言之、我要将 GUI 中的所有绑定参数同步发送到目标、目标将进行响应。 接收到的数据我想再次绑定到 GUI 并显示。 我该怎么做?