小编Eta*_*tan的帖子

如何在C++中使用PI常量

我想在一些C++程序中使用PI常量和三角函数.我得到了三角函数include <math.h>.但是,此头文件中似乎没有PI的定义.

如何在不手动定义PI的情况下获取PI?

c++ trigonometry

437
推荐指数
16
解决办法
98万
查看次数

Xcode中的iPhone模拟器是否支持蓝牙低功耗?

我在新的Mac mini上尝试了一些iOS测试应用程序,它支持蓝牙低功耗.该CoreBluetooth框架在那些使用.但是,我无法让蓝牙在iPhone模拟器中工作,这是Xcode的一部分.

当我分配一个新的CBCentralManager时,centralManagerDidUpdateState:接收CBCentralManagerStatePoweredOff哪个代表蓝牙当前已关闭.

我第一次运行文本应用程序时,打开了一个看起来非常有问题的框(只使用了语言变量,而不是实际文本)和两个按钮.第一个让我进入设置面板,其中有一个启用蓝牙的选项.然而,在我告诉它启用蓝牙后,它只显示旋转动画,它不会完成或取消.即使在重新启动Mac之后,仍然只有旋转动画.盒子也不再打开了.

从本质上讲,我认为iPhone模拟器应该支持蓝牙低功耗.否则,模拟器上的设置应用程序中有一个选项实际上没有意义.此外,中央管理员状态CBCentralManagerStatePoweredOff但不是CBCentralManagerStateUnsupported代表该平台不支持蓝牙低功耗.这也希望可以存在支持.

  • iPhone模拟器是否支持蓝牙低功耗?
  • 如果是,我该如何启用它?

ios ios-simulator ios5 core-bluetooth

47
推荐指数
4
解决办法
5万
查看次数

从注入的DLL中挂接DirectX EndScene

我想绕过EndScene任意DirectX 9应用程序来创建一个小的叠加层.例如,您可以采用FRAPS的帧计数器覆盖,激活后会在游戏中显示.

我知道以下方法:

  1. 创建一个新的d3d9.dll,然后将其复制到游戏路径.由于首先搜索当前文件夹,然后转到system32等,我的修改后的DLL会被加载,执行我的附加代码.

    缺点:你必须在开始游戏之前把它放在那里.

    • 与第一种方法相同,但直接替换system32中的DLL.

    缺点:您无法添加游戏特定代码.您不能排除不希望加载DLL的应用程序.

    • 使用IDA Pro 4.9 Free等工具直接从DLL获取EndScene偏移量.由于DLL按原样加载,您可以将此偏移量添加到DLL起始地址,当它映射到游戏时,获取实际偏移量,然后将其挂钩.

    缺点:每个系统的偏移量都不相同.

    • 挂钩Direct3DCreate9以获取D3D9,然后挂钩D3D9-> CreateDevice以获取设备指针,然后通过虚拟表挂钩Device-> EndScene.

    缺点:当进程已经运行时,无法注入DLL.您必须使用CREATE_SUSPENDED标志启动进程以挂接初始Direct3DCreate9.

    • 一旦注入DLL,就在新窗口中创建新设备.然后,EndScene从该设备获取偏移量并将其挂钩,从而导致游戏使用的设备挂钩.

    缺点:从我读过的一些信息来看,创建第二个设备可能会干扰现有设备,并且可能会出现窗口与全屏模式等错误.

    • 与第三种方法相同.但是,您将进行模式扫描EndScene.

    缺点:看起来不那么可靠.

如何挂钩EndScene注入的DLL,可以在游戏运行时加载,而不必在其他系统上处理不同的d3d9.dll,并使用可靠的方法?例如,FRAPS如何执行它的DirectX挂钩?DLL不应该适用于所有游戏,只适用于我通过注入它的特定进程CreateRemoteThread.

c++ directx hook dll-injection

31
推荐指数
3
解决办法
5万
查看次数

std :: pair <int,int> vs struct with two int's

在ACM示例中,我必须构建一个用于动态编程的大表.我不得不在每个单元格中存储两个整数,所以我决定去找一个std::pair<int, int>.但是,分配大量的数组需要1.5秒:

std::pair<int, int> table[1001][1001];
Run Code Online (Sandbox Code Playgroud)

之后,我将此代码更改为

struct Cell {
    int first;
    int second;
}

Cell table[1001][1001];
Run Code Online (Sandbox Code Playgroud)

并且分配花了0秒.

是什么解释了这个巨大的时间差异?

c++ performance std-pair

29
推荐指数
2
解决办法
1万
查看次数

使用Google V8从C++代码中抛出JavaScript异常

我正在编写一个JavaScript应用程序,它通过Google的V8访问一些C++代码.

一切正常,但我无法弄清楚如何抛出JavaScript异常,这可以从C++方法的JavaScript代码中获取.

例如,如果我有像C++这样的函数

...
using namespace std;
using namespace v8;
...
static Handle<Value> jsHello(const Arguments& args) {
    String::Utf8Value input(args[0]);
    if (input == "Hello") {
        string result = "world";
        return String::New(result.c_str());
    } else {
        // throw exception
    }
}
...
    global->Set(String::New("hello"), FunctionTemplate::New(jsHello));
    Persistent<Context> context = Context::New(NULL, global);
...
Run Code Online (Sandbox Code Playgroud)

暴露在JavaScript中,我想在JavaScript代码中使用它

try {
    hello("throw me some exception!");
} catch (e) {
    // catched it!
}
Run Code Online (Sandbox Code Playgroud)

