电子负载仪的远端控制

news2024/11/24 19:02:03

前言

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

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

学习交流请发邮件 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.coloradmin.cn/o/1626836.html

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

相关文章

CoReFace:深度人脸识别的样本引导对比正则化

CoReFace: Sample-Guided Contrastive Regularization for Deep Face Recognition 一、摘要 人脸识别对比正则化&#xff08;CoReFace&#xff09;&#xff08;损失函数&#xff09;&#xff0c;将图像级正则化应用于特征表示学习。 具体来说&#xff0c;采用样本引导对比学习…

base64算法

1 介绍 将二进制数据编码为文本字符串的算法 理解&#xff1a;把一个能看懂的明文变成一个看不懂的密文数据统称为加密 2 使用 A 在浏览器控制台使用 加密 window.btoa(加密的数据) 解密 window.atob(MTIzNDQ) B 在VSconde中使用 加密 解密

【算法基础实验】图论-UnionFind连通性检测之quick-union

Union-Find连通性检测之quick-union 理论基础 在图论和计算机科学中&#xff0c;Union-Find 或并查集是一种用于处理一组元素分成的多个不相交集合&#xff08;即连通分量&#xff09;的情况&#xff0c;并能快速回答这组元素中任意两个元素是否在同一集合中的问题。Union-Fi…

基于Springboot的点餐平台

基于SpringbootVue的点餐平台的设计与实现 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringbootMybatis工具&#xff1a;IDEA、Maven、Navicat 系统展示 用户登录 首页展示 菜品信息 菜品资讯 购物车 后台登录 用户管理 菜品分类管理 菜品信息管理 …

怎么把图片转换为二维码?3个步骤轻松制作图片二维码

图片的二维码是怎么做成的呢&#xff1f;现在很多场景下的二维码&#xff0c;用手机扫码可以展现出对应的图片信息。通过这种方式来传递图片对于用户体验与很好的效果&#xff0c;而且也方便制作者通过这种方式来快速完成图片信息的传递&#xff0c;与传统方式相比成本更低&…

【前端】4. CSS综合案例

1. 模拟新闻界面 <!-- 1.模拟实现新闻界面 --><!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>…

茴香豆:搭建你的RAG智能助理-作业三

本次课程由书生浦语社区贡献者【北辰】老师讲解【茴香豆&#xff1a;搭建你的 RAG 智能助理】课程。分别是&#xff1a; RAG 基础介绍茴香豆产品简介使用茴香豆搭建RAG知识库实战 课程视频&#xff1a;https://www.bilibili.com/video/BV1QA4m1F7t4/ 课程文档&#xff1a;ht…

【鸟叔的Linux私房菜】计算机概论

文章目录 电脑CPU架构单位 电脑架构与设备组件CPUCPU和GPU区别 内存显卡硬盘与存储设备主板 软件程序运行操作系统内核的功能 总结 电脑 五个部分&#xff1a;输入单元、输出单元、CPU的运算单元和逻辑控制单元、内存。 主机机箱的设备大多通过主板连接线在一起&#xff0c;主…

STM32、GD32驱动SHT30温湿度传感器源码分享

一、SHT30介绍 1、简介 SHT30是一种数字湿度和温度传感器&#xff0c;由Sensirion公司生产。它是基于物理蒸发原理的湿度传感器&#xff0c;具有高精度和长期稳定性。SHT30采用I2C数字接口&#xff0c;可以直接与微控制器或其他设备连接。该传感器具有低功耗和快速响应的特点…

Unity入门实践小项目

必备知识点 必备知识点——场景切换和游戏退出 必备知识点——鼠标隐藏锁定相关 必备知识点——随机数和Unity自带委托 必备知识点——模型资源的导入 实践项目 需求分析 UML类图 代码和资源导入 开始场景 场景装饰 拖入模型和添加脚本让场景动起来 开始界面 先用自己写的GUI…

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

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

Linux CentOS调用打印机

文章目录 一、lpstat及cups安装二、配置打印机1.启动cups2.配置cups3.配置打印机1.打开浏览器&#xff0c;输入CUPS服务器地址访问web界面&#xff0c;地址一般是&#xff1a;http://localhost:631。这里的"localhost"代表当前机器&#xff0c;如果你的CUPS服务器在别…

【网络安全】安全事件管理处置 — windows应急响应

专栏文章索引&#xff1a;网络安全 有问题可私聊&#xff1a;QQ&#xff1a;3375119339 目录 一、账户排查 二、windows网络排查 三、进程排查 四、windows注册表排查 五、内存分析 总结 一、账户排查 账户排查主要包含以下几个维度 登录服务器的途径弱口令可疑账号 新增…

C语言入门课程学习记录5

C语言入门课程学习记录5 第23课 - C 语言中的常量第24课 - 初探程序中的数组第25课 - 数组特性深入剖析第26课 - 多维数组的概念与示例 本文学习自狄泰软件学院 唐佐林老师的 C语言入门课程&#xff0c;图片全部来源于课程PPT&#xff0c;仅用于个人学习记录 第23课 - C 语言中…

C++解方程组的库

解决多元多次方程组的问题&#xff0c;你可以考虑以下几个C库&#xff1a; Eigen: Eigen库是一个高性能的C模板库&#xff0c;用于线性代数运算。它提供了强大的矩阵运算功能&#xff0c;可以用来解多元一次方程组。对于多次方程组&#xff0c;你可能需要结合Eigen和一些数值优…

关于conda占C盘内存的问题

文章目录 前言一、C盘中.conda文件中的envs二、C盘中.conda文件中的pkgs 前言 最近发现C盘空间越来越少&#xff0c;于是就去清理了一下conda在C盘的存储&#xff0c;不看不知道&#xff0c;一看吓一跳&#xff0c;足足十几G&#xff01;于是去网上搜索了相关的包能不能删除&a…

解决问题:TypeError:unsupported operand type(s) for -: ‘float‘ and ‘decimal.Decimal‘

文章目录 一、现象二、解决方案 一、现象 用Pandas 处理数据的时候&#xff0c;想得到增长率&#xff0c;没想到翻车了&#xff1f; import pandas as pddf pd.read_csv(data.csv)df[增长率] ((df[今年] - df[去年]) / (df[今年]))执行一下语句发现报错 TypeError&#xf…

揭秘快手互动神器:自动评论助力转化!

在这个信息爆炸的时代&#xff0c;每个内容创作者和企业都在寻找提升用户互动和转化的有效途径。无论是短视频、直播还是文章&#xff0c;如何让自己的内容脱颖而出&#xff0c;成为大家关注的焦点呢&#xff1f;今天&#xff0c;我们就要揭秘一款神奇的工具——快手自动评论软…

Python-100-Days: Day01

Day01 Python简介 1.1989年Guido von Rossum在圣诞节之夜开始着手python语言编译器的编写。 2.1991年2月 Python v1 编译器诞生&#xff0c;使用C实现的&#xff0c;此时可以调用C的库函数。 3.1994年1月&#xff0c;Python v1.0 正式版发布。 4.2000年10月16日&#xff0…

JAVA12

JAVA12 1 概述2 语法层次的变化1_swich表达式(预览) 3 API层次的变化1_支持数字压缩格式化2_String新方法3_Files新增mismatch方法 4 关于GC方面的新特性1_Shenandoah GC&#xff1a;低停顿时间的GC&#xff08;预览&#xff09;2_可中断的 G1 Mixed GC3_ 增强G1 5 其他新特性简…