#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信息的更多相关文章

  1. golang 读取 ini配置信息

      package main //BY: 29295842@qq.com//这个有一定问题   如果配置信息里有中文就不行//[Server] ;MYSQL配置//Server=localhost   ...

  2. php.ini配置中文详解

    ;;;;;;;;;;; ; 警告 ; ;;;;;;;;;;; ; 此配置文件是对于新安装的PHP的默认设置. ; 默认情况下,PHP使用此配置文件安装 ; 此配置针对开发目的,并且*不是*针对生产环境 ...

  3. php扩展开发-INI配置

    php.ini文件是用来保存各项扩展配置的文件,每个扩展都或多或少需要有一个定制化的配置,ini文件是一个很好的保存配置的方式,我们来看下怎么在自己的扩展里,使用到ini的配置功能 //创建ini的配 ...

  4. python-通过configparser模块读取后缀为 .ini 的配置文件信息

    前言 一般为了方便会将路径,连接信息等写到配置文件(通常会将这些信息写到yaml,ini....配置文件)中,configparser模块读取后缀为 .ini 的配置文件信息 配置文件格式 #存在 c ...

  5. 【转载】PHP.INI配置:Session配置详细说明教程

    网上有很多PHP.INI文件配置的中文说明,但是对于PHP初学者来说在进行PHP运行环境搭建配置时还是容易一头雾水,今天换一种角度来分享如何进行php.ini配置,以求达到解决实际问题的效果,开篇以P ...

  6. 深入理解php中的ini配置(1)

    这篇文章不会详细叙述某个ini配置项的用途,这些在手册上已经讲解的面面俱到.我只是想从某个特定的角度去挖掘php的实现机制,会涉及到一些php内核方面的知识:-) 使用php的同学都知道php.ini ...

  7. 跟开涛老师学shiro -- INI配置

    之前章节我们已经接触过一些INI配置规则了,如果大家使用过如spring之类的IoC/DI容器的话,Shiro提供的INI配置也是非常类似的,即可以理解为是一个IoC/DI容器,但是区别在于它从一个根 ...

  8. EDIT Ini写Ini配置

    EDIT Ini写Ini配置  uses IniFiles; {$R *.dfm}   function IniFileName:string; begin    Result:=ExtractFil ...

  9. 混合模式程序集是针对“v1.1.4322”版的执行时生成的,在没有配置其它信息的情况下,无法在 4.0 执行时中载入该程序集。

    看到一个kinect大牛编写的一个水果忍者的体感游戏版本号,让我为自己一直以来仅仅用现有的网页游戏来模拟kinect体感游戏控制感到羞愧,没办法.我还是菜鸟.学习一段后自己模仿星际大战这个游戏.自己写 ...

随机推荐

  1. IDEA工具配置weblogic

    1.首先打开IDEA,点击Run-Edit Configurations… 2.配置weblogic页面 2.1点击“+”号,选WeblogicServer-local 2.2红框的是新添加的服务,起 ...

  2. Python的循环正确的操作使用方法详解

    要计算1+2+3,我们可以直接写表达式: >>> 1 + 2 + 3 6 要计算1+2+3+...+10,勉强也能写出来. 但是,要计算1+2+3+...+10000,直接写表达式就 ...

  3. 1016-06-首页20-封装工具条-有控件在viewDidLoad的时候距离顶部是0--到了viewWillAppear或viewDidAppear系统就加了64

  4. 笔记-git-基础使用

    笔记-git-基础使用 1.      git相关概念 工作区(Working Directory): 就是在电脑里能看到的目录,init后的当前目录就是一个工作区: 版本库(Repository): ...

  5. Android 网络通用类 NetUtil

    1.整体分析 1.1.源代码如下,可以直接Copy. public class NetUtil { /** * 用户是否连接网络 * * @param context Context */ publi ...

  6. 容器技术Docker

    什么是decker容器 简单理解就是将代码和部署环境一起打包的一个容器

  7. How to send CTRL+BREAK signal to detached command-line process

    1.GenerateConsoleCtrlEvent function Sends a specified signal to a console process group that shares ...

  8. PowerShell脚本授权最佳实践

    [TechTarget中国原创] Windows PowerShell已成为微软在Windows Server上提供的首选管理界面.因为深度整合到Windows Server操作系统,PowerShe ...

  9. 【转】灰色在PPT中的运用

    一.作为背景   灰色作为背景能够有效烘托其他元素,特别是与白/黑色渐变,效果更好.   1.黑灰渐变,科技感十足 2.纯灰:简单清晰 http://www.behance.net/gallery/N ...

  10. hash算法和常见的hash函数 [转]

       Hash,就是把任意长度的输入,通过散列算法,变换成固定长度的输出,该输出就是散列值. 这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能 会散列成相同的输出,而不 ...