小编Emu*_*tor的帖子

使用定时器提高读/写串行端口的速度

我有我的代码,读取和写入MFC编写的串行端口.这些程序运行良好,但由于发生了许多操作(读写),因此速度有点慢.我有一个定时器,可以在串口上进行操作.计时器如下:

Loop_Timer = SetTimer(1,50,0);
Run Code Online (Sandbox Code Playgroud)

串口传输信息如下:

BaudRate = 57600;
ByteSize = 8;
Parity = NOPARITY;
StopBits = ONESTOPBIT;
fAbortOnError = false;
Run Code Online (Sandbox Code Playgroud)

定时器启动时会发生以下写入和读取操作:

Write(command);
Read(returned_message);
returned_message.Trim();
...   
//finds a value from the returned string
...
Run Code Online (Sandbox Code Playgroud)

因此,对于给定的选定选项,此读取和写入操作可能是1,2,3或4次.

对于Ex:选项1要求在给定的计时器中发生上述功能4次.选项2要求上述功能发生2次.(因为它只有两个带有返回值的变量).等......

现在,我试图做的是提高整体操作的速度,使其稳健并快速响应.我试过改变计时器,但它仍然很慢.有关改进的建议吗?

mfc serial-port timer visual-c++

3
推荐指数
1
解决办法
1294
查看次数

计算十六进制数的位数

我正在尝试计算十六进制数中可用的位数。例如:0x00000001应将计数返回为8

谁能建议最有效的方法是什么?我尝试将其转换为 aCString并使用 ' ' 获取长度GetLength(),但这似乎在这里不起作用。

编辑:抱歉,如果我忘记提及,我存储十六进制数字的变量是无符号短整型。

尝试过这个:

unsigned short number;
CString HexValue;
HexValue.Format("%.8x",number);     // number = 0000000000000000, 16 0's
HexValue = "0x" + HexValue;
int length = HexValue.GetLength() - 2; // returns an 8 here
Run Code Online (Sandbox Code Playgroud)

c++ mfc hex visual-c++

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

将常量值传递给函数

我试图将float32_t*const值传递给函数参数,我收到异常错误.我尝试过很多东西但仍然收到错误.我的功能是:

float32_t Distance(float32_t *const argDistance);
Run Code Online (Sandbox Code Playgroud)

其中float32_t是:typedef float float32_t;

我试图像这样访问这个函数:

float32_t* const tempTipDistance = 0;
Run Code Online (Sandbox Code Playgroud)

但它往往会抛出异常:

SEH exception with code 0xc0000005 thrown in the test body.
Run Code Online (Sandbox Code Playgroud)

有关如何将值传递给此函数的任何建议?

c floating-point pointers const parameter-passing

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