linux 串口 字符 间隔,嵌入式linux编程过成中模块从串口读数需要特定的字符段并且需要每两位字符数组元素转换成一个16进制数(提取特定字符串+字符串转16进制)...
嵌入式linux编程过成中用到zigbee模块
zigbee从串口读数需要特定的字符段并且需要每两位字符数组元素转换成一个16进制数
(提取特定字符串+字符串转16进制)
#include
#include
#include
#include
int serchzig(char *rdbuf,unsigned char *wtbuf)
{
char *beginbuf = NULL;
char *endbuf = NULL;
char midbuf[100]={0};
char str[4]={0};
//将主函数传入的buffer数组中fe~ff提取到midbuf中
beginbuf = strstr(rdbuf,"fe");
endbuf = strstr(rdbuf,"ff");
if(beginbuf == NULL || endbuf == NULL || beginbuf > endbuf)
{
printf("not found zigbee cmd!\n");
}
else
{
endbuf += strlen("ff");
strncpy(midbuf,beginbuf,endbuf-beginbuf);
}
printf("%s\n",midbuf);
//将midbuf中的字符每两个数组元素(即两个字符)转换为一个16进制数,并存入wtbuf[i]中。
int len = strlen(midbuf);
printf("%d\n",len);
//midbuf[len+1]='\0';
//printf("%d\n",len);
memset(str,0,sizeof(str));
int i = 0;
int j = 0;
for(j=0;j < len;j += 2)
{
strncpy(str,midbuf+j,2);
//memcpy(str,midbuf+j,2);
printf("str = %s\t",str);
wtbuf[i] = strtol(str,NULL,16);
printf("wtbuf[i] = 0x%02x\t i= %d\n",wtbuf[i],i);
memset(str,0,sizeof(str));
i++;
}
return 0;
}
int main()
{
char buffer[100]={"hellow zigbee fe1985ffdf"};//定义一个字符数组,并赋值
unsigned char zigbee[100]={0};//无符号数组/也可定义为char,否则打印可能出现6个f,是printf补码的问题,
//char *beginbuf = NULL;
//char *endbuf = NULL;
//char buff[100] = {0};
serchzig(buffer,zigbee);//调用函数,输出的zigbee数组已经是转换好的数组
printf("%s\n",zigbee);
printf("%x\n",zigbee[0]);
printf("%x\n",zigbee[1]);
printf("%x\n",zigbee[2]);
printf("%x\n",zigbee[3]);
printf("%x\n",zigbee[4]);
return 0;
}
运行结果:vc运行的。arm-linux还结合了串口,程序不能通用就用vc专门编写了一个例子
linux 串口 字符 间隔,嵌入式linux编程过成中模块从串口读数需要特定的字符段并且需要每两位字符数组元素转换成一个16进制数(提取特定字符串+字符串转16进制)...相关推荐
- 嵌入式linux编程过成中模块从串口读数需要特定的字符段并且需要每两位字符数组元素转换成一个16进制数(提取特定字符串+字符串转16进制)
嵌入式linux编程过成中用到zigbee模块 zigbee从串口读数需要特定的字符段并且需要每两位字符数组元素转换成一个16进制数 (提取特定字符串+字符串转16进制) #include<st ...
- 嵌入式linux的发展历程,嵌入式Linux论文(历史发展分类及应用)
嵌入式Linux 一.嵌入式Linux简介 1.1 嵌入式Linux历史 随着社会的发展,信息化技术的成熟和数字化产品的普及,让以计算机技术.芯片技术和软件技术为核心的嵌入式系统再度成为当前研究和应用 ...
- linux内核培训广州,嵌入式Linux驱动开发高级培训班-华清远见嵌入式培训中心
课程目标 本课程以案例教学为主,系统地介绍Linux下有关FrameBuffer.MMC卡.USB设备的驱动程序开发.参加本课程学习的学员,因为具备了Linux设备驱动开发基础,所以本课程针对性较强, ...
- linux 直流电机驱动设计,嵌入式Linux直流电机驱动.PPT
嵌入式Linux直流电机驱动.PPT 嵌入式Linux直流电机驱动实验 开发平台中直流电机驱动的实现 S3C2410芯片自带定时器,所以控制部分省去了三角波产生电路.脉冲调制电路和PWM信号延迟及信号 ...
- 用js正则判断输入的两位字符,第一位是数字16进制的,第二位是I、O、Q、U除外的字母(A到Z)
项目中遇到客户的需求变化,要验证某个数据的正确性,判断输入的两位字符,第一位是数字16进制的,第二位是I.O.Q.U除外的字母(A到Z). 本来对js不熟练,网上参考了一下js正则验证的规则,使用正则 ...
- 嵌入式linux设备驱动程序是,嵌入式Linux设备驱动开发之:按键驱动程序实例-嵌入式系统-与非网...
11.6 按键驱动程序实例 11.6.1 按键工作原理 LED和蜂鸣器是最简单的GPIO的应用,都不需要任何外部输入或控制.按键同样使用GPIO接口,但按键本身需要外部的输入,即在驱动程序中要处理 ...
- 24.shell中list详解,定义list,获取List的总个数,获取list的某个元素值,将list的每个元素转换成以空格分隔的字符串,空格分隔的字符串转换成list,for循环list
文章目录 前言 定义list 获取List的总个数 获取list的某个元素值 将list的每个元素转换成以空格分隔的字符串 空格分隔的字符串转换成list for循环list 总结 友情链接 前言 s ...
- 字符串右移n位,例如 “hello world“ 右移两位 后ldhello wor 要求写一个方法实现此功能,方法的格式是 String moveToRight(String str,int po
字符串右移n位,例如 "hello world" 右移两位 后ldhello wor 要求写一个方法实现此功能,方法的格式是 String moveToRight(String s ...
- UNIX网络编程.卷1,套接字联网API(第3版)(中文版)(Stevens经典著作,两位顶级网络编程专家应邀执笔修订)...
UNIX网络编程.卷1,套接字联网API(第3版)(中文版)(Stevens经典著作,两位顶级网络编程专家应邀执笔修订) 基本信息 原书名: Unix Network Programming, Vol ...
最新文章
- javascript事件模型框架
- 吴恩达机器学习(第三章)——线性代数回顾
- unity 批量导入模型工具_如何将VMD舞蹈导入桌面萌娘MMD
- java 数组遍历_Java中遍历数组使用foreach循环还是for循环?
- 四十年前的 6502 CPU 指令翻译成 JS 代码会是怎样
- Less or Equal(CF-977C)
- php 模板继承原理,模板继承体会
- Objective-C基础3:内存管理续
- matlab gui 表面粗糙度 算法,石墨加工表面粗糙度图像评定办法
- 微网站|h5弹窗|手机网站 html5 弹窗、弹层、提示框、加载条
- scala 资源 copy 自知乎
- iOS中关于文件操作
- louvain算法 matlab,Community_BGLL_Matlab 复杂网络社团发现算法Louvain的 版本,简单实用,欢迎下载 272万源代码下载- www.pudn.com...
- 电脑上怎样安装python,【初学者教程】在电脑上安装Python,写第一个程序
- 矩阵可逆与行列式关系的一个直观推导
- 进程间的通信方式——pipe(管道)
- 方差分析分类及SAS实现代码
- ubuntu无法识别android手机
- 浏览器地址栏无法直接使用Google搜索问题
- 控制Unity物体的旋转
热门文章
- 【英语学习】 - 君若不离不弃,吾当生死相依
- 80486/486/Intel486 架构/流水线及其优化
- css里面的let,js中let和var定义变量的区别
- gdb vscode 不进入断点_VScode配置MASM32运行环境(断点/运行/debug/配合emu8086(非DOSBox))...
- 【总结整理】写给非技术产品经理的技术能力要求----摘自《人人都是产品经理》...
- BZOJ1026: [SCOI2009]windy数(数位dp)
- mycat 从入门到放弃 (转)
- RMI原理一记远程调用
- TRUNCATE DELETE
- [转载] 杜拉拉升职记——43 偷听者