小编Ben*_*sen的帖子

增强侵入式指针

我对Boost的侵入式指针有些困惑。定义说:

“每个新intrusive_ptr实例都通过对函数使用不合格的调用来增加引用计数intrusive_ptr_add_ref,将指针作为参数传递给它。同样,当intrusive_ptr销毁an时 ,它会调用intrusive_ptr_release;该函数负责在引用计数降至零时销毁对象。希望用户为这两个功能提供合适的定义。”

这是否意味着我必须实现这些方法,或者我可以做到?关键是,我们正在使用它,因为函数需要一个侵入式指针。我们在其他地方使用了共享指针,因此只担心该指针是否受管理,并且在没有更多引用时将被删除。

c++ boost pointers shared-ptr boost-intrusive

7
推荐指数
1
解决办法
2532
查看次数

串口通讯初始化

当时我们正在尝试为串行通信创建一个接口,以便能够与微处理器进行通信。

实际上 - 一切正常。几乎!为了能够与我们的控制器通信,我们需要与它同步。为此,我们编写一个字符串:"?0{SY}13!",然后控制器应回复"!0{SY}F5?"以接受同步请求。为此,我们使用一个writeData函数(有效 - 我们知道使用echo),然后我们使用 areadData来阅读答案。问题是,由于某种原因,它不会读取任何内容。虽然它返回1成功,但它读取的字符是恒定的" "(没有)。

现在是奇怪的部分 - 如果我们使用外部终端程序来初始化端口(如 putty),然后关闭程序,那么一切正常。它接受同步请求、回答(我们可以阅读它),然后我们可以做我们想做的一切。但是除非我们使用外部程序来初始化端口,否则它不起作用。

初始化接口的构造函数如下所示:

SerialIF::SerialIF(int baud, int byteSize, int stopBits, char* parity, int debug)
{
    string coutport = getPort();    
    wstring wideport;               
    debug_ = debug;                 //Debuglevel

    sync = false;                   //sync starts with false

    error = false;                  //Error false as beginnging

    //this is just for converting to the right type
    for (int i = 0; i < coutport.length(); i++) …
Run Code Online (Sandbox Code Playgroud)

c++ windows winapi serial-communication readfile

5
推荐指数
1
解决办法
2642
查看次数

存储时间戳以纳秒为单位c ++

我的目标是将时间戳存储在纳秒范围内.假设我有两台机器需要在任务完成的时间进行通信.

让我们只是为了问题,说他们是同步时钟.
机器A在完成后存储当地时间.机器B发送到A,此时它完成.机器A然后计算差异.

我的问题是,时差实际上可以达到60秒,但也可以降到.25ms.所以我需要以这样的方式存储时间,我可以处理两者,并计算时差.

由于纳秒时代以来的时间是如此之大,我认为我不能将其存储在我所知道的任何变量中.

你会如何解决这种情况?我当前的情况是,我可能(某种程度上)可以缩短从ns开始的时间到代表1分钟的时间,但我不知道该怎么做.

希望你能帮忙.

最好的祝福

c++ time c++11 c++-chrono

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