DDK中使用float类型数据和atof函数

lyingbo 2011-05-26 06:28:14
在驱动的代码里面
1:怎么使用float,double类型数据参与运算
2:怎么使用atof函数
...全文
337 9 打赏 收藏 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
lyingbo 2011-12-30
  • 打赏
  • 举报
回复
二:代码的检视以及配合联调
检视记录
联调的过程中走了几张问题单
1. DTS2011121904879 【自验单/优化单】概率查询OLT接收ONT光模块结果总是初始化值-50dB
之前的支持1db精度光模块特性开发的时候引入的问题
2. DTS2011122003143 【自验优化单】CTC3.0流分类OLT下发的OAM消息不正确
输入参数解析偏移不正确导致
3. DTS2011122104240 【自验优化单】CTC3.0流分类查询显示消息不正确
开发的时候只修改了设置流分类特性对CTC3.0的支持,没有提供查询的支持
4. DTS2011122003143 【自验提单】【H802EPBD+SCUN】互通测试环境上,添加不同型号不同版本的ont上线后,0号pon口有大量ont无法上线
对接以前的ont版本上不来,FW问题。
5. DTS2011120500623 【自验/优化单】华为私有OAM消息优化时,非华为ONT异步消息返回时需要释放节点,否则节点需要在超时后才能释放,影响效率
之前的一个特性开发时引入的
联调的过程中积累了一些常用的定位问题的命令

总结
短期目标:能独立开发特性,独立定位问题。
不足之处:
刚开始开发的过程中,对代码结构、OAM消息的交互原理、异步消息的机制不怎么了解,导致开发效率比较低,对编写的代码不能完全理解,检视的时候问题比较多,需要在后续的工作中改进。
需要深入了解EPON的知识,学习定位问题的方法,逐步积累,丰富经验。

致谢:
需要感谢导师:殷学智跟余红明的耐心指导,还有陈钟等其他兄弟的帮助。
lyingbo 2011-12-30
  • 打赏
  • 举报
回复
本月工作主要分为两部分:前期是CTC3.0的开发,后期是配合线路联调。
一:开发部分主要有四个OAM消息:
1、 设置、查询ONU的MAC地址老化时间
2、 设置、查询onu上环路端口控制状态
3、 查询ont的Capabilities-3
4、 设置、查询Classification&Marking特性
外加TK刷新FW,几个OAM需要修改:
5、 363对应的Get ONU Information消息
6、 235对应的Get CTC ONU Serial Number消息
lyingbo 2011-06-25
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 jiangnandexue 的回复:]
引用 3 楼 q342210738 的回复:

引用 2 楼 huntercao 的回复:
驱动里面可以用KeSaveFloatingPointState/KeRestoreFloatingPointState将浮点运算代码包起来。

http://msdn.microsoft.com/en-us/library/ff553243(v=VS.85).aspx

至于atof,可能要你……
[/Quote]

我自己定义了一种结构
typedef struct customfloat
{
LONG num;
LONG pos;
}CustomFloat;

我用这个结构来表示的我的float类型数据,因为我对精度要求不高
num表示整形数值,pos表示小数点位置
NLP_MT 2011-06-24
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 q342210738 的回复:]

引用 2 楼 huntercao 的回复:
驱动里面可以用KeSaveFloatingPointState/KeRestoreFloatingPointState将浮点运算代码包起来。

http://msdn.microsoft.com/en-us/library/ff553243(v=VS.85).aspx

至于atof,可能要你自己去实现了一个内核可以运行的版本。或者,你直接将……
[/Quote]
请问你最后是怎么解决的。可否把方法发我邮箱:ganer_7@163.com 谢谢!
lyingbo 2011-06-03
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 huntercao 的回复:]
没有在浮点运算空间里面打印过浮点数值。

可能是DbgPrint的问题。
[/Quote]

谢谢你的解答~~结贴了~~·
曹大夯 2011-05-31
  • 打赏
  • 举报
回复
没有在浮点运算空间里面打印过浮点数值。

可能是DbgPrint的问题。
lyingbo 2011-05-31
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 huntercao 的回复:]
驱动里面可以用KeSaveFloatingPointState/KeRestoreFloatingPointState将浮点运算代码包起来。

http://msdn.microsoft.com/en-us/library/ff553243(v=VS.85).aspx

至于atof,可能要你自己去实现了一个内核可以运行的版本。或者,你直接将函数编译进去看看,系统带的版本能否使用。
[/Quote]

