.ini配置CAN信息
#include <iostream>
#include <windows.h>//这个头文件一定要添加,否则GetPrivateProfileString(...)函数无法使用
#include <stdio.h>
using namespace std;
typedef struct _CAN_OBJ {
UINT ID; //报文帧ID。
UINT TimeStamp; //接收到信息帧时的时间标识, 从CAN控制器初始化开始计时, 单位微秒。
BYTE TimeFlag;//是否使用时间标识, 为1时TimeStamp有效, TimeFlag和TimeStamp只在此帧为接收帧时有意义。
BYTE SendType;//发送帧类型。 =0时为正常发送, =1时为单次发送( 不自动重发) , =2时为自发自收( 用于测试CAN卡是否损坏) \
= 3时为单次自发自收( 只发送一次, 用于自测试).只在此帧为发送帧时有意义。
BYTE RemoteFlag;//是否是远程帧。 =0时为数据帧, =1时为远程帧。
BYTE ExternFlag;//是否是扩展帧。 =0时为标准帧( 11位帧ID) , =1时为扩展帧( 29位帧ID)。
BYTE DataLen;//数据长度DLC(<=8), 即Data的长度。
BYTE Data[8];//CAN报文的数据。 空间受DataLen的约束。
BYTE Reserved[3];//系统保留。
}CAN_OBJ, *P_CAN_OBJ;//CAN_OBJ结构体表示帧的数据结构。
int chartoint(unsigned char chr, unsigned char *cint)
{
unsigned char cTmp;
cTmp = chr - 48;
if (cTmp >= 0 && cTmp <= 9)
{
*cint = cTmp;
return 0;
}
cTmp = chr - 65;
if (cTmp >= 0 && cTmp <= 5)
{
*cint = (cTmp + 10);
return 0;
}
cTmp = chr - 97;
if (cTmp >= 0 && cTmp <= 5)
{
*cint = (cTmp + 10);
return 0;
}
return 1;
}
int strtodata(unsigned char *str, unsigned char *data, int len, int flag)
{
unsigned char cTmp = 0;
int i = 0;
for (int j = 0;j<len;j++)
{
if (chartoint(str[i++], &cTmp))
return 1;
data[j] = cTmp;
if (chartoint(str[i++], &cTmp))
return 1;
data[j] = (data[j] << 4) + cTmp;
if (flag == 1)
i++;
}
return 0;
}
//-----------------------------------------------------
//参数:
//chr:要转换的字符
//cint:储存转换过来的数据
//函数功能:字符转换为数据
//-----------------------------------------------------
void main() {
char Path[100] = "C:\\Users\\liufeng16\\Desktop\\config.ini";
CAN_OBJ Frameinfo;
unsigned char Data[8];
char szData[25];
Frameinfo.ID=GetPrivateProfileInt("gear", "ID", 100, Path);
GetPrivateProfileString("gear", "Data", "ooo", szData, sizeof(szData), Path);
Frameinfo.DataLen = (strlen(szData) + 1) / 3;;
strtodata((unsigned char*)szData, Data, Frameinfo.DataLen, 1);
memcpy(&Frameinfo.Data, Data, Frameinfo.DataLen);
cout <<int( Frameinfo.DataLen )<< endl;
cout << Frameinfo.ID << endl;
printf("%x\n", Frameinfo.Data[0]);
printf("%x\n", Frameinfo.Data[1]);
printf("%x\n", Frameinfo.Data[2]);
printf("%x\n", Frameinfo.Data[3]);
printf("%x\n", Frameinfo.Data[4]);
printf("%x\n", Frameinfo.Data[5]);
printf("%x\n", Frameinfo.Data[6]);
printf("%x\n", Frameinfo.Data[7]);
cout << "------------\n";
system("pause");
}
.ini配置CAN信息的更多相关文章
- golang 读取 ini配置信息
package main //BY: 29295842@qq.com//这个有一定问题 如果配置信息里有中文就不行//[Server] ;MYSQL配置//Server=localhost ...
- php.ini配置中文详解
;;;;;;;;;;; ; 警告 ; ;;;;;;;;;;; ; 此配置文件是对于新安装的PHP的默认设置. ; 默认情况下,PHP使用此配置文件安装 ; 此配置针对开发目的,并且*不是*针对生产环境 ...
- php扩展开发-INI配置
php.ini文件是用来保存各项扩展配置的文件,每个扩展都或多或少需要有一个定制化的配置,ini文件是一个很好的保存配置的方式,我们来看下怎么在自己的扩展里,使用到ini的配置功能 //创建ini的配 ...
- python-通过configparser模块读取后缀为 .ini 的配置文件信息
前言 一般为了方便会将路径,连接信息等写到配置文件(通常会将这些信息写到yaml,ini....配置文件)中,configparser模块读取后缀为 .ini 的配置文件信息 配置文件格式 #存在 c ...
- 【转载】PHP.INI配置:Session配置详细说明教程
网上有很多PHP.INI文件配置的中文说明,但是对于PHP初学者来说在进行PHP运行环境搭建配置时还是容易一头雾水,今天换一种角度来分享如何进行php.ini配置,以求达到解决实际问题的效果,开篇以P ...
- 深入理解php中的ini配置(1)
这篇文章不会详细叙述某个ini配置项的用途,这些在手册上已经讲解的面面俱到.我只是想从某个特定的角度去挖掘php的实现机制,会涉及到一些php内核方面的知识:-) 使用php的同学都知道php.ini ...
- 跟开涛老师学shiro -- INI配置
之前章节我们已经接触过一些INI配置规则了,如果大家使用过如spring之类的IoC/DI容器的话,Shiro提供的INI配置也是非常类似的,即可以理解为是一个IoC/DI容器,但是区别在于它从一个根 ...
- EDIT Ini写Ini配置
EDIT Ini写Ini配置 uses IniFiles; {$R *.dfm} function IniFileName:string; begin Result:=ExtractFil ...
- 混合模式程序集是针对“v1.1.4322”版的执行时生成的,在没有配置其它信息的情况下,无法在 4.0 执行时中载入该程序集。
看到一个kinect大牛编写的一个水果忍者的体感游戏版本号,让我为自己一直以来仅仅用现有的网页游戏来模拟kinect体感游戏控制感到羞愧,没办法.我还是菜鸟.学习一段后自己模仿星际大战这个游戏.自己写 ...
随机推荐
- Python中的文件和目录操作实现
Python中的文件和目录操作实现 对于文件和目录的处理,虽然可以通过操作系统命令来完成,但是Python语言为了便于开发人员以编程的方式处理相关工作,提供了许多处理文件和目录的内置函数.重要的是,这 ...
- php扩展开发-面向对象
在zval变量里IS_OBJECT类型使用zend_object_value来保存变量的,我们看一下他的具体结果. typedef struct _zend_object_value { zend_o ...
- 开始体验第一个JAVA程序吧!
一.准备工作(配置环境) 1.安装JAVA开发工具(JDK) a.下载符合自己电脑系统的Java开发软件:http://www.oracle.com/technetwork/java/javase/d ...
- mysql sum 为 0 的解决方法
使用SQL语句SUM函数的时候,默认查询没有值的情况下返回的是null,而实际可能我们要用的是返回0. 解决方法:SELECT SUM(count) FROM test_table 改成: SELEC ...
- Poweroj:来自学长的善意:ZQ的杀龙之旅(状压BFS)
传送门:https://www.oj.swust.edu.cn/problem/show/2794 来自学长的善意:ZQ的杀龙之旅 Time Limit: 15000 MS Memory Limit: ...
- POJ:1703-Find them, Catch them(并查集好题)(种类并查集)
Find them, Catch them Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 49867 Accepted: 153 ...
- 37-生成 JWT Token
接到上篇文章 安装扩展插件nuget package方法安装包 使用 ctrl+shift+p打开命令面板 增加这个包, Microsoft.AspNetCore.Authentication.Jw ...
- 20145202马超GDB调试汇编堆栈过程分析
20145202马超GDB调试汇编堆栈过程分析 esc :w保存,:wq保存并退出 x:删除错误的单个字母 dw:删除整个单词 gcc hello.c -o hello:运行hello.c gcc - ...
- CSS3 Flexbox(伸缩盒/弹性盒模型)可视化指南
在http://css.doyoe.com/(CSS参考手册)中,本文对应其中的伸缩盒 引入 Flexbox布局官方称为CSS Flexible Box Layout Module是一个CSS3新的布 ...
- Spring---资源访问工具类
JDK所提供的访问资源的类并不能很好的满足各种底层资源的访问需求,因此,Spring设计了一个Resource接口,它为应用提供了更强大的访问底层资源的能力 主要方法 boolean exists() ...