电子负载仪的远端控制

前言

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

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

学习交流请发邮件 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.mzph.cn/pingmian/3774.shtml

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

相关文章

今日arXiv最热大模型论文:大模型也来看球,还能判断是否犯规

在足球世界&#xff0c;裁判的哨声可谓“千金难买”&#xff0c;因为它能直接决定俱乐部的钱包是鼓是瘪。但球场变化莫测&#xff0c;非常考验裁判的水平。 2022年卡塔尔世界杯上&#xff0c;半自动越位识别技术&#xff08;SAOT&#xff09;闪亮登场&#xff0c;通过12台摄像…

APP推广防作弊策略

背景 为保障下载、使用数量&#xff0c;APP厂商通常会投巨资给第三方渠道&#xff0c;用以推广宣传吸纳更多用户。在这一过程中&#xff0c;见有利可图的内鬼、羊毛党、刷量中介等则会趁势而入&#xff0c;成为刷量推广数据造假的中坚。据一本财经报道称&#xff0c;过千万流量…

企业微信私有化部署对接oauth2.0

1.添加依赖&#xff1a;JustAuth <dependency><groupId>me.zhyd.oauth</groupId><artifactId>JustAuth</artifactId><version>1.16.6</version> </dependency> 2.添加 ElephantAuthSource.java package com.elephant.devop…

玩转nginx的配置文件3