谢谢你的回复~~我也是按这么来做的,可是调试输出的就是不对,麻烦你帮我在看这个代码有没问题:
	KFLOATING_SAVE saveData;
NTSTATUS status;

float ret;

status = KeSaveFloatingPointState(&saveData);
if (NT_SUCCESS(status))
{
DbgPrint("============char2float============\n");

DbgPrint("Exemp1:%8.3lx\n",11.23);
ret = 11.23;
DbgPrint("Exemp2:%8.3lx\n",ret);

KeRestoreFloatingPointState(&saveData);

}

在DriverMonitor里面的输出就是
Exemp1:8f5c28f6
Exemp2:80000000
这个是什么原因呢~~
谢谢你了
曹大夯 2011-05-27
  • 打赏
  • 举报
回复
驱动里面可以用KeSaveFloatingPointState/KeRestoreFloatingPointState将浮点运算代码包起来。

http://msdn.microsoft.com/en-us/library/ff553243(v=VS.85).aspx

至于atof,可能要你自己去实现了一个内核可以运行的版本。或者,你直接将函数编译进去看看,系统带的版本能否使用。
lyingbo 2011-05-27
  • 打赏
  • 举报
回复
知道的告诉我下~~不胜感激了~~
代码下载链接: https://pan.quark.cn/s/a4b39357ea24 用户账户控制(UAC)白名单的配置 Windows7环境 UAC(User Account Control,用户帐户控制)是由微软在Windows Vista版本推出的一项旨在增强系统安全性的创新技术,该技术强制要求用户在执行可能干扰计算机正常运作的操作或进行更改会波及其他用户设置的变动前,必须提供相应的权限或管理员密码进行验证。通过对这些操作启动前进行授权确认,UAC能够有效阻止恶意软件及间谍软件在未获授权的状态下于计算机内进行安装或实施修改。 自从Vista版本问世以来,微软便开始推行这一全新的安全机制,可视为对系统安全防护的显著提升。尽管UAC确实能够在一定程度上对某些非法程序起到防御作用,但与此同时,这一功能也给众多用户带来了诸多不便。 因此,许多用户开始探寻是否存在类似于白名单的功能,以便将那些值得信赖的程序直接赋予运行权限。事实上,这类功能确实存在,不过微软并未将其作为标准配置提供。 网络上关于此问题的绝大多数建议都是建议禁用UAC,这种说法显然缺乏针对性,因为若用户希望禁用此功能,本就不会提出相关疑问。 通过运用微软官方发布的Microsoft Application Compatibility Toolkit 5.6版本,可以将信任的程序纳入系统白名单范畴。 获取Application Compatibility Toolkit 安装程序成功后会出现三个可执行文件 以管理员身份启动Compatibility Administrator 在Custom DataBases部分创建新的数据库,并添加一个Application Fix(在下方空白处点击右键,选择...
下载代码方式:https://pan.quark.cn/s/a4b39357ea24 DELL服务器的操作系统部署流程包含一系列细致的环节,其适用范围涵盖多种操作系统类型,例如Windows Server与Red Hat Linux等。在启动部署之前,必须确认服务器的光驱设备为DVD驱动器,并且需准备对应的系统安装媒介。下面将详细列出完整的部署步骤: 1. **启动准备**:将随服务器提供的Systems Management Tools and Documentation version 6.0光盘置入服务器光驱,随后设定服务器以光驱作为启动设备。此环节旨在确保服务器在启动阶段能够读取安装光盘内容。 2. **语言设定**:服务器启动后,选定简体文作为部署语言,并确认接受许可协议条款。 3. **时区选择**:在部署期间,需设定时区为北京、香港、重庆或乌鲁木齐,依据实际地理位置进行适配选择。 4. **系统类型选择**:随后,需选定计划部署的操作系统,支持的版本包括Server 2003 SP2、Server 2003 SP2 64位版本、Windows 2003 SBS SP2、Server 2008、Windows 2008 SBS/EBS x64版本等,以及多种Red Hat和SUSE Linux版本。 5. **RAID设定**:若服务器出厂时已预设RAID配置,则可选择跳过此步骤。若需重新设定RAID,操作时需格外小心,因为这一过程可能引发硬盘数据遗失。 6. **引导分区规划**:设定引导分区的大小,通常C盘建议预留至少20GB的空间,具体容量需根据系统需求进行调整。 7. **网络设定**:网络设定可在系统部署完成后执行,部署期间建议暂时拔除...

21,620

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