当前位置: 首页 > news >正文

TSMaster-C小程序使用

在这里插入图片描述
打开同星的TSMaster,推荐用32版本的,比64更稳定。同星的TSMaster的C小程序支持用户嵌入代码来控制CAN报文的收发逻辑。便于开发。

在这里插入图片描述
点击设计里面的C小程序。

比如我现在想用小程序来实现继电器0先开后关开1s关1s,然后继电器1开1s关1s…如此往复到继电器39
定义全局变量
在这里插入图片描述
在这里插入图片描述

if(flag)
{flag = 0;CAN_Data[0] = relay_ch;CAN_Data[1] = 0x0;       {// [1] CAN 0x240D BOB_BOX_SET_ONE_RELAY_STATE_REQ 控制单个继电器TCAN f0 = {0,0x5,2,0,0x240D,0,{0}};memcpy(f0.FData, CAN_Data, 8);com.transmit_can_async(&f0);app.wait(0, "");}relay_ch++;if(relay_ch == 40)relay_ch = 0;}
else
{flag = 1;CAN_Data[0] = relay_ch;CAN_Data[1] = 0x1; {// [1] CAN 0x240D BOB_BOX_SET_ONE_RELAY_STATE_REQ 控制单个继电器TCAN f0 = {0,0x5,2,0,0x240D,0,{0}};memcpy(f0.FData, CAN_Data, 8);com.transmit_can_async(&f0);app.wait(0, "");}
}

可以直接报文转化为C脚本
在这里插入图片描述

也可以根据帮助手册手写。
TCAN类型是什么?可以在TSMaster.h里面看到。
在这里插入图片描述

// CAN frame type ================================================
typedef struct _TCAN{u8 FIdxChn;u8 FProperties;u8 FDLC;u8 FReserved;s32 FIdentifier;s64 FTimeUs;u8  FData[8];// is_tx -----------------------------------------------------bool get_is_tx(void){ return (FProperties & MASK_CANProp_DIR_TX) != 0;}void set_is_tx(const bool value){if (value) {FProperties = FProperties | MASK_CANProp_DIR_TX;} else {FProperties = FProperties & (~MASK_CANProp_DIR_TX);}}__declspec(property(get = get_is_tx, put = set_is_tx)) bool is_tx;// is_data ----------------------------------------------------bool get_is_data(void){ return (FProperties & MASK_CANProp_REMOTE) == 0;}void set_is_data(const bool value){if (value) {FProperties = FProperties & (~MASK_CANProp_REMOTE);} else {FProperties = FProperties | MASK_CANProp_REMOTE;}}__declspec(property(get = get_is_data, put = set_is_data)) bool is_data;// is_std -----------------------------------------------------bool get_is_std(void){ return (FProperties & MASK_CANProp_EXTEND) == 0;}void set_is_std(const bool value){if (value) {FProperties = FProperties & (~MASK_CANProp_EXTEND);} else {FProperties = FProperties | MASK_CANProp_EXTEND;}}__declspec(property(get = get_is_std, put = set_is_std)) bool is_std;// is_err ----------------------------------------------------bool get_is_err(void){ return (FProperties & MASK_CANProp_ERROR) != 0;}void set_is_err(const bool value){if (value) {FProperties = FProperties | MASK_CANProp_ERROR;} else {FProperties = FProperties & (~MASK_CANProp_ERROR);}}__declspec(property(get = get_is_err, put = set_is_err)) bool is_err;// load data bytes -------------------------------------------void load_data(u8* a) {for (u32 i = 0; i < 8; i++) {FData[i] = *a++;}}void set_data(const u8 d0, const u8 d1, const u8 d2, const u8 d3, const u8 d4, const u8 d5, const u8 d6, const u8 d7){FData[0] = d0;FData[1] = d1;FData[2] = d2;FData[3] = d3;FData[4] = d4;FData[5] = d5;FData[6] = d6;FData[7] = d7;}// initialize with standard identifier -----------------------void init_w_std_id(s32 AId, s32 ADLC) {FIdxChn = 0;FIdentifier = AId;FDLC = ADLC;FReserved = 0;FProperties = 0;is_tx = false;is_std = true;is_data = true;*(u64*)(&FData[0]) = 0;FTimeUs = 0;}// initialize with extended identifier -----------------------void init_w_ext_id(s32 AId, s32 ADLC) {FIdxChn = 0;FIdentifier = AId;FDLC = ADLC;FReserved = 0;FProperties = 0;is_tx = false;is_std = false;is_data = true;*(u64*)(&FData[0]) = 0;FTimeUs = 0;}
} TCAN, *PCAN;
http://www.xdnf.cn/news/1254385.html

相关文章:

  • UE5多人MOBA+GAS 39、制作角色上半身UI
  • 主流小程序 SaaS 平台测评,2025年小程序开发避坑指南
  • 基于 Altium Designer 的电路原理图学习记录
  • 小程序省市级联组件使用
  • 机器学习通关秘籍|Day 04:梯度下降的概念原理、手动实现梯度下降
  • Day 6: CNN卷积神经网络 - 计算机视觉的核心引擎
  • Android 之 Kotlin 扩展库KTX
  • 利用vue.js2X写前端搜索页面,express写后端API接口展现搜索数据
  • MySQL UNION 操作符详细说明
  • MySql MVCC的原理总结
  • 2.8 ref 和 自定义指令
  • vscode 打开设置
  • 配置VScode内置Emmet自动补全代码
  • VSCode ssh一直在Setting up SSH Host xxx: Copying VS Code Server to host with scp等待
  • 中介效应分析 原理解释 实例分析
  • 杂谈:大模型与垂直场景融合的技术趋势
  • 2025世界机器人大会开幕在即,英伟达/微美全息前瞻聚焦深化场景实践布局!
  • 基于Python的超声波OFDM数字通信链路设计与实现
  • Self-RAG:基于自我反思的检索增强生成框架技术解析
  • AI巨模型对决2025:五强争霸,谁能称王?
  • 嵌入式开发学习———Linux环境下IO进程线程学习(五)
  • 【软考系统架构设计师备考笔记4】 - 英语语法一篇通
  • 【感知机】感知机(perceptron)模型与几何解释
  • 并发编程常见问题排查与解决:从死锁到线程竞争的实战指南
  • word2vector细致分解(CBOW, SKIP_GRAM, 层次soft Max, 负采样)
  • 【前端开发】三. JS运算符
  • 奔图P2500NW打印机手机无线连接方法
  • JavaScript 基础语法
  • Kubernetes中无法删除一个对象,持续处于Terminating状态的解决方案
  • Linux发行版分类与Centos替代品