1. limit_req_zone配置限流 limit_req_zone $binary_remote_addr zonemylimit:10m rate10r/s;upstream myweb {server 10.0.105.196:80 weight1 max_fails1 fail_timeout1;}server {listen 80;server_name localhost;location /login {limit_req zonemylimit;proxy_pass http:…

总结反思 持续进步-开源即时通讯(IM)项目OpenIM 新版本release-v3.7发布

背景 过去&#xff0c;我们团队对开源项目的认知较浅&#xff0c;过分追求进度&#xff0c;而忽视了代码的质量和规范。这导致了一些问题&#xff0c;例如部署流程设计不当&#xff1a;流程复杂、不规范&#xff0c;以及Mac与Windows部署的明显缺陷。这些问题不仅给开发者带来了…

第十七章 数据管理和组织变革管理

17.2 变革法则 1&#xff09;组织不变革&#xff0c;人就变。 2&#xff09;人们不会抗拒变革&#xff0c;但抵制被改变。 3&#xff09;事情之所以存在是惯性所致。 4&#xff09;除非有人推动变革&#xff0c;否则很可能止步不前。 5&#xff09;如果不考虑人的因素&#xf…

git撤销更改的门道

1.​git checkout -- 文件 撤销对工作区某文件的修改。 git checkout . 撤销本地所有修改的、没有提交的文件的修改&#xff0c;都返回到原来的状态。 2.​git reset --hard [commit] 将工作区和暂存区的内容强制修改为commit时本地代码库的状态。 3.git reset --mixed [c…

centos上网卡突然找不到了

问题 今天登录centos突然发现ssh连接不上&#xff0c;在虚拟机中输入ifconfig才发现没有找到对应的网卡ens33了 解决 只需要输入两行命令就可以解决 禁用NetworkManager systemctl stop NetworkManagersystemctl disable NetworkManager 然后重启网络systemctl start netwo…

Android Studio初学者实例:RecyclerView学习--模仿今日头条

本案例来自于学校的一个简单的课程实验 先看效果图&#xff0c;可以显然的看到&#xff0c;一些item是不同的布局&#xff0c;而其他布局就是简单的布局嵌套 看一下xml代码&#xff1a; <?xml version"1.0" encoding"utf-8"?> <LinearLayout …

抽象的代理模式1.0版本

前言&#xff1a; 在阅读Spring Security官方文档时&#xff0c;里面设计到了一种设计模式——代理模式Proxy 众里寻她千百度&#xff0c;蓦然回首&#xff0c;那人却在灯火阑珊处 开始 在之前的文章里陈述了一个观点——编程语言和语言没有区别 现看看我们日常生活中的代理…

力扣爆刷第128天之动态规划五连刷(一个零、零钱兑换、组合)

力扣爆刷第128天之动态规划五连刷&#xff08;一个零、零钱兑换、组合&#xff09; 文章目录 力扣爆刷第128天之动态规划五连刷&#xff08;一个零、零钱兑换、组合&#xff09;终结背包问题&#xff1a;这篇文章和上一篇。动态规划解题步骤&#xff1a;背包问题总结一、474. 一…

垃圾分类子项目三 - 添加oled显示

本文继承自: 垃圾分类子项目2 - 加入舵机控制-CSDN博客 添加 oled 功能: 我们要使用oled&#xff0c;就需要添加 i2c 功能 需要在这个文件中 /boot/orangepiEnv.txt 添加这行&#xff0c;使用 i2c 协议overlaysuart5 i2c3 myoled.c #include <errno.h> #include…

第十五届蓝桥杯C/C++B组题解

第十五届蓝桥杯大赛软件类省赛C/C大学B组 赛题链接A握手问题B小球反弹C好数DR格式E宝石组合F数字接龙G爬山H拔河

[笔试训练](七)

目录 019&#xff1a;字符串中找出连续最长的数字串 020&#xff1a;岛屿数量 021&#xff1a;拼三角 019&#xff1a;字符串中找出连续最长的数字串 字符串中找出连续最长的数字串_牛客题霸_牛客网 (nowcoder.com) 题目&#xff1a; 题解&#xff1a; 边遍历边记下遇到的…

ionic 中对Input输入框、searchbar进行solr检索

一、概述 Ionic 是一个用于开发跨平台应用程序的开源工具&#xff0c;可以使用 Angular、React 或 Vue 等前端框架。要在 Ionic 应用程序中实现实时与 Solr 通信&#xff0c;可以使用 HTTP 客户端&#xff08;如 Angular 的 HttpClient 或 Ionic 的 Native HTTP&#xff09;…

鸿蒙入门11-DataPanel组件

数据面板组件 用于将多个数据的占比情况使用 占比图 进行展示 参数 参数形式 &#xff1a; DataPanel( options:{ values: number[], max?: number, type?: DataPanelType } ) 参数名 参数类型 是否必填 默认值 参数描述 values number[] 是 - 数据值列表 最大支持…

Feign功能详解、使用步骤、代码案例

简介&#xff1a;Feign是Netflix开发的声明式&#xff0c;模板化的HTTP客户端&#xff0c;简化了HTTP的远程服务的开发。Feign是在RestTemplate和Ribbon的基础上进一步封装&#xff0c;使用RestTemplate实现Http调用&#xff0c;使用Ribbon实现负载均衡。我们可以看成 Feign R…

IDEA快速入门

目录 1. 概述 2. 安装 3. 激活 4. 关闭自动更新 5. 创建Java项目 5.1 配置JRE 5.2 创建项目 6. 配置设置 6.1 主题 6.2 设置字体默认大小 6.3 鼠标滚轮改变字体大小 6.4 设置自动导入 6.5 项目选择 7. lombok插件 7.1 安装插件 7.2 启用注解 8. 安装包及插件…

linux-进程(2)

1.通过系统调用获取进程标示符 进程id&#xff08;PID&#xff09; 父进程id&#xff08;PPID&#xff09; 每一个可执行程序运行起来之后都会成为一个进程&#xff0c;每个进程都有一个自己的id&#xff0c;以及一个父进程id&#xff0c;父进程就是创建自己进程的进程&#xf…

一条龙-T检验+绘制boxplot

1.输入文件&#xff1a; 2.代码 #title:boxplot-5utr-cds-3tr-ATCG的百分比分布和T检验_封装函数版 rm(listls(allTRUE)) setwd("E:/R/Rscripts/5UTR_ABD_TE") library(tidyverse) library(ggplot2) # library(RColorBrewer) library(patchwork) library(dplyr) l…