从C++代码中抛出V8异常的正确方法是什么?

javascript c++ v8

26
推荐指数
2
解决办法
6808
查看次数

蓝牙低功耗 - 重复更新特征值

关于电气工程Stackexchange的后续问题

我想在很短的时间内反复写入蓝牙低功耗特性的值(作为一个可能的用例,想象一下鼠标).

  • 128位UUID的特性是20字节长.因此,它可以在单个低能量交易中编写.
  • 写入以50Hz的速率发生,等于每20ms写入一次.
  • 因此,写入20*50*8 = 8 kbit/s.
  • 我使用Command/Write without response模式来编写特性.因此,属性层上不会发生确认.
  • 没有连接其他蓝牙或蓝牙低功耗设备.没有通过WLAN执行任何操作.在测试期间不会读取或写入任何其他特征.

我通过从iPhone 4S发送包含序列号的数据包来测试程序.在每个发送的数据包之后,序列号加1.

在接收端,使用包含CSR1000 BLE芯片的可编程开发板接收数据包并将接收到的序列号打印到串行连接.

我的问题如下:

  • 一段时间后,数据包开始掉线.前100个数据包在50 Hz时工作正常.从那时起,数据包开始被丢弃.

               0x00 - 0x46   received
                0x47, 0x48   missing
    0x49, 0x4a, 0x4b, 0x4c   received
                      0x4d   missing
    0x4e, 0x4f, 0x50, 0x51   received
                      0x52   missing
    0x53, 0x54, 0x55, 0x56   received
                      0x57   missing
    ...
    
    Run Code Online (Sandbox Code Playgroud)

    大多数情况下,一包四个数据包被很好地传输(很少,只有2个数据包).然后,丢失了1-7个数据包.

    当我减小特征值大小时,问题仍然存在.

    当我以100Hz而不是50Hz写入时,图像是相同的 - 只有在大约35个数据包之后开始出现丢弃,并且在成功传输四个数据包之间丢弃了5-7个数据包.

    对于丢失的数据包,无论写入的频率如何,所得到的传输速率都约为5 kbit/s.这显然低于~305 kbit/s,这在技术上可能超过蓝牙低功耗.

  • 当我从开发板向iPhone 4S发送数据包时,问题也发生在相反的方向.同样,5 kbit/s是我得到的最大值.通知机制用于此方案.同样,属性层上不会发生确认.

  • 当我尝试同时向两个方向发送时,事情开始爆发,我必须重置开发板和iPhone 4S.

问题:

  • 这可能是开发板上使用的蓝牙低功耗芯片的问题吗?

    如果是的话,为什么问题也会发生在相反的方向,即iPhone作为接收器?

    市场上是否有支持高频特性的开发板?

  • 问题的根源可能是什么? …

performance bluetooth packet ios bluetooth-lowenergy

21
推荐指数
1
解决办法
1万
查看次数

"const T&arg"与"T arg"

以下哪个示例是声明以下功能的更好方法?为什么?

void myFunction (const int &myArgument);
Run Code Online (Sandbox Code Playgroud)

要么

void myFunction (int myArgument);
Run Code Online (Sandbox Code Playgroud)

c++

17
推荐指数
5
解决办法
5950
查看次数

如何为TCHAR数组赋值

TCHAR我的C++代码中有一个数组,我想为它分配静态字符串.

我通过它设置了一个初始字符串

TCHAR myVariable[260] = TEXT("initial value");
Run Code Online (Sandbox Code Playgroud)

这一切都很好.但是,当我将它分成两行时,如同

TCHAR myVariable[260];
myVariable = TEXT("initial value");
Run Code Online (Sandbox Code Playgroud)

它会出错并给出编译器错误:

错误C2440:'=':无法从'const char [14]'转换为'TCHAR [260]'

TEXT()功能不应该完全符合我的要求吗?将给定的字符串转换为TCHARs?将两条线放在一起时,为什么会起作用?为了让它工作,我需要改变什么?

我遇到的其他一些令人困惑的事情:

我搜索了它的互联网和已经看到,也有_T()_TEXT()__T()__TEXT().它们适用于什么?我应该在什么环境中使用哪一个?

c++ tchar

16
推荐指数
1
解决办法
4万
查看次数

获取进程主线程的句柄

我在一些小型测试应用程序中创建了一个额外的线程,并希望从这个额外的线程中挂起主线程.附加线程是通过CreateRemoteThread外部进程创建的.

由于SuspendThread需要一个HANDLE应该挂起的线程,我想知道如何HANDLE从我的附加线程中运行的代码中获取它.

c++ windows multithreading dll-injection

14
推荐指数
3
解决办法
3万
查看次数

什么范围的蓝牙UUID可用于供应商定义的配置文件?

我想使用自定义配置文件构建一个简单的基于蓝牙低功耗的应用程序.采用的配置文件/服务/特性/描述符使用官方网站上显示的16位UUID .

16位UUID是相应128位UUID的快捷方式,并被翻译为

128-bit UUID = 16-bit Attribute UUID * 2^96 + Bluetooth_Base_UUID 
Run Code Online (Sandbox Code Playgroud)

Bluetooth_Base_UUID存在00000000-0000-1000-8000-00805F9B34FB.(来源:蓝牙核心规范第3卷第F部分第3.2.1节)

由于我使用的是自定义配置文件,我想知道我可以使用哪些UUID.

  • 哪些128位UUID可用于描述蓝牙低功耗中的供应商定义属性?

uuid bluetooth bluetooth-lowenergy

14
推荐指数
2
解决办法
3万
查看次数