电子负载仪的远端控制

前言

最近研究了电子负载仪的远端控制(区别于前面板控制),主要是用于程序控制,避免繁琐复杂的人工控制,举了南京嘉拓和艾维泰科的例子。

有纰漏请指出,转载请说明。

学习交流请发邮件 1280253714@qq.com

南京嘉拓

Microsoft Word - JT611x系勊çflµå (jartul.com)

RS232接口,TX对TX,RX对RX

输入开启或关闭(无回复)

INP 0

49 4E 50 20 30 0A

 输入查询

INP?

49 4E 50 3F 0A

回复

30 0D 0A

31 0D 0A

 返回0/1参数

该函数解析ASCII码数组,并找到0D 0A(即回车和换行符)之前的字符。如果该字符是30(即数字0的ASCII码),则返回0;如果是31(即数字1的ASCII码),则返回1;否则返回-1表示错误。 

s8 HexAsciiToFlag(u8 *hex_ascii_codes)
{if (hex_ascii_codes[1] == 0x0D && hex_ascii_codes[2] == 0x0A) {  // 检查0D 0A前面的字符是否是30或31  if (hex_ascii_codes[0] == '0') {  return 0;  } else if (hex_ascii_codes[0] == '1') {  return 1;  } else {  // 如果不是30或31,返回-1表示错误  return -1;  }  }   // 如果没有找到0D 0A,返回-1表示错误  return -1;  
}

读取电压

20 20 31 39 2E 31 39 0D 0A

  19.19

读取带电压信息的ASCII并返回浮点电压

在C语言中,要将ASCII码序列转换成浮点数据,可以通过以下步骤实现:

  1. 将每个ASCII码转换成对应的字符。
  2. 拼接这些字符形成一个字符串。
  3. 使用标准库函数atof()sscanf()将字符串转换成浮点数。
float HexAsciiToFloat(u8 *hex_ascii_codes)
{float voltage = 0;// 将十六进制ASCII码转换成字符,并构建字符串(不包括回车和换行符)  char voltage_str[11] = 0; // +1 为了字符串结束符 '\0'  int i, j = 0;  u8 len = 0;for (i = 0; i < 10; ++i) {  if (hex_ascii_codes[i] != 0x0D && hex_ascii_codes[i] != 0x0A) {  voltage_str[j++] = (char)hex_ascii_codes[i];  }  }  voltage_str[j] = '\0'; // 添加字符串结束符  // 去除字符串前后的空格  while (voltage_str[0] == ' ') {  memmove(voltage_str, voltage_str + 1, strlen(voltage_str));  }  len = strlen(voltage_str);  while (len > 0 && voltage_str[len - 1] == ' ') {  voltage_str[len - 1] = '\0';  len--;  }  // 使用atof函数将字符串转换为浮点数  voltage = atof(voltage_str); return voltage;
}

艾维泰科

TTL接口,RX对TX,TX对RX

IV8700系列直流电子负载说明书-东莞市艾维泰科仪器仪表有限公司 (ivytech.top)

控制命令举例

01 10 0A 01 00 02 04 3f 99 99 99 3A C2 设置电流1.2

01 03 0B 00 00 02 C6 2F 获取当前电压

01 05 05 00 FF 00 8c f6 远端控制,禁止前面板控制

01 05 05 00 00 00 cd 06 允许前面板控制

 MODBUS-CRC16

#include <stdio.h>  
#include <stdint.h>  void CalculateCRC(uint8_t *pByte, int nNumberOfBytes, uint16_t *pCheckSum) {  int nBit;  *pCheckSum = 0xFFFF; // 初始化CRC为0xFFFF  for (int nByte = 0; nByte < nNumberOfBytes; nByte++) {  *pCheckSum ^= pByte[nByte]; // 与当前字节异或  for (nBit = 0; nBit < 8; nBit++) {  if ((*pCheckSum & 0x0001) == 1) { // 检查最低位  *pCheckSum = (*pCheckSum >> 1) ^ 0xA001; // 右移一位并与0xA001异或  } else {  *pCheckSum >>= 1; // 右移一位  }  }  }  
}int main() {  uint8_t data[] = {0x01, 0x03, 0x0B, 0x00, 0x00, 0x02};  uint16_t checksum;  int length = sizeof(data);  CalculateCRC(data, length, &checksum);  printf("CRC-16: %04X\n", checksum); // 输出CRC校验码,格式化为4位十六进制数  return 0;  
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/651440.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

20240423给飞凌的OK3588-C开发板适配OV13855【绿屏】查找问题

20240423给飞凌的OK3588-C开发板适配OV13855【绿屏】查找问题 2024/4/23 19:43 修改2个部分&#xff1a; 1、DTS中CAM1由ISP0处理修改为ISP1处理。【感觉修改为ISP1之后就不出错了&#xff0c;难道ISP0有问题&#xff1f;】 2、ov13855.c修改为 荣品的RK3588开发板提供的SDK An…

2024.4.28 机器学习周报

目录 引言 Abstract 文献阅读 1、题目 2、引言 3、创新点 4、总体流程 5、网络结构 5.1、损失函数 5.2、Confidence Maps 5.3、Part Affinity Fields(PAFs) 5.4、多人的PAFs 6、实验 7、结论 深度学习 yolov8实现目标检测和人体姿态估计 Yolov8网络结构 yaml…

第三篇:Python编程基础:掌握核心语法与开发技巧

Python编程基础&#xff1a;掌握核心语法与开发技巧 1 引言 在这个信息化迅速蔓延的世界中&#xff0c;Python语言如同钥匙一般开启了通往各种可能性的大门。无论你是数据科学家、网络工程师、机器学习专家&#xff0c;还是仅仅对自动化办公感兴趣的办公室人员&#xff0c;Pyt…

各省人力资本数据集(2005-2022年)

01、数据简介 人力资本是指凝聚在劳动者身上的知识、技能和健康等要素所构成的一种资本类型。这种资本是通过投资形成的&#xff0c;包括教育、培训、实践经验、保健等方面的投入&#xff0c;以及在劳动力国内流动和移民入境等方面的投资。人力资本是经济增长和发展的重要因素…

系统服务(22年国赛)—— 磁盘管理(压缩去重)

前言&#xff1a;原文在我的博客网站中&#xff0c;持续更新数通、系统方面的知识&#xff0c;欢迎来访&#xff01; 系统服务&#xff08;22年国赛&#xff09;—— 磁盘管理(压缩&&去重)https://myweb.myskillstree.cn/90.html 目录 StorageSrv 安装并创建vdo 将…

input框添加验证(如只允许输入数字)中文输入导致显示问题的解决方案

文章目录 input框添加验证(如只允许输入数字)中文输入导致显示问题的解决方案问题描述解决办法 onCompositionStart与onCompositionEnd input框添加验证(如只允许输入数字)中文输入导致显示问题的解决方案 问题描述 测试环境&#xff1a;react antd input (react的事件与原生…

STM32、GD32等驱动AMG8833热成像传感器源码分享

一、AMG8833介绍 1简介 AMG8833是一种红外热像传感器&#xff0c;也被称为热感传感器。它可以用来检测和测量物体的热辐射&#xff0c;并将其转换为数字图像。AMG8833传感器可以感知的热源范围为-20C到100C&#xff0c;并能提供8x8的像素分辨率。它通过I2C接口与微控制器或单…

[笔试训练](八)

目录 022&#xff1a;求最小公倍数 023&#xff1a;数组中的最长连续子序列 024&#xff1a;字母收集 022&#xff1a;求最小公倍数 求最小公倍数_牛客题霸_牛客网 (nowcoder.com) 题目&#xff1a; 题解&#xff1a; 求最小公倍数公式&#xff1a;lcm(a,b)a*b/gcd(a,b)&am…

ssrf漏洞基础

ssrf &#xff08; server-side request forgery &#xff09; 服务端请求伪造 , 由服务器发起请求&#xff0c;服务器提供了向其他服务器索取数据的功能&#xff0c;索取数据的服务器未 对索取主机、索取资源进行限制&#xff1b; 输入 url 访问站点 xxx.com------------ 》…

软件过程与项目管理期末复习

文章目录 1. 课程导论1) 什么是项目&#xff1f;具有什么特征&#xff1f;2) 项目管理的4阶段5过程的具体内容是什么&#xff1f;3) 项目管理的10大知识域是哪些&#xff1f;其中4个是核心知识域&#xff1f;4个核心知识域之间是什么关系&#xff1f;4) 什么是质量管理三角形&a…

【AMBA Bus ACE 总线 6 -- ACE cache maintenance 详细介绍】

文章目录 ACE cache maintenance什么叫 cache maintenance operations呢?ACE cache line statesACE cache maintenance 什么叫 cache maintenance operations呢? 比如ARM CPU 对自己的Icache 和 Dcache会有大量的transaction操作,也即maintenance操作,如果cache 是dirty 话…

U盘格式转换GPT格式转回DOS

当前格式 fdisk /dev/sdb# 在 fdisk 提示符下&#xff0c;输入以下命令删除分区&#xff1a; d # 选择要删除的分区编号&#xff08;如 1、2 等&#xff09; w开始转换 [rootnode-24 ~]# fdisk /dev/sdbWelcome to fdisk (util-linux 2.37.4). Changes will remain in memory o…