-1.#IND,1.#INF 的判断 C/C++程序运行有时候会出现-1.#IND,1.#INF一般来说是除数为0得出的结果,INF就是infinite,就是无穷大的意思;IND可能表示很小,不确定。 使用类似于pow, exp等等函数时常会产生一个无效数字1.#IND00,在VC下可以通过与一个确定数字比较大小来判断是否产生了无效数字,但这个方法在DEV-CPP下却是行不通的。 其实解决办法很简单,使用 fl
QString与char *之间的转换 QString与char *之间的转换 1.QString转char *先将QString转换为QByteArray,再将QByteArray转换为char *。注意:不能用下面的转换形式char *mm = str.toLatin1().data();。因为这样的话,str.toLatin1()得到的QByteArray类型结果就不能保存,最后转换,mm的值就为空。 2.
QT打印PDF QPrinter printer; QPrintDialog printDialog(&printer); if(printDialog.exec()) { QString qstrPrinterName = printer.printerName(); memset(szBufferDef
VC/MFC得到电脑的默认打印机、设置默认打印机、遍历电脑打印机 http://www.cnblogs.com/zhangdongsheng/archive/2012/08/24/2655090.html 得到电脑的默认打印机、设置默认打印机、遍历电脑打印机GetDefaultPrinter,SetDefaultPrinter,EnumPrinters 得到电脑的默认打印机 TCHAR szBuffer[1024]={0};
QT保留小数点后两位 double/float size = 2.3334524;QString str = QString::number(size, 'f', 2);其中f代表非科学计数法格式,2代表小数点后两位。
启用和禁用控件 启用和禁用控件可以调用CWnd::EnableWindow 函数。BOOLEnableWindow(BOOL bEnable = TRUE);判断控件是否可用可以调用 CWnd::IsWindowEnable函数BOOLIsWindowEnable(); 禁用控件CWnd*pWnd = GetDlgItem(IDC_EDIT1);pWnd->EnableWindow(F
对话框嵌入到对话框 或者:窗口嵌入到窗口,一个窗口嵌入到另一个窗口 http://blog.csdn.net/lanmanck/article/details/38578961、用vc新建一个dialog1工程。属性默认。2、insert一个dialog2,改为child。3、在dialog1中包含dialog2头文件,在一个按钮事件中显示dialog2:Cdialog2 *p = new Cdialog2(this);
STM32 USB数据接收与数据发送程序流程分析 http://www.cnblogs.com/skl374199080/p/3910066.html既然学习了USB,那就必须的搞懂USB设备与USB主机数据是怎么通讯的。这里主要讲设备端,因为我们的代码是做USB设备用的。我们需要必须要定义了USB中断。起始在STM32的中断向量表中给USB两个中断,我们可以在stm32f10x.h中找到这两个中断:USB_HP_CAN1_TX_
No Cortex-M Device found in JTAG chain.的解决 今天烧了个固件,运行正常,再次烧写其他固件的时候,出现了这个问题No Cortex-M Device found in JTAG chain.Please check the JTAG cable and the connected devices.百度找到答案,把JTAG的引脚当作I/O引脚来用,原来的JTAG功能当然会失效以下是解决方法,成功解决了问题1.找到BOOT1和B
ARM程序的执行过程 ARM程序的组成ARM程序(指在ARM系统中正在执行的程序,而非保存在ROM中的bin文件)的组成。一个ARM程序包含3部分:RO段(只读),RW段(可读写)和ZI段(可读写)。RO是程序中的指令和常量;RW是程序中已初始化的变量;ZI是程序中未初始化的变量。ARM映像文件的组成所谓ARM映像文件就是指烧录到ROM中的bin文件,也成为image文件。Image文件包含了R
大端模式与小端模式 简介在几乎所有的机器上,多字节对象都被存储为连续的字节序列。例如在C语言中,一个类型为int的变量a地址为0x100对应地址表达式为&a的值为0x100。且a的四个字节将被存储在存储器的0x100,0x101,0x102,0x103位置。而存储地址内的排序则有两个通用规则,即大端模式和小端模式。所谓“大端模式”,是指数据的高字节存储在高地址中,而数据的低字节存放在低地址中;所谓“小
if(((*(vu32*)(0X20001000+4))&0xFF000000)==0x08000000)分析 if(((*(vu32*)(0X20001000+4))&0xFF000000)==0x08000000)分析(*(vu32*)(0X20001000+4)) == (*(__IO uint32_t*)(0X20001000+4))== (*(volatile unsigned int*)(0X20001000+4))(*(vu32*)(0X20001000+4)) 通过内存寻址访问地
QLineEdit 无法发信号,该如何处理 QLineEdit无法发信号我在别的程序中突然发现,QLineEdit无法发射信号,特意测试一下,代码如下:#ifndef ABC_H#define ABC_H #include #include "ui_abc.h" class abc : public QWidget{ Q_OBJECT
关于STM32 MDK中USE_STDPERIPH_DRIVER问题的解释 初学STM32,在RealView MDK 环境中使用STM32固件库建立工程时,初学者可能会遇到编译不通过的问题。出现如下警告或错误提示: warning: #223-D: function "assert_param" declared implicitly;assert_param(IS_GPIO_ALL_PERIPH(GPIOx)); 这时候我们需要在“Target O
csdn如何转载别人的文章 1、找到要转载的文章,用chrome浏览器打开,右键选择审查元素2、在chrome中下方的框里找到对应的内容,html脚本中找到对应的节点,选中节点,网页上被选中内容会被高亮显示,然后右键菜单选中 Copy as HTML3、进入个人"管理博客"主界面,选择"写新文章“,编辑界面的地方选择工具条上的源代码,将chrome中复制的内容贴进来
8位16位32位数据的拆分与合并程序 拆分 //16位拆成两个8位 u16 data16 = 0x1234; u8 data8_H,data8_L; data8_H = (u8)(data16 >> 8); data8_L = (u8)data16; 32位拆成4个8位 方法一: u32 data32 = 0x12345678; u8 data8_1,da
keil MDK中如何生成*.bin格式的文件 转载:http://blog.csdn.net/zhzht19861011/article/details/5927924在Realview MDK的集成开发环境中,默认情况下可以生成*.axf格式的调试文件和*.hex格式的可执行文件。虽然这两个格式的文件非常有利于ULINK2仿真器的下载和调试,但是ADS的用户更习惯于使用*.bin格式的文件,甚至有些嵌入式软件开发者已经拥有了*.bin格
QT如何捕获全局的键盘事件? QT如何捕获全局的键盘事件?方法一:继承QApplication类,并重载notify()函数Qt是用QApplication::notify()函数来分发事件的。想要在任何事件过滤器查看任何事件之前先得到这些事件,重载这个函数是唯一的办法。通常来说事件过滤器更好用一些, 因为不需要去继承QApplication类。而且可以给QApplication对象安装任意个数的事件过滤器,相
大小写转换 ASCII码表大家都很熟悉了吧,利用码的排列规律,我们可以很容易的实现一些操作,比如判断是否是数字、大小写转换等。这里写大小写转换的函数:char toUpper(const char& ch){ return ch & 0x5F;}char toLower(const char& ch){ return ch | 0x20;}函数原理:
Qt中验证器的使用 // 设置验证器,确保输入的KeyA为6字节数void NFCTest::SetLineEditValidator(){ // KeyA 由6字节数组成 QRegExpValidator *validator = new QRegExpValidator(QRegExp("[0-9a-fA-F][0-9a-fA-F]"),this); QLineEdit *pLineEdit